1. JSP内置对象
a.JSP内置对象是 Web 容器创建的一组对象
JSP内置对象的名称是JSP 的保留字,JSP内置对象是可以直接在JSP页面使用的对象, 无需使用“new”,直接使用
b.常用的JSP内置对象
out{out.print()--与“System.out.print()”相似}、request、response、session、application
2.JSP内置对象request
a. request对象主要用于处理客户端请求
- 可以在JSP页面中通过调用request对象的方法来获取请求中的相关数据及浏览器的相关信息
- request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。
- request对象的作用域为一次请求。
b. request对象常用方法
方法名称 | 说明 |
String getParameter(String name) | 根据表单组件名称获取提交数据 |
String[ ] getParameterValues(String name) | 获取表单组件对应多个值时的请求数据 |
void setCharacterEncoding(String charset) | 指定每个请求的编码 |
RequestDispatcher getRequestDispatcher(String path) | 返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求 |
request.setAttribute(String s,Object o)
Object requst.getAttribute(String s)
c. 转发
转发的作用 --在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理
转发的实现 --RequestDispatcher对象的forward()方法
转发允许一个JSP/Servlet对请求做初步处理,而由另一个资源生成响应。
<%
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
rd.forward(request, response);
%>
在多个页面交互过程中 请求中的数据可以共享
3.JSP内置对象response
a. response对象用于响应客户请求并向客户端输出信息
- response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。
- response对象也具有作用域,它只在JSP页面内有效。
- response的addCookie()、setContentType()、setCharacterEncoding()方法、sendRedirect()方法
页面重定向 -- void sendRedirect(String location) 客户端将重新发送请求到指定的URL(追溯到根目录的url地址)
- sendRedirect()方法发送一个临时的重定向响应到客户端,由客户端重新请求指定的URL
- 重定向携带简单数据可以通过查询字符串方式实现
b.如何才能实现页面跳转后,请求信息不丢失呢?
--使用转发取代重定向实现页面跳转
c.转发与重定向的区别
转发 | 重定向 |
转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递 | 重定向是在客户端发挥作用,通过发送一个新的请求实现页面转向 |
客户端浏览器的地址栏不会显示转向后的地址 | 在地址栏中可以显示转向后的地址 |
4.JSP内置对象session
session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
a.什么是会话
一个会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程
{一个会话就是浏览器与服务器之间的一次通话,包含浏览器与服务器之间的多次请求、响应过程 .并说明 sessionid}
b.session对象常用方法
{session对象用来存储有关用户会话的所有信息}
方法名称 | 说明 |
String getId() | 获取sessionid |
void setMaxInactiveInterval(int interval) | 设定session的非活动时间 |
int getMaxInactiveInterval() | 获取session的有效非活动时间(以秒为单位) |
void invalidate() | 设置session对象失效 |
void setAttribute(String key, Object value) | 以key/value的形式保存对象值 |
Object getAttribute(String key) | 通过key获取对象值 |
void removeAttribute(String key) | 从session中删除指定名称(key)所对应的对象 |
c.session与窗口的关系
- 每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别)
- 通过超链接打开的新窗口,新窗口的session与其父窗口的session相同
d.session对象的失效
手动设置失效:invalidate()
超时失效
通过setMaxInactiveInterval( )方法,单位是秒
<%
session.setAttribute("login","admin");
session.setMaxInactiveInterval(600);
response.sendRedirect("admin.jsp");
%>
通过设置项目的web.xml或Tomcat目录下的/conf/web.xml文件,单位是分钟//不推荐
<session-config>
<session-timeout>10</session-timeout>
</session-config>
5.include指令
- include指令可以降低代码的冗余问题,也便于修改共性内容
创建登录验证文件 loginControl.jsp
<%
String login = (String) session.getAttribute("login");
if (login == null) {
response.sendRedirect("index.jsp");
return;
} %>
在后台首页面中使用include指令引用登录验证文件
<%@ include file="loginControl.jsp" %>
6.JSP内置对象application
a.application实现用户之间的数据共享
- application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。
- 与session对象相比,application对象生命周期更长,类似于系统的“全局变量”
b.application对象的常用方法
方法名称 | 说 明 |
void setAttribute(String key,Object value) | 以key/value的形式保存对象值 |
Object getAttribute(String key) | 通过key获取对象值 |
String getRealPath(String path) | 返回相对路径的真实路径 |
7.JSP常用内置对象小结
内置对象名称 | 说明 |
out | 用于向客户端输出数据 |
request | 主要用于处理客户端请求的数据信息 |
response | 用于响应客户端请求并向客户端输出信息 |
session | 用于记录会话状态的相关信息 |
application | 类似于系统的全局变量,用于实现Web应用中的资源共享 |
8.对象的作用域
a.作用域的分类
[变量存储在不同作用域时,生命周期/访问范围的差异。]
a).page作用域:
- 对应的作用域访问对象为 pageContext对象
- page作用域指本JSP页面的范围 pageContext.setAttribute(键,值)
b).request作用域:
- 对应的作用域访问对象为 request对象
- request作用域内的对象则是与客户端的请求绑定在一起
c).session作用域:
- 对应的作用域访问对象为 session对象
- session作用域:一次会话
d).application作用 :
- 对应的作用域访问对象为 application对象
- application作用域:面对整个Web应用程序
b.对象的作用域
名称 | 说明 |
page作用域 | 在一个页面范围内有效,通过pageContext对象访问 |
request作用域 | 在一个服务器请求范围内有效 |
session作用域 | 在一次会话范围内容有效 |
application作用域 | 在一个应用服务器范围内有效 |
9.cookie的简介
cookie是Web服务器保存在客户端的一系列文本信息
cookie的作用:
- 对特定对象的追踪
- 实现各种个性化服务
- 简化登录
安全性能
- 容易泄露信息
a.cookie对象的常用方法
方法名称 | 说明 |
void setMaxAge(int expiry) | 设置cookie的有效期,以秒为单位 |
void setValue(String value) | 在cookie创建后,对cookie进行赋值 |
String getName() | 获取cookie的名称 |
String getValue() | 获取cookie的值 |
int getMaxAge() | 获取cookie的有效时间,以秒为单位 |
b.cookie与session的对比
session | cookie |
在服务器端保存用户信息 | 在客户端保存用户信息 |
session中保存的是Object类型 | cookie保存的是 String类型 |
随会话的结束而将其存储的数据销毁 | cookie可以长期保存在客户端 |
保存重要的信息 | 保存不重要的用户信息 |