二、JSP 核心内置对象
2.1 认识 JSP 内置对象
不需要做任何声明就可以直接使用的对象,称之为内置对象
JSP 中的一些内置对象:out、request、response、session、application
JSP 的内置对象只能在 JSP 小脚本(使用 <%%> 标记)或表达式(使用 <%=%> 标记)中使用
2.1.1 out 内置对象
- out 对象用于向浏览器输出数据
- 它是 JSP 中最常用的一个 JSP 内置对象
- out 内置对象常用的方法是 print() 方法,用于向页面输出内容
- out 内置对象的常用方法
方法名称 | 说明 |
---|---|
void println() | 向客户端打印字符串 |
void flush() | 将缓冲区内容输出到客户端 |
void close() | 关闭输出流 |
void clear() | 清除缓冲区的内容,如果响应已经被提交(已调用过 flush() 方法),则抛出 IOException 异常 |
void clearBuffer() | 清除缓冲区的当前内容,及时响应已被提交,也不会抛出 IOEXception 异常 |
2.1.2 request 内置对象
- 使用 JSP 的 request 内置对象,处理程序的交互请求
- request 对象主要用于封装客户端浏览器请求中的数据
- 在 JSP 中通过调用 request 对象的方法获取请求中的相关数据及浏览器的相关信息
- request 对象常用的方法
方法名称 | 说明aa |
---|---|
String getParameter(String name) | 根据表单组件名称(name)获取页面提交的数据 |
String [] getParameterValues(String name) | 获取一组以相同名称命名的表单组件提交数据 |
void setCharacterEncoding(String charset) | 指定每个请求的编码,在调用 getParameter() 方法之前进行设定 用于解决中文乱码的问题 |
RequestDispatcher getRequestDispatcher(String path) | 返回一个 RequestDispatcher 对象,该对象的 forward() 方法用于 转发请求 |
- 通过 request 对象的 setcharacterEncoding() 方法设置字符集,可以用来解决中午乱码问题
- request 对象获取表单提交的数据
2.1.3 response 内置对象
- JSP 当中,与 request 对象对应的就是 response 对象
- 用于设置相应参数及获取响应流等
- response 对象的常用方法
方法名称 | 说明 |
---|---|
void setCharacterEncoding(String charset) | 设置响应采用的字符编码类型 |
void sendRedirect(String location) | 将请求重新定位到一个新的 URL 上 |
- 重定向
- response 对象的 sendRedirect() 方法可以将重请求重定向一个新的 URI 上
2.1.4 session 内置对象
- session 对象是一个在 Web 应用程序中常用的概念,其作用是在客户端和服务器之间保持一段时间的会话状态。
- session 对象一般被称之为 会话
- request 保持的对象只存在单个请求和响应之间,响应之后就会被释放
- session 对象的生命周期更长,通常在用户登录到系统并与系统交互时创建,并在用户退出或超时时销毁。
- session 对象的常用方法
方法名称 | 说明 |
---|---|
String getId() | 获取 sessionid |
long getCreationTime() | 返回 session 对象被创建的时间,以毫秒为单位 |
void setMaxInactiveInterval(int interval) | 设定 session 的有效非活动时间(死亡时间),以毫秒为单位 |
void invalidate() | 设置 session 对象失效 |
void setAttribute(String key,Object value) | 以 key/value 的形式将对象保存到 session 中 |
Object getAttribute(Stirng key) | 通过 key 获取 session 中保存的对象 |
void removeAttribute(Stirng key) | 从 session 中删除指定的 key 对应的对象 |
-
会话并不是一直有效的,通常会话可能会超时或被手动设置销毁
-
会话超时
-
是指两次请求的时间间隔超过了服务器允许的最大时间间隔
-
session 过期时间可以通过三种方式进行设置
-
- 通过 session 对象的 setMaxInactiveInterval() 方法进行设置
//设置 session 过期时间 session.setMaxInactiveInterval(15*60)
2.通过项目配置文件 web.xml 进行设置,以分钟为单位
<session-config><session-timeout>10</session-timeout> </session-config>
3.通过应用服务器进行设置
// 在 Tomcat 目录/conf/web.xml 中找到 <session-config> 元素 如下<session-config><session-timeout>30</session-timeout> </session-config>
-
以上三种方法更改 session 过期时间的优先级为:
serMaxInactiveInterval()方法
> 项目配置文件 > Tomcat 配置文件
-
2.2 Cookie
2.2.1 Cookie 的概念
- Cookie 是最常用的跟踪用户会话的方式
- 由服务器端生成并发送给客户跟浏览器,浏览器将其保存为某个目录下的文本文件,并在后续请求相关网站时,跟随请求自动发送到 Cookie 数据到服务器中
- 简单来说, Cookie 是将用户的信息存储在浏览器当中,即使你的网址关闭了,信息还是存在
2.2.2 使用 Cookie 存取数据
在 JSP 中使用 Cookie 存取数据的主要步骤
1. 创建 Cookie 对象
- 创建 Cookie 对象语法如下
Cookie newCookie = new Cookie (String name,String Value);
- 参数 那么代表 Cookie 的名称
- 参数 value 代表该名对应的值
2. 将 Cookie 对象写入响应
- 创建 Cookie 对象之后,可以通过 JSP 内置对象 response 的 addCookie() 方法将对象写入响应中
- 示例
response.addCookie (newCookie);
- Cookie 对象的几个常用方法
方法名称 | 说明 |
---|---|
void setMaxAge(int expiry) | 设置 Cookie 的有效期,以秒为单位 |
void setValue(String value) | 在 Cookie 创建后,为 Cookie 赋予新的值 |
String getName() | 获取 Cookie 的名称 |
String getValue() | 获取 Cookie 的值 |
int getMaxAge() | 获取 Cookie 的有效期,以秒为单位 |
3. 从请求中读取 Cookie 数据
- Cookie 发送到客户端保存后,会自动随请求提交到相关网站上
- 读取时需要调用 JSP 中 reques 对应的 getCookies() 方法,该方法将返回 HTTP 请求中的 Cookie 对象数组
- Cookie 是通过 name/value 方式进行保存的,因而在遍历数组时,需要通过调用 Cookie 对象的 getName() 方法对每个数组成员的名称进行检查,直至找到需要的 Cookie,然后调用 Cookie 对象的 getValue() 方法取得对应的值