JSP数据交互
- 一、JSP内置对象
- 二、内置对象
- 2.1 out
- 常用方法
- 2.2 request
- 常用方法
- 2.3 response
- 常用方法
- 2.4 转发与重定向
- 2.4.1 转发
- 2.4.2 重定向
- 2.5 session
- 常用方法
- session 会话的失效
- 2.6 include 指令
一、JSP内置对象
JSP 内置对象就是在编写 JSP 页面时不需做任何声明就可以直接使用的对象。
代码 out.print(); 可以实现页面的输出显示,但是在代码中并没有任何地方声明和创建这个 out 对象,没有创建就可以直接使用的原因是 out 对象是 JSP 内置对象之一;
常用的 JSP 内置对象: out、request、response、session、application 等;
二、内置对象
2.1 out
out 内置对象是在JSP开发过程中使用最为频繁的对象,同时使用起来也是最简单的。
常用方法
out对象用于向浏览器输出数据,常用的方法是 print();
2.2 request
request 对象是最常用的 JSP 内置对象之一,其中包含了有关浏览器请求的相关数据及浏览器的相关信息。
常用方法
方法名称 | 说明 |
String getParameter(String name) | 根据页面表单组件名称获取页面提交数据 |
String [] getParameterValues(String name) | 获取一组以相同名称命名的表单组件提交的数据 |
void setCharacterEncoding(String charset) | 指定每个请求的编码,在调用 request.getParameter()方法之前进行设定,可以用于解决中文乱码问题 |
RequestDispatcher getRequestDispatcher(String path) | 返回一个 javax.servlet.RequestDispatcher 对象,该对象的 forward() 方法用于转发请求 |
2.3 response
JSP 包含多个内置的对象,各自有不同的功能。与 request 对象相对应的是response 对象,response 对象可用于设置响应参数及取得响应流等。
常用方法
方法名称 | 说明 |
void addCookie(Cookie cookie) | 向客户端添加 Cookie |
void setContentType(String type) | 设置 HTTP 响应的 contentType 类型 |
void setCharacterEncoding(String charset) | 设置响应所采用的字符编码类型 |
void sendRedirect(String location) | 将请求重新定位到一个新的 URL 上 |
最常用的方法是:sendRedirect(String location),这个方法用于将请求重定向到一个新的 URL 上。
2.4 转发与重定向
2.4.1 转发
从程序运行的角度理解,即当客户端发送一个请求到服务器后,Web 服务器在容器内部完成请求跳转,然后将最终的结果发送给浏览器,整个过程都是在容器内部完成的。而对应到客户端,无论服务器内部如何处理,作为浏览器都只是提交了一个请求,因而客户端的 URL 地址不会发生改变。
转发的实现很简单,使用 request 的 getRequestDispatcher()方法得到 RequestDispatcher 对象,此对象用于封装一个由路劲所标识的服务器资源,然后用forward()方法,将请求传递给服务器上另外的 JSP 页面或者 HTML 文件。
转发可以在多个页面交互过程中实现请求数据的共享。
2.4.2 重定向
使用 response 对象的 sendRedirect()方法。那么该方法执行的结果是客户端重新向服务器请求一个地址链接,由于是发送新的请求,因而上次请求中的数据将随之丢失,这称为重定向。由于服务器重新定向了 URL ,因而在客户端浏览器中显示的是 URL 地址,所以重定向可以理解为浏览器至少提交了两次请求。
如果需要在重定向的情况下将简单数据(值类型、字符串)传递至目标页面,可以使用查询字符串(Query String)实现。
例: response.sendRedirect(“重定向页面名称.jsp?变量名=”+变量值);
2.5 session
session 一词的原意是指 有始有终的一系列动作,,在实际应用中通常翻译成会话。例如,打电话时甲方拿起电话拨通乙方电话这一系列的过程就可以称为一个会话,电话挂断时会话结束。
就 Web 开发来说一个会话就是在一段时间内一个用户与 Web 服务器的一连串相关的交互过程,它可以包含浏览器与服务器之间的多次请求、响应过程。在一次会话中,用户可能会多次请求访问一个网页,,也有可能请求访问同一个服务器的其他资源。
会话机制是 一种服务器端的机制,当用户向服务器发出第一次请求时,服务器会为该用户创建唯一的会话,会话将一直延续到用户访问结束。
当服务器接收到客户端的请求时,服务器首先会判断是否已经创建了与该客户端对应的会话。如果已经创建,就将该请求与此会话相关联。如果没有创建,则创建一个新会话,此客户端之后发送的请求将关联到该会话。
而服务器判断是否创建了相关回复,是通过一个唯一的标识 sessionid 来实现的。如果在客户端请求中包含一个 sessionid 则说明在此前已经为客户端创建了会话,服务器就会根据这个 sessionid 将对应的会话对象读取出来,否则就会创建一个新的会话对象并生成一个 sessionid ,并将 sessionid 在本次响应的过程返回客户端保存。
session 对象允许用户访问会话的相关信息,以及绑定数据到会话(在服务器端使用类似于哈希表的结构来保存信息)。绑定到会话的数据可以在多次请求之间持续有效。
常用方法
方法名称 | 说明 |
String getId() | 获取 sessionid |
void setMaxinactiveinterval() | 设定 session 的非活动时间 |
int getMaxInactiveInterval() | 获取 session 的有效非活动时间,以秒为单位 |
void invalidate() | 设置 session 对象失效 |
void setAttribute(String key,Object value) | 以 key/value 的形式将对象保存到 session 中 |
Object getAttribute(String key) | 通过 key 获取 session 中保存的对象 |
void removeAttribute(String key) | 从 session 中删除指定 key 对应的对象 |
session 会话的失效
会话也是有时效的使会话失效的方式有两种:
一种是会话超时,
另一种是手动调用方法设置失效。
会话超时是指,两次请求的时间间隔超过了服务器允许的最大时间间隔。会话的超时间隔可以通过三种方法设置:
- 通过 session 对象的 setMaxInactiveInterval()方法设置:
//参数 600 的单位是秒,表示在10分钟后session对象失效
session.setMaxInactiveInterval(600);
- 在项目的 web.xml 中设置:
<!-- 其单位是分钟。设置为0 或 负数,表示永不超时。 -->
<session-config>
<session-timeout>10</session-timeout>
</session-config>
- 在应用服务器中设置,在 Tomcat 目录 /conf/web.xml 中找到 元素,其中元素中的 30 就是默认的时间,单位是分钟,可以修改其值。
手打调用方法设置失效是通过调用 session 对象的 invalidate()方法实现的,主要应用于用户注销
如果只想清空会话中绑定的某个数据对象,则可以调用 session.removeAttribute(String key)方法,将指定的对象从会话中删除,而会话仍然有效。
2.6 include 指令
在 session 对象中可以实现访问权限。但是权限的控制不够,因还有二级页面同样需要进行权限控制。
JSP提供了文件引用指令 include。我们可以将一些可以将一些可以重用的内容写入一个单独的文件中,然后通过 include 指令引用该文件,从而缓解代码的冗余问题,并且修改是也更加方便。
include既然称作指令,那么其一定满足 JSP 指令的基本语法,以"<%@“开始,以”%>"结束。具体语法结构如下:
<%@ include file="应用文件路径"%>
include 指令表示,在 JSP 编译时插入一个包含文本或代码的文件,这个包含的过程时静态的。包含的文件可以是 JSP 页面、HTML网页、文本文件等。include 指令只有一个 file 属性,表示被包含的文件路径。