使用什么方法来获得request对象HttpSession对象?

HttpSession原理_文档库
文档库最新最全的文档下载
当前位置: & HttpSession原理
HttpSession原理
—高级软件人才实作培训专家
图1-2浏览器与服务器之间传递session 过程
调用request.getSession()方法是从名为JSESSIONID 的cookie 中获取session 的id 值,然后拿到这个id 值去服务器的session 缓存中查找对应session 并返回。
1.2服务器在什么情况下创建session 对象
调用request.getSession()方法可以获得session 对象,但并不是代表调用该方法服务器就会创建一个HttpSession 对象,只有在一次会话中,第一次调用该方法时服务器才会创建一个session 对象。
request.getSession()方法会查找请求信息中是否存在一个名为JSESSIONID 的cookie ,这个cookie 是否存在会导致出现以下三种情况:
●Cookie 不存在:
Cookie 不存在,说明服务器还没有为本次会话创建session 对象,这时服务器会创建一个session 对象,并把这个session 对象保存在session 缓存中,然后将session 的id 值保存在一个cookie 中,再把这个cookie 发送给浏览器。
●Cookie 存在,session 的id 值有对应的session 对象:
拿到该cookie 的值,即session 的id 值,然后根据id 值去session 缓存中查找到了对应的session 对象,这时服务器不会重新创建session ,而是将找到的session 返回。
●Cookie 存在,session 的id 值没有对应的session 对象:
根据session 的id 值在session 缓存中没有找到对应的session 对象,这时服务器创建新的session ,并将新session 的id 值保存在一个cookie 中,然后响应给浏览器。
以上就是服务器创建session 的对象的三种情况。另外,request 对象还有其他两个方法可以获取session 对象,分别是:
●request.getSession(false):这个方法的作用是:从cookie 中取出session 的id 值,但是该id 值没有对应的session ,服务器不再创建新的session 对象,返回null ;
●request.getSession(true):该方法的作用和request.getSession()方法的作用一样。
HttpSession 对象有最大不活动时间,默认的最大不活动时间是30分钟,也就是说,如果session 对象
Word文档免费下载:
HttpSession详解_互联网_IT/计算机_专业资料。HttpSession 详解 1.session 的机制 http 是无状态的协议,客户每次读取 web 页面时,服务器都打开新的会话,而且服务...HttpSession详解_计算机软件及应用_IT/计算机_专业资料。java web资料全集 ...HttpSession原理 5页 免费
HttpSession的原理 暂无评价 1页 免费 ©...HttpSession入门_互联网_IT/计算机_专业资料。首先,HttpSession是javax.servlet.http包下的一个接口。从名字来看,我们可以知道HttpSession与Http协议有一定的关系,但是...HttpSession接口_计算机软件及应用_IT/计算机_专业资料。HttpSession接口 HttpSession 接口定义 public interface HttpSession 这个接口被 Servlet 引擎用来实现在 HTTP ...RedisHttpSession将HttpSession的接口方法重写了一遍,将HttpSession的属性存储到了 Redis 中。 每个RedisHttpSession都有一个 UUID 与之对应,该字段加上session:前缀...()完全一样 如果为 false:只查询,如果没有查到,返回 null 三、HttpSession 的原理 四、HttpSession 的应用 1、模拟简单的购物车:app1 2、用户登录案例:app2...查看:36875|回复:10
现在做的一个项目需要实现角色权限菜单管理,但是这个需要在jsp页面获取session对象来判断才行,但不知道怎么获取,使用jstl标签获得一般对象方法:${user},是获取不了的,不知道要使用什么方法才能获取这个session对象!
JSP中有九大内置对象,可以直接用session,也可以获取从request中取,其本质都是同一个。九大内置对象如下:
JSP中九大内置对象为:
  request& && && && &请求对象 & && && && && & 类型 javax.servlet.ServletRequest& && &&&作用域 Request
  response& && && & 响应对象& && && && && && & 类型 javax.servlet.SrvletResponse& && & 作用域&&Page
  pageContext& & 页面上下文对象& && & 类型 javax.servlet.jsp.PageContext& && &作用域& & Page
  session& && && && &会话对象& && && && && && & 类型 javax.servlet.http.HttpSession& && & 作用域& & Session
  application& && & 应用程序对象& && && & 类型 javax.servlet.ServletContext& && && & 作用域& & Application
  out& && && && && && & 输出对象& && && && && && & 类型 javax.servlet.jsp.JspWriter& && && && & 作用域& & Page
  config& && && && &&&配置对象& && && && && && &类型 javax.servlet.ServletConfig& && && && &作用域& & Page
  page& && && && && &页面对象& && && && && && &类型 javax.lang.Object& && && && && && && && && & 作用域& & Page
  exception& && &&&例外对象& && && && && &&&类型 javax.lang.Throwable& && && && && && && &作用域& & page
1、request.getSession().getAttribute()
2、${sessionScope}
看 板凳~~,都说是内置对象了,直接拿过来用就是了~~~
估计你是想用el表达式取session里面的user对象吧
如果直接这么写$(user)相当于$(requestScope.user)
你可以试试 这样写 $(sessionScope.user)试试
天天好心情~~~
助理工程师
我记得如果session里面有这个对象的话
jsp页面${user}可以直接得到的吧
助理工程师
&s:property value=&#session.session名称&/&
直接写${user}的话,会从最小的域即page域开始查找是不是有符合的,如果有就取出来,如果想直接从session域取得话可以可以写${sessionScope.user}
你servlet里面,request.getSession.setAttribute(&user&,user);
这个有没有设置?
提示: 作者被禁止或删除 内容自动屏蔽
谢谢了,使用${sessionScope['USER-TYPE']}已经实现了想要的功能!
赞成用OGNL表达式安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&1449人阅读
在struts1.x Action类的execute方法中,有四个参数,其中两个就是response和request。而在Struts2中,并没有任何参数,因此,就不能简单地从execute方法获得HttpServletResponse或HttpServletRequest对象了。
&&&&但在Struts2 Action类中仍然有很多方法可以获得这些对象。下面就列出四种获得这些对象的方法。
【方法1】使用Struts2 Aware拦截器
&&&&这种方法需要Action类实现相应的拦截器接口。如我们要获得HttpServletResponse对象,需要实现org.apache.struts2.interceptor.ServletResponseAware接口,代码如下:
import&com.opensymphony.xwork2.ActionS
import&javax.servlet.http.*;
import&org.apache.struts2.interceptor.*;
public&class&MyAction&extends&ActionSupport&implements&ServletResponseAware
&&&&private&javax.servlet.http.HttpServletResponse&
&&&&//&获得HttpServletResponse对象
&&&&public&void&setServletResponse(HttpServletResponse&response)
&&&&&&&&this.response&=&
&&&&public&String&execute()&throws&Exception
&&&&&&&&response.getWriter().write(&实现ServletResponseAware接口&);
在上面的代码中,MyAction实现了一个ServletResponseAware接口,并且实现了setServletResponse方法。如果一个动作类实现了ServletResponseAware接口,Struts2在调用execute方法之前,就会先调用setServletResponse方法,并将response参数传入这个方法。如果想获得HttpServletRequest、HttpSession和Cookie等对象,动作类可以分别实现ServletRequestAware、SessionAware和CookiesAware等接口。这些接口都在org.apache.struts2.interceptor包中。
如果要获得请求参数,动作类可以实现org.apache.struts2.interceptor. ParameterAware接口,但如果只想判断某个参数是否存在,也可以实现com.opensymphony.xwork2.interceptor. ParameterNameAware接口。这个接口有一个acceptableParameterName方法,当Struts2获得一个请求参数时,就会调用一次。读者可以在这个方法中将所有的请求参数记录下来,以便以后使用。这个方法的定义如下:
boolean acceptableParameterName(String parameterName);
【方法2】使用RequestAware拦截器
&&&&这种方法和第1种方法类&#20284;。动作类需要实现一个org.apache.struts2.interceptor.RequestAware接口。所不同的是RequestAware将获得一个com.opensymphony.xwork2.util.OgnlValueStack对象,这个对象可以获得response、request及其他的一些信息。代码如下所示:
import&java.util.M
import&org.apache.struts2.*;
import&com.opensymphony.xwork2.ActionS
import&javax.servlet.http.*;
import&com.opensymphony.xwork2.util.*;
import&org.apache.struts2.interceptor.*;
public&class&FirstAction&extends&ActionSupport&implements&RequestAware
&&&&private&Map&
private&HttpServletResponse&
&&&&public&void&setRequest(Map&request)
&&&&&&&&this.request&=&&&&&&&&&
&&&&public&String&execute()&throws&Exception
&&&&&&&&java.util.Set&String&&keys&=&request.keySet();
&&&&&&&&//&枚举所有的key&#20540;。实际上只有一个key:struts.valueStack
&&&&&&&&for(String&key:&keys)
&&&&&&&&&&&&System.out.println(key);
&&&&&&&&//&获得OgnlValueStack&对象
&&&&&&&&OgnlValueStack&stack&=&(OgnlValueStack)request.get(&struts.valueStack&);
&&&&&&&&//&获得HttpServletResponse对象
&&&&&&&&response&=&(HttpServletResponse)stack.getContext().get(StrutsStatics.HTTP_RESPONSE);
&&&&&&&&response.getWriter().write(&实现RequestAware&接口&);
我们也可以使用StrutsStatics.HTTP_REQUEST、StrutsStatics.PAGE_CONTEXT来获得HttpServletRequest和PageContext对象。这种方法有些麻烦,一般很少用,读者可以作为一个参考。
【方法3】使用ActionContext类
这种方法比较简单,我们可以通过类的方法获得相应的对象。代码如下:
&&& HttpServletResponse response =&(HttpServletResponse)
ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest)
ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
【方法4】使用ServletActionContext类
&&&&Struts2为我们提供了一种最简单的方法获得HttpServletResponse及其他对象。这就是org.apache.struts2.ServletActionContext类。我们可以直接使用ServletActionContext类的getRequest、getResponse方法来获得HttpServletRequest、HttpServletResponse对象。代码如下:
&&& HttpServletResponse response = ServletActionContext.getResponse()
&&&&response.getWriter().write(&hello world&);
&&&&从这四种方法来看,最后一种是最简单的,读者可以根据自己的需要和要求来选择使用哪一种方法来获得这些对象。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:7409次
排名:千里之外}

我要回帖

更多关于 获得iframe 中的对象 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信