全部章节   >>>>


本章目录

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 对象相应的方法就可以获取对应的封装信息

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>

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

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

实例:经过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");// 就业情况
%> //可以将接收的数据展示在界面上

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>

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对象

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>

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”的错误处理页面才能使用

Java Web程序设计笔记 • 【第3章 JSP内置对象】的更多相关文章

  1. JSP学习笔记(3)-JSP内置对象

    有些对象不用声明就可以在JSP页面的Java程序片和表达式部分使用,这些对象就是JSP的内置对象.  JSP常用的内置对象有request,response,session,application,o ...

  2. Java Web程序设计笔记 • 【目录】

    章节 内容 实践练习 Java Web程序设计作业目录(作业笔记) 第1章 Java Web程序设计笔记 • [第1章 Web应用程序] 第2章 Java Web程序设计笔记 • [第2章 JSP基础 ...

  3. JSP(3) - 9个JSP内置对象 - 小易Java笔记

    1.9个JSP内置对象 内置对象引用名称     对应的类型 request HttpServletRequest response HttpServletResponse config Servle ...

  4. Java EE JSP内置对象及表达式语言

    一.JSP内置对象 JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象. JSP提供了9种内置对象: (一).request 简述: JSP编程中 ...

  5. Java遇见HTML——JSP篇之JSP内置对象(上)

    一.JSP内置对象简介 1.1.内置对象简介 JSP内置对象是WEB容器中创建的一组对象,可以直接使用不需要new,如截图中的out 对象. JSP有九大内置对象: 五大常用对象: out.reque ...

  6. JAVA遇见HTML——JSP篇:JSP内置对象(下)

    什么是session session表示客户端与服务器的一次会话 Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间 从上述 ...

  7. JavaWeb学习----JSP内置对象详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. jsp内置对象之response、out、config、exception、pageContext。

    本文是对Jsp内置对象的response.out.config.exception.pageContext知识点的详细总结. response对象 Response内置对象和request内置对象是相 ...

  9. jsp内置对象浅谈

    jsp内置对象浅谈 | 浏览:1184 | 更新:2013-12-11 16:01 JSP内置对象:我们在使用JSP进行页面编程时可以直接使用而不需自己创建的一些Web容器已为用户创建好的JSP内置对 ...

随机推荐

  1. Sharding-JDBC 实现水平分表

    1.搭建环 (1) 技术: SpringBoot2.2.1+ MyBatisPlus + Sharding-JDBC + Druid 连接池(2)创建 SpringBoot 工程

  2. 【leetcode】721. Accounts Merge(账户合并)

    Given a list of accounts where each element accounts[i] is a list of strings, where the first elemen ...

  3. db9串口接头的定义

    这个接头都是以公头为准,所有接头还是以公头去记. RS-232端(DB9公头/针型)引脚定义 2: RXD 3:TXD 5:GND 1/4/6:内部相链接 7/8   :内部相链接 1.RS-232端 ...

  4. Cx_Oracle 安装

    1. 下载安装 2.把oci.ddl  oraociei11.dll 放到C:\Python33\Lib\site-packages路径下

  5. Spring支持5种类型的增强

    Spring支持5种类型的增强:1.前置增强:org.springframework.aop.BeforeAdvice代表前置增强,因为Spring只支持方法级的增强,所以MethodBeforeAd ...

  6. 【Linux】【Basis】文件系统

    FHS:Filesystem Hierarchy Standard Web site: https://wiki.linuxfoundation.org/lsb/fhs http://www.path ...

  7. shell条件测试语句实例-测试apache是否开启

    终于理解了shell条件测试语句"!="和"-n"的用法区别,于是有了如下的shell脚本,做为练习. 第一种方法:测试apache是否开启?字符串测试 #!/ ...

  8. 图书管理系统总结——JAVA Swing控件简介

    断断续续学习JAVA语言,写了一个多月数据库大作业,终于在五一过后写完了.由于第一次使用JAVA和数据库,遇到了许多问题,记录下来,以备以后查看. 我使用的JAVA SE,说实话,在开发后期,觉得JA ...

  9. react18 来了,我 get 到...

    大家好! 本文主要是关于即将发布的 react 18 的新特性.那么 react18 带来了什么呢? 详情可以关注 github React 18 工作组仓库 1. automatic batchin ...

  10. numpy基础教程--clip函数的使用

    在numpy中,clip函数的原型为clip(self, min=None, max=None, out=None),意思是把小于min的数全部置换为min,大于max的数全部置换为max,在[min ...