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

域对象的作用:保存数据,获取数据,共享数据.
可以在不同的Servlet中进行数据传递的对象就称为域对象。

JAVA中的四大域对象总结
Servlet三大域对象,Jsp四大域对象

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);

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

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

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

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

Jsp四大域对象

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

对象名称 对象的类型
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属性 ${ci.product.pid }

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

${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