JSP内置对象
理解
1.JavaEE规范中对JSP的内置对象只提供了接口,而具体的实现类由所使用的web服务器提供,当服务器启动时,服务器会自动将这些接口的实现类创建并赋值给对应JSP内置对象变量,在页面中才能使用这些内置对象。
2.JSP内置对象在JSP页面中可以直接使用,不需要声明或创建对象,但在Servlet中不能直接使用(request和respons两个对象除外),其他相关内置对象可以通过request对象获取。
9大内置对象分类
1.request(请求对象)
- 该对象是“HttpServletRequest”接口的一个实现类对象,该对象表示客户端向服务端发送的一次请求;
- 该对象属于“作用域”对象,它的作用域仅限于一次请求期:该作用域从客户端向服务端发送请求开始,服务端接受到客户端请求后终止(我们可以通过请求转发将该请求延长),在request对象中存放的数据只能在其作用域内起作用。
常用方法
1.设置request对象的编码集: 默认情况下客户端向服务端提交的数据如果存在英文会出现乱码,则需要设置request对象的编码集。
request.setCharacterEncoding("UTF-8");
2.根据参数名获得对应的参数值:
request.getParameter("paramName");
eg.
String username=request.getParameter("username");
String password=request.getParameter("password");
3.根据参数名获得一组同名的参数值,返回字符串数组:
request.getParameterValues("paramName");
4.向request作用域中设置一个属性:参数1"attrName"为属性名,参数 2"attrName"为属性值(Object)
request.setAttribute(attrName,attrName);
eg.
//登录失败
request.setAttribute("errMSG","用户名或密码错误!");
5.根据属性名获取属性值:从request作用域中获取一个属性的值,默认为Object类型
request.getAttribute(attrName);
6.请求转发:使用请求转发实现页面跳转,请求转发可以将请求对象转发到指定位置(其他页面或 Servlet 中)
request.getRequestDispatch(url).forward(request,response);
2.response(响应对象)
- 该对象属于 HttpServletResponse 接口的一个实例,该对象表示服务端向客户端发送的一次回应
常用方法
1.重定向:url为目标地址
response.sendRedirect(url);
2.设置响应的内容类型与编码集:
response.setContentType("text/html;charset=utf-8");
3.获得一个输出流 ,通过该输出流可以向客户端直接输出内容,如果需要输出中文则需要设置“内容类型”:
response.getWriter();
- 相同点:可以实现页面跳转。
- 不同点:
(1)使用请求转发实现页面跳转后,地址栏显示的地址为请求转发的源地址而不是目标地址。使用重定向实现页面跳转后,地址栏显示的是目标地址。
(2)请求转发不仅可以传递字符串数据还可以将请求对象传递给目标地址。重定只能传递字符串数据。
(3)请求转发属于服务器内部转发,不会由客户端发送新请求。重定向是由客户端再次发送的一次请求。
3.session(会话对象)
- 该对象是"HttpSession"接口的一个实现类对象
- session表示一次会话,什么是会话呢?
(1)会话指“请求与响应”的集合;
(2)会话指客户端“第一次”向服务端发送请求开始,直到“客户端的浏览器关闭”或“服务端关闭”或“超时”或“服务端手动销毁”终止;
(3)在会话开始到会话结束,期间的所有“请求和响应”都在同一个会话中。 - 在JavaWeb中会存在session的原因?
(1)首先理解Http协议:Http协议是一个“无状态”的协议,无状态指在该协议下客户端与服务端的连接状态不会保持;
(2)由于在使用Http协议的情况下,服务端无法确定新的请求之前是否请求过,但是通过session却可以维护当前客户端和服务端的状态;
(3)web开发中可以通过session机制来维持客户端与服务端的关系。
- Web应用如何通过session类来维持客户端与服务端的关系呢?【靠sessionId维持】
(1)当客户端第一次访问服务端时,服务端检测请求中是否存在sessionId,如果不存在则表示该客户端是第一次访问;
(2)服务端创建一个session对象并生成一个唯一的sessionId,将session对象及sessionId存入到服务端,并将sessionId响应到客户端;
(3)客户端浏览器接收到服务端响应的sessionId后,会自动的将该sessionId保存下来(临时存储);
(4)其次客户端每次向服务端发送请求时,都会将sessionId自动发送到服务端;
(5)服务端接收到sessionId检测该Id是否有效,如果有效则表示该客户端不是第一次访问,通过可以从session对象获取存储的数据。 - session依赖于浏览器,不同的浏览器访问同一个服务器时会产生不同sessionId
- session也属于作用域对象,其作用域为第一次请求到session销毁结束,在作用域内的数据对同一个session是共享的。
- session开始和销毁的条件
- session开始:当第一次访问服务端时session开始
session销毁
:
a.关闭浏览器
b.服务端手动销毁session,使用
c.超时,当客户端在一定时间内未向服务端发送任何请求时,服务端虎认为该session失效自动销毁(tomcat的默认超时时间为30分钟)session.invalidate();
d.服务器关闭或重启
session的常用方法
1.获得sessionId
session.getId();
2.销毁session
session.invalidate();
3.向session作用域中存放一个属性
session.setAttribute(attrName,attrValue);
4.从session中获取一个属性值
session.getAttribute(attrName);
5.从session中移除一个属性
session.removeAttribute();
4.application(应用程序对象)
-
该对象是ServletContext接口的一个实现类对象,该对象表示当前“应用服务器”;
-
该对象也属于作用域对象,其中可以存放数据,但该对象的作用域为整个应用服务器,因此在application对象存放的数据为整个服务器的共享数据,关于用户的隐私数据不允许在该对象存放;
常用方法
(1)向 application 对象中添加一个属性:application.setAttribute(“name”,obj);
(2)从 application 获取一个属性,根据属性名获取:
application.getAttribute(“name”);
5.page(页面对象)
- 当前页面对象,等同于this关键字。
6.pageContext(页面上下文对象)
- 该对象为一个作用域对象,可以通过pageContext对象在当前页面存储数据,它的作用域仅限于当前页面;
- 可以通过pageContext对象获取其他内置对象。
7.out(输出对象)
- 该对象是一个输出流对象,用于向页面输出内容。
8.config(配置对象)
- config对象为配置对象,在页面中可以获取配置信息。
9.exception(异常对象)
- 该对象为异常对象,使用该对象可以在JSP页面中处理异常。
- 结束语:有任何意见或者建议欢迎投稿哦~喜欢就给小明同学点个赞吧!