`
pengfeng
  • 浏览: 229087 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

Struts2中访问HttpServletRequest和HttpSession

阅读更多

      在没有使用Struts2之前,都习惯使用HttpServletRequest和HttpSession对象来操作相关参数,下面介绍一下在Struts2中访问隐藏的HttpServletRequest和HttpSession的两种方法:

1.非Ioc方式
这种方式主要是利用了com.opensymphony.xwork2.ActionContext类以及ora.apache.struts2.ServletActionContext类,具体的方法如下所示。
获得request对象:
1)HttpServletRequest request = ServletActionContext.getRequest ();
2).ActionContext ct= ActionContext.getContext();
   HttpServletRequest request=
(HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);
获得session对象:
在Struts2中底层的session都被封装成了Map类型,我们称之为SessionMap,而平常我们所说的session则是指HttpSession对象,具体的获得方法如下所示。
1).Map session=ActionContext.getSession();
2).Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION);
得到这个SessionMap之后我们就可以对session进行读写了,如果我们想得到原始的HttpSession可以首先得到HttpServletRequest对象,然后通过request.getSession()来取得原始的HttpSession对象。一般情况下SessionMap已经可以完成所有的工作,我们不必再去强行使用底层的session了。
2.IoC方式
这种方式相对来说变化就比较少了,下面给出代码大家自己看吧:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

publicclass IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
    private String message;
    private Map att;
    private HttpServletRequest request;
    private HttpServletResponse response;    
    
    public String getMessage() {
        return message;        
    }
    
    publicvoid setSession(Map att) {
        this.att = att;
    }
    
    publicvoid setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
    
    publicvoid setServletResponse(HttpServletResponse response) {
        this.response = response;
    }
    
    @Override
    public String execute() {        
        att.put("msg", "Hello World from Session!");
        
        HttpSession session = request.getSession();
        
        StringBuffer sb =new StringBuffer("Message from request: ");
        sb.append(request.getParameter("msg"));
        sb.append("<br>Response Buffer Size: ");
        sb.append(response.getBufferSize());
        sb.append("<br>Session ID: ");
        sb.append(session.getId());
        
        message = sb.toString();
        return SUCCESS;
    }
}
 
 
分享到:
评论
1 楼 watson243671 2011-08-20  
应用了!!http://blog.csdn.net/watson243671

相关推荐

    JavaEE技术-试验四.zip_JavaEE_API_struts2 Action

    在MyEclipse环境下运用Struts2技术访问Servlet API,包括HttpServletRequest、HttpSession和ServletContext

    Struts2_TypeConvertion

    在Struts2中底层的session都被封装成了Map类型,我们称之为SessionMap,而平常我们所说的session则是指HttpSession对象,具体的获得方法如下所示。 A.Map session=ActionContext.getSession(); B.Map session=(Map...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和...

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和...

    【项目实战案例】java校园订餐系统项目(web端)

    * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ package com.csgw.action; import javax.servlet.http.HttpServletRequest; import javax.servlet....

    struts 标签 logic:iterate使用 logic:iterate

    我就是靠这个文档实现logic:iterate的循环的 struts 标签 logic:iterate使用 logic:iterate &lt;br&gt;第一页 是struts官方的说明, 第二页 是个例子 第三页 是我实现的arrayList放入标签的方法。 这是页面...

    struts乱码问题

    HttpServletRequest request=ServletActionContext.getRequest(); HttpSession session=request.getSession(); session.setAttribute("bookName", this.bookName); session.setAttribute("bookPrice", this....

    spring security 参考手册中文版

    9.5 Spring Security中的访问控制(授权) 84 9.5.1安全和AOP建议 84 9.5.2安全对象和AbstractSecurityInterceptor 85 什么是配置属性? 85 RunAsManager 86 AfterInvocationManager 86 扩展安全对象模型 87 9.6本地...

    超级有影响力霸气的Java面试题大全文档

    但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理, EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 24、...

    java 面试题 总结

    但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 21、...

Global site tag (gtag.js) - Google Analytics