刚刚突然蒙了,关于servletContext、httpServletRequest、pageContext、ActionContext、servletActionContext、session
1、servletContext:四大域之一(servletContext域、request域、session域、pageContext域 )。ServletContext 又叫Application域,在Web应用被加载时创建,Web应用被移除或关闭时销毁,作用范围为整个应用。四大域主要用于存放变量。
servletContext的主要方法有:
getAttribute(String name) 、setAttribute(String name, Object object)
getContextPath():获取的是webRoot的路径,即根路径
getRealPath(String path):是根路径+path
request域:指从http请求到服务器处理结束,返回响应的整个过程。在这个过程中使用forward方式跳转多个jsp。在这些页面里你都可以使用request域的变量。
session域:当前会话有效,从浏览器打开到浏览器关闭这个过程。
pageContext域:在页面内有效,跳转页面就失效。
对servlet服务器一次请求的上下文环境。主要用于获取Cookies、Session、
request、ContextPath()
2、httpServletRequest,是浏览器发出的请求对象。
主要方法:
httpServletRequest.getCookies()
httpServletRequest.getContextPath()
httpServletRequest.getMethod()
httpServletRequest.getSession()
httpServletRequest.getParameter(String
//获取请求参数
httpServletRequest.getAttribute(String
...
3、ActionContext:这个对象为jsp页面提供上下文环境,主要用于访问JSP之间的共享数据。主要方法有:
ActionContext.getAttribute(String name)//获取pageContext域中存放的属性,可以用setAttribute设置属性
页面中还常用${pageContext.request.contextPath}获取相对路径
4、ActionContext:struts2在每次动作执行前,核心控制器StrutsPrepareAndExecuteFilter都会创建一个ActionContext和ValueStack对象。
ActionContext context=ActionContext.getContext();可以获取当前action的上下文环境。
ActionContext.getContext().getContextMap();//contextMap本身是一个map,可以存放数据,contextMap中也存放着一些小map,主要有ValueStack、application、session、request、parameters。
ActionContext.getContext().getValueStack();//获得值栈
ActionContext.getContext().getApplication();//获得application
ActionContext.getContext().getSession();//获得Session
request获取:(ActionContext没有提供直接方法,用contextMap获取)
ActionContext.getContext().getContextMap().get("request");
5、servletActionContext:servletActionContext是ActionContext的子类,它提供了直接与Servlet相关对象访问的功能。
ServletActionContext.getServletContext();
ServletActionContext.getPageContext();
ServletActionContext.getRequest();
ServletActionContext.getResponse();
//在含有request请求参数的时候,用ServletActionContext获取以下
ServletActionContext.getActionContext(HttpServletRequest request);
ServletActionContext.getValueStack(HttpServletRequest request);
ServletActionContext.getContext();//获得ActionContext,然后可以得到ActionContext可以操作的所有map
6、session:request有getSession方法的原因
cookie是浏览器缓存,用于本地,存储各样的网页、数据在本地。
而session是服务端建立的,在本地存放了session串,用来匹配服务端的session,从而实现对接。这也是request请求,从客户端向服务器发送的请求,能够获取本地session的原因(request有getSession方法的原因)。