Servlet三大域对象,Jsp四大域对象

Servlet三大域对象

域对象的作用:保存数据,获取数据,共享数据.

Servlet三大域对象

对象的名称 对象的类型
request HttpServletRequest
session HttpSession
application ServletContext

(一) request
生命周期:
创建:客户端向服务器发送一次请求,服务器就会创建request对象.
销毁:服务器对这次请求作出响应后就会销毁request对象.
有效:仅在当前请求中有效。

作用:
①获取表单提交参数: request.getParameter()

//从login.jsp中获取用户名和密码
String username = request.getParameter(“username”);
String password = request.getParameter(“password”);
String imageText = request.getParameter(“imageText”);

②传值到表单: request.setAttribute()

if(user == null) {
//用户名和密码不匹配
request.setAttribute(“msg”, “用户名和密码不匹配!”);
return “/jsp/login.jsp”;
}

(二) session
生命周期:
创建:服务器端第一次调用getSession();(保存在服务器内存中)
销毁:
1.非正常关闭服务器(正常关闭session会序列化,再次启动服务器session会被反序列化);
2.session过期了默认30分钟.
3.手动调用session.invalidate();
注意:关闭浏览器再次访问会找不到session的会话id而不是session被销毁了。
有效:用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个session对象。

作用:
①读取生成的验证码信息:

// 图片的验证码
String imageMsg = (String) request.getSession().getAttribute(“imageMsg”);

②用户保持登录状态:

//登录成功 保存用户登录状态
request.getSession().setAttribute(“user”, user);

③购物车物品保存:

//将cart放入session中
request.getSession().setAttribute(“cart”, cart);

(三)application
生命周期:
创建:服务器启动的时候,服务器为每个WEB应用创建一个属于该web项目的对象ServletContext类.
销毁:服务器关闭或者项目从服务器中移除的时候.
有效:此信息在整个服务器上被保留。

区别

request: 每一次请求都是一个新的request对象,如果在web组件之间需要共享同一个请求中的数据,只能使用请求转发.
session: 每一次会话都是一个新的session对象,如果如果需要在一次会话中的多个请求之间需要共享数据,只能使用session.
application: 应用对象,Tomcat启动到关闭,表示一个应用,在一个应用中有且只有一个application对象,作用于整个Web应用,可以实现多次会话之间的数据共享.

共同点

1.设置作用域中的共享数据(保存数据)

作用域对象.setAttribute(String name,Object value);

2.获取作用域中的共享数据(获取数据)

Object value=作用域对象.getAttribute(String name);

3.删除作用域中的指定的共享数据(删除数据)

作用域对象.removeAttribute(String name);

Jsp四大域对象

对象名称 对象的类型
pageContext PageContext
request HttpServletRequest
session HttpSession
application ServletContext

(一)pageContext
有效:当前页面(最小的一个),超过这个页面就不能够使用。
作用:
①在当前页面和当前页面中的标签共享数据:

void setAttribute(String name, Object value);
Object getAttrbiute(String name, Object value);
void removeAttribute(String name, Object value);

②全域: pageContext.findAttribute(“内容”)在四个域中搜索数据

自动搜索数据顺序:page域->request域->session域->application域(context域)

③代理其他域对象:通过pageContext向request、session、application对象中存取数据

void setAttribute(String name, Object value, int scope):在指定范围中添加数据;
Object getAttribute(String name, int scope):获取指定范围的数据;
void removeAttribute(String name, int scope):移除指定范围的数据

④获取其他内置对象:通过pageContext对象获取其它8个内置对象(pageContext对象本身也属于jsp 9大内置对象之一)

void setAttribute(String name, Object value, int scope):在指定范围中添加数据;
Object getAttribute(String name, int scope):获取指定范围的数据;
void removeAttribute(String name, int scope):移除指定范围的数据

⑤获取其他内置对象:通过pageContext对象获取其它8个内置对象(pageContext对象本身也属于jsp 9大内置对象之一)

JspWriter getOut():获取out内置对象;
ServletConfig getServletConfig():获取config内置对象;
Object getPage():获取page内置对象;
ServletRequest getRequest():获取request内置对象;
ServletResponse getResponse():获取response内置对象;
HttpSession getSession():获取session内置对象;
ServletContext getServletContext():获取application内置对象;
Exception getException():获取exception内置对象;
Jsp 9大内置对象,EL表达式11大内置对象

(二)request
有效:一JSP网页发出请求到另一个JSP网页之间,随后这个属性就失效。
作用:
①设置request范围的数据:

<%request.setAttribute(“name”,”xxx”);request.setAttribute(“age”,12);%>

②获取request范围的数据:

//获取购物项ci的product.cid属性

$

③获取部署的应用程序名:

${pageContext.request.contextPath }/user
相当于pageContext.getRequest().getContextPath()

(三)session
有效:一段用户持续和服务器所连接的时间,但与服务器断线后,这个属性就无效。比如断网或者关闭浏览器。
作用:
获取session:

//已知user已经在session当中,现取出user来判断是否为空
emptyuser//为空则显示登录按钮emptyuser//为空则显示登录按钮{not empty user }//不为空则显示“xxx,你好”
//也可以用来判断购物车是否为空
${empty cart || empty cart.cartItems } //为空则显示“亲,你的购物车空空如也,请到处逛逛吧~~~”

(四)application
有效:在服务器一开始执行服务,到服务器关闭为止。它的范围最大,生存周期最长。
作用:设值与取值
————————————————
版权声明:本文为CSDN博主「Json Yao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40845373/article/details/82015691

posted @ 2021-11-28 11:58  水木blog  阅读(125)  评论(0编辑  收藏  举报