Java Web程序设计笔记 • 【第3章 JSP内置对象】

全部章节   >>>>


本章目录

3.1 JSP 内置对象简介

3.1.1 JSP 内置对象概述

3.1.2 JSP 表单处理

3.1.2 request对象

3.1.2 开发第一个 JSP 页面

3.1.3 实践练习

3.2 输入和输出对象

3.2.1 out 对象

3.2.2 response对象

3.2.3 实践练习

3.3 作用域通信对象

3.3.1 为什么需要session对象

3.3.1 session对象

3.3.1 session对象方法

3.3.2 application对象

3.3.2 JSP 表达式

3.3.3 pageContext对象

3.3.4 实践练习

3.4  其他内置对象

3.4.1 exception对象

3.4.2 实践练习

总结:


3.1 JSP 内置对象简介

3.1.1 JSP 内置对象概述

类别

对象名称

作用

输入和输出对象

out

用来向客户端浏览器输出信息的数据流

request

客户端发送的请求信息

response

服务器传回客户端的响应信息

作用域通信对象

session

为发送请求的客户端建立会话

application

保存整个应用程序的共享信息

pageContext

保存当前 JSP 页面的共享信息

Servlet对象

page

代表 JSP 网页本身

config

读取初始化参数

异常错误对象

exception

获取运行时的异常

3.1.2 JSP 表单处理

  • 网页中表单是用户填写信息并提交的组件,JSP中如何获取用户填写提交的数据
  • JSP 引擎会将客户端的请求信息封装在这个 request 对象中,调用request 对象相应的方法就可以获取对应的封装信息

Java Web程序设计笔记 • 【第3章 JSP内置对象】

3.1.2 request对象

request对象中封装的主要请求信息有以下几项:

  • 请求的 HTTP 协议的传送文件头信息
  • 提交请求的客户端和服务器端信息
  • 用户提交的表单信息

其中最重要的就是用来封装用户提交的表单信息,通过如下方法可以获取对应数据

返回值

方法名

说明

String

getParameter(“表单元素name”)

根据参数name获取对应值(name即表单元素的name属性)

String[]

getParameterValues(“表单元素name”)

获取多个name相同的多个值,复选框使用较多

request对象在获取数据的时候,中文有时会出现乱码,解决方法如下:

  • 针对post请求中文:String name = request.setCharacterEncoding("utf-8");    //设置获取值的编码
  • 针对get请求中文:String name = new String(request.getParameter("name").getBytes("iso-8859-1"), "utf-8");

3.1.2 开发第一个 JSP 页面

示例:学生毕业后,在线申请登记。第一步需要填写身份证号码,第二步登记个人的信息,确认信息无误后再提交

表单提交到secondPage.jsp处理

<form action="secondPage.jsp">
<table>
<tr>
<td> 身份证号码:</td>
<td><input type="text" name="idNumber"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value=" 开始报道 ">
</td>
</tr>
</table>
</form>

Java Web程序设计笔记 • 【第3章 JSP内置对象】

从请求中获取身份证号码参数数据

secondPage.jsp中可以获取身份证号码参数值
<%
String idNumber = request.getParameter("idNumber");
%>
//显示身份证号码关键代码
<tr>
<td> 身份证号码:</td>
<td><input type=“text” name=“idNumber”
value=“<%=idNumber%>“ disabled="disabled" />
</td>
</tr>

Java Web程序设计笔记 • 【第3章 JSP内置对象】

实例:经过secondPage.jsp再次提交到第三个界面thirdPage.jsp接收

<%
String name = request.getParameter("name");// 姓名
String gender = request.getParameter("gender");// 年龄
String regrationNumber = request.getParameter("registrationNumber");// 报到证编号
String university = request.getParameter("university");// 毕业院校
String major = request.getParameter("major");// 专业
String education = request.getParameter("education");// 学历
String employment = request.getParameter("employment");// 就业情况
%> //可以将接收的数据展示在界面上

Java Web程序设计笔记 • 【第3章 JSP内置对象】

3.1.3 实践练习

3.2 输入和输出对象

3.2.1 out 对象

out 对象主要用于向客户端输出各种数据类型的内容,默认缓冲区8K,可以通过page指令设置

out 对象被封装为 javax.servlet.jsp.JspWriter 类,在实际应用中 out 对象会通过 JSP 容器变换为 java.io.PrintWriter 类,常用方法如下

方法名

作用

void print( 数据)

输出数据到页面

void flush()

强制输出缓冲区里的数据

void close()

关闭输出流

void clearBuffer()

清空缓冲区

void clear()

清除屏幕显示数据

示例:利用out对象输出信息到JSP页面

<%
//模拟性别变量数据
String gender = “male”;
if ("male".equals(gender)) {
out.print(" 男 ");
} else if ("female".equals(gender)) {
out.print(" 女 ");
}
%>

利用out对象还可以输出html代码,比如<br /> 让浏览器解析

3.2.2 response对象

response 对象用于响应客户请求,封装了 JSP 产生的响应,并发送到客户端以响应客户端的请求

response对象常用功能如下:

  • 处理 HTTP 文件头
  • 页面重定向

客户端在进行请求时会发送许多额外的信息,这些就是头信息。服务器端也可以根据需要向客户端设置头信息,如设置每秒刷新一次页面,显示当前时间

示例:利用response对象设置头部刷新属性为1秒,浏览器打开该页面每秒会刷新一次

<%@ page import="java.io.*,java.util.*"%>
<%@ page import="java.text.*"%>
<body>
<div>
<h3>
<%
response.setHeader("refresh", "1");// 每隔 1 秒刷新 1 次
%>
当前时间:<%=new SimpleDateFormat("HH:mm:ss").format(new Date())%>
</h3>
</div>
</body>

Java Web程序设计笔记 • 【第3章 JSP内置对象】

response 对象提供的 sendRedirect() 方法将网页重定向到另一个页面

重定向操作支持将地址重定向到不同的主机上。在客户端浏览器上将会得到跳转的地址,并重新发送请求链接,且地址栏显示新地址

新页面路径及名称:          response.sendRedirect(“path”);

path:用于指定目标路径,可以是相对路径,也可以是不同主机的其他 URL 地址 如果地址写错,则会出现页面找不到错误

示例:在毕业生网上报道系统中,如果用户没有输入身份证号码,则重定向到“填写身份证号码”页面。

<%
String idNumber = request.getParameter("idNumber");//取出请求中传递的身份证号码参数值
// 获取用户输入的身份证号码
// 如果用户没有输入身份证号码,则重定向到 firstPage.jsp
if (idNumber == null || "".equals(idNumber.trim())) {
response.sendRedirect("firstPage.jsp");//如果身份证号码不存在,则转向第一个界面
}
%>

3.2.3 实践练习

3.3 作用域通信对象

3.3.1 为什么需要session对象

Java Web程序设计笔记 • 【第3章 JSP内置对象】

3.3.1 session对象

  • session在JSP中被称为会话,目的是保存不同用户在web程序多个页面之间跳转时的数据信息,直到浏览器关闭,每个客户端会对应同一个session对象
  • 服务器不知道客户端何时关闭浏览器,为了节省内存开销,默认超时时间为30分钟,即30分钟用户没有再次发出请求,则session自动销毁,超时时间可以在Tomcat配置文件中修改

3.3.1 session对象方法

session对象可以存储用户相关的数据信息,且在同会话作用于多个界面有效

session对象存储数据方法

  • session.setAttribute(“字符串名称”,要存入的数据); 向session中存入数据,并且起名
  • 注意:要存入的数据可以是任意类型,名称必须是字符串类型

session对象取出数据方法

  • Object object = session.getAttribute(“存入时的名称”);
  • 注意:取出数据时是Object类型,如需要可以转为需要类型

session对象移除数据方法如下

  • session.removeAttribute(“存入时的名称”);

示例:将数据存入session中,跨越多个界面取出使用

从session中取出身份证号码转为字符串显示:

third.jsp第三个界面
<tr>
<td> 身份证:</td>
<td><span><%=session.getAttribute("idNumber").toString()%></span></td>
</tr>

如果不为空,则将身份证号码存入session

secondPage.jsp中代码:
<%
String idNumber = request.getParameter("idNumber");// 获取用户输入的身份证号码
// 如果用户没有输入身份证号码,则重定向到 firstPage.jsp
if (idNumber == null || "".equals(idNumber.trim())) {
response.sendRedirect("firstPage.jsp");
}
// 将身份证号码保存到 session 作用域中
session.setAttribute("idNumber", idNumber);
response.sendRedirect(“third.jsp");
%>

3.3.2 application对象

application 对象用于保存应用中的公有数据,服务器启动自动创建 application 对象,只要没有关闭服务器,application 对象将一直存在,所有用户可以共享

session对象和用户会话相关,不同用户的session是完全不同的对象,而 application 对象对于所有用户都是同一个的对象,所以application 对象的生命周期更长

application 对象常用于记录缓存项目中的全局数据,常用方法如下

方法名

作用

void setAttribute(String name,Object value)

键、值对形式存入数据到application

Object getAttribute(String name)

根据键名称取出数据

void removeAttribute(String name)

根据键名称移除数据

String getRealPath(String path)

获取当前项目的真实路径

3.3.2 JSP 表达式

示例:利用application对象特性,统计网上申请报到证的人数

<h1>
<%
int counter = 0;// 设置 counter 变量用于保存网页次数
if (application.getAttribute("counter") == null) {
counter = 1;// 如果 counter 在 application 中不存在,表明是第一次运行,赋予1
} else {
counter = Integer.parseInt(application.getAttribute("counter").toString()); //如果 counter 在 application 中存在,则需要取出已存在的数字,
并且累加
counter++;
}
application.setAttribute("counter", counter);//将最新累加后的人数存入application对象
%>
<!-- 输出参与网上报到的人数 -->
你是第 <%=counter%> 位成功登记的同学。
</h1>

Java Web程序设计笔记 • 【第3章 JSP内置对象】Java Web程序设计笔记 • 【第3章 JSP内置对象】

3.3.3 pageContext对象

pageContext页面上下文对象可以获取其他作用域对象,并提供方法用于访问内建对象在页面上定义的所有属性,从而保持同一页面组件之间的数据共享

pageContext常用方法如下:

方法名

作用

ServletConfig getServletConfig()

获取ServletConfig配置对象

void setAttribute(String name,Object value)

以键值对形式存放数据到pageContext中

Object getAttribute(String name)

从pageContext中根据键名称取出数据

void removeAttribute(String name)

从pageContext中移除数据

ServletRequest getRequest()

获取request对象

ServletResponse getResponse()

获取response对象

HttpSession getSession()

获取session对象

示例:pageContext作用域仅在当前页面有效 session作用域在整个会话范围有效,浏览器关闭则会话结束 application作用域最大,整个项目范围都有效,服务关闭才结束

// pageContext中初始化页面计数器
if (pageContext.getAttribute("pageCounter") == null) {
pageContext.setAttribute("pageCounter", new Integer(0));
}
// 获取页面计数器,并让其加 1
Integer pageCounter = (Integer) pageContext.getAttribute("pageCounter");
//取出已存的计数器值增加1,覆盖进去
pageContext.setAttribute("pageCounter", pageCounter.intValue() + 1);
// session中初始化页面计数器
if (session.getAttribute("pageCounter") == null) {
session.setAttribute("pageCounter", new Integer(0));
}
// 获取页面计数器,并让其加 1
Integer pageCounter = (Integer) session.getAttribute("pageCounter");
//取出已存的计数器值增加1,覆盖进去
session.setAttribute("pageCounter", pageCounter.intValue() + 1);
// application中初始化页面计数器
if (application.getAttribute("pageCounter") == null) {
application.setAttribute("pageCounter", new Integer(0));
}
// 获取页面计数器,并让其加 1
Integer pageCounter = (Integer) application.getAttribute("pageCounter");
//取出已存的计数器值增加1,覆盖进去
application.setAttribute("pageCounter", pageCounter.intValue() + 1);

3.3.4 实践练习

3.4  其他内置对象

3.4.1 exception对象

exception对象用来表示 JSP 文件执行时发生的所有错误和异常

JSP页面的page 指令中设置 isErrorPage 属性为 true才可以使用,否则无法编译

exception 对象的常用方法如下

方法名

作用

getMessage( )

返回异常的信息

getLocalizedMessage( )

返回本地化的异常错误

toString( )

返回关于异常错误的简单信息描述

fillInStackTrace( )

重写异常错误的执行轨迹

示例:在JSP 页面中出现没有捕捉到的异常,就会生成 exception 对象,并把对象传送到在 page 指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%> //说明当前error.jsp为出错后处理的页面 <%
out.print(" 异常信息:" + exception.getMessage()); //从exception对象中获取异常信息
%>

3.4.2 实践练习

总结:

  • JSP内置对象是JSP中预先定义好,无需实例化直接使用的一系列对象
  • 输入输出对象包括:out可以向页面输出内容、response可以实现设置请求头部信息以及重定向页面
  • 作用域通信对象范围从小到大包括:pageContext、request、session、application,可以实现Web应用中的数据存储和读取
  • exception对象代表JSP页面发生的异常,从中可以获取异常信息,只能在设置了isErrorPage=“true”的错误处理页面才能使用
上一篇:topcoder SRM 622 DIV2 BoxesDiv2


下一篇:Linux系统编程-setitimer函数