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

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

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属性 
${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
有效:在服务器一开始执行服务,到服务器关闭为止。它的范围最大,生存周期最长。
作用:设值与取值

你可能感兴趣的:(web)