`
uule
  • 浏览: 6316772 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

[转]struts2的action中获得request response session几种方法【基础】

 
阅读更多

来源:http://blog.csdn.net/yaerfeng/article/details/7210639

在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式。分别为

servlet 不相关的 非IoC 取得Request等对象的方式

servlet 不相关的 IoC 取得Request等对象的方式

servlet 相关的 非IoC 取得Request等对象的方式

servlet 相关的 IoC 取得Request等对象的方式以下分别叙述。首先请看struts.xml文件文件内容:

 

1,servlet 不相关的 非IoC 取得Request等对象的方式  
这种方法先取得ActionContext,然后获取Map类型的request等对象  
  
Action文件:  
package struts2.login;  
  
import java.util.Map;  
  
import com.opensymphony.xwork2.ActionContext;  
import com.opensymphony.xwork2.ActionSupport;  
  
public class LoginAction  extends ActionSupport{  
    private ActionContext context;  
    private Map request;  
    private Map session;  
    private Map application;  
     
    @Override  
    public String execute() throws Exception {  
        // TODO Auto-generated method stub  
        this.context = ActionContext.getContext();  
        this.request = (Map)this.context.get("request");  
        this.session = this.context.getSession();  
        this.application = this.context.getApplication();  
        this.request.put("attribute", "request value servlet 不相关的 非IoC ");  
        this.session.put("attribute", "session value servlet 不相关的 非IoC ");  
        this.application.put("attribute", "application value servlet 不相关的非IoC ");  
        return SUCCESS;  
    }  
}  
  
2,servlet 不相关的 IoC 取得Request等对象的方式  
这种方法,是实现特定的接口,由container来设定request等对象。请注意如下代码示例中红色文字的部分。  
  
Action文件:  
package struts2.login;  
  
import java.util.Map;  
  
import org.apache.struts2.interceptor.ApplicationAware;  
import org.apache.struts2.interceptor.RequestAware;  
import org.apache.struts2.interceptor.SessionAware;  
  
import com.opensymphony.xwork2.ActionSupport;  
  
public class Login2Action  extends ActionSupport  
    implements RequestAware , SessionAware, ApplicationAware{  
    private Map request;  
    private Map session;  
    private Map application;  
     
    @Override  
    public String execute() throws Exception {  
        // TODO Auto-generated method stub  
        this.request.put("attribute", "request value servlet 不相关的 IoC ");  
        this.session.put("attribute", "session value servlet 不相关的 IoC ");  
        this.application.put("attribute", "application value servlet 不相关的 IoC ");  
        return SUCCESS;  
    }  
  
    @Override  
    public void setRequest(Map<String, Object> arg0) {  
        // TODO Auto-generated method stub  
        this.request = arg0;  
    }  
  
    @Override  
    public void setSession(Map<String, Object> arg0) {  
        // TODO Auto-generated method stub  
        this.session = arg0;  
    }  
  
    @Override  
    public void setApplication(Map<String, Object> arg0) {  
        // TODO Auto-generated method stub  
        this.application = arg0;  
    }  
}  
  
  
3,servlet 相关的 非IoC 取得Request等对象的方式  
这种方法可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。  
取出方法,请参看代码中的蓝字部分。  
  
Action文件:  
package struts2.login;  
  
import javax.servlet.ServletContext;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpSession;  
  
import org.apache.struts2.ServletActionContext;  
  
import com.opensymphony.xwork2.ActionSupport;  
  
public class Login3Action  extends ActionSupport{  
    private HttpServletRequest request;  
    private HttpSession session;  
    private ServletContext application;  
     
    @Override  
    public String execute() throws Exception {  
        // TODO Auto-generated method stub  
        this.request = ServletActionContext.getRequest();  
        this.session = this.request.getSession();  
        this.application = ServletActionContext.getServletContext();  
        this.request.setAttribute("attribute", "request value servlet 相关的非IoC ");  
        this.session.setAttribute("attribute", "session value servlet 相关的非IoC ");  
        this.application.setAttribute("attribute", "application value servlet 相关的 非IoC ");  
        return SUCCESS;  
    }  
     
}  
  
  
4,servlet 相关的 IoC 取得Request等对象的方式  
  
这种方法也可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。  
但是取出方法是通过接口进行实现,也就是由struts2的container来设定,请参看代码中的红字部分。  
  
Action文件:  
package struts2.login;  
  
import javax.servlet.ServletContext;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpSession;  
  
import org.apache.struts2.interceptor.ServletRequestAware;  
import org.apache.struts2.util.ServletContextAware;  
  
import com.opensymphony.xwork2.ActionSupport;  
  
public class Login4Action  extends ActionSupport  
    implements ServletRequestAware , ServletContextAware{  
    private HttpServletRequest request;  
    private HttpSession session;  
    private ServletContext application;  
     
    @Override  
    public String execute() throws Exception {  
        // TODO Auto-generated method stub  
        this.request.setAttribute("attribute", "request value servlet 相关的 IoC ");  
        this.session = this.request.getSession();  
        this.session.setAttribute("attribute", "session value servlet 相关的 IoC ");  
        this.application.setAttribute("attribute", "application value servlet 相关的 IoC ");  
        return SUCCESS;  
    }  
  
    @Override  
    public void setServletRequest(HttpServletRequest arg0) {  
        // TODO Auto-generated method stub  
        this.request = arg0;  
    }  
  
    @Override  
    public void setServletContext(ServletContext arg0) {  
        // TODO Auto-generated method stub  
        this.application = arg0;  
    }  
}   

文件名:result.jsp  
文件内容:  
<%@ page contentType="text/html; charset=gb2312" %>  
<%@ taglib uri="/struts-tags" prefix="s"%>  
  
<html>  
request 属性是 ${requestScope.attribute}<br>  
session 属性是 ${sessionScope.attribute}<br>  
application 属性是 ${applicationScope.attribute}<br>  
</html>  
  
文件名:getrequest.jsp  
文件内容:  
<%@ page contentType="text/html; charset=gb2312" %>  
<%@ taglib uri="/struts-tags" prefix="s"%>  
<html>  
<a href="login.action">servlet 不相关的 非IoC 取得Request等对象的方式</a><br>  
<a href="login2.action">servlet 不相关的 IoC 取得Request等对象的方式</a><br>  
<a href="login3.action">servlet 相关的 非IoC 取得Request等对象的方式</a><br>  
<a href="login4.action">servlet 相关的 IoC 取得Request等对象的方式</a><br>  
</form>  
</html>  
 

 

另一篇文章:http://www.iteye.com/topic/581820

 

分享到:
评论

相关推荐

    Struts2的Action中获得request response session几种方法

    Struts2的Action中获得request response session几种方法

    Struts2与Velocity模板

    Velocity 模板引擎还提供了内建变量,如 stack、action、response、request、session、application、base 等,可以使用这些变量来访问相应的对象。 Velocity 模板引擎还提供了注释语法,单行注释使用##,多行注释...

    POI导入导出EXCEL文件.(struts 1.x and struts2.x).doc

    struts1.x的例子,struts2.x可以参考自己修改 1.action的写法 import java.io.*; import java.sql.*; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import javax.servlet....

    从J2SE到J2EE知识点介绍

    (五) jsp内置对象(request,response.session,out) 121 1. request和response 121 2. session 122 (六) Servlet的 xml配置 126 1. xml的文件结构 127 2. 通过web.xml配置文件访问servlet的流程 129 (七) servlet里面...

    外文翻译 stus MVC

    • Before passing it to the Action class, Struts will also conduct form state validation by calling the validation() method on UserActionForm. Note: This is not always wise to do. There might be ways ...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...

    java面试题

    答:Struts1和Struts2是两个完全不同的框架,Struts1以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的所有请求。Struts2以核心控制器FilterDispatcher为基础,包含了框架内部的控制流程和处理机制。 ...

    ssh(structs,spring,hibernate)框架中的上传下载

     以上是Spring+Hibernate将文件二进制数据持久化到数据库的解决方案,而Struts通过将表单中file类型的组件映射为ActionForm中类型为org.apache.struts.upload. FormFile的属性来获取表单提交的文件数据。  工程...

    拦截器和控制器的区别

    1、struts2对servlet封装(request,response) ,资源调配和资源的映射 2、框架设计的思想 istruts 配置,过滤器,反射 istruts.properties 3、starts2的使用思路 1、jar 2、配置文件 3、常用类 ...

    struts 标签 logic:iterate使用 logic:iterate

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

    java 面试题 总结

    Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来...

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

     Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常...

    J2EE应用开发详解

    118 8.3.5 Struts2配置文件 119 8.4 Action的配置方式 121 8.4.1 动态方法调用 121 8.4.2 设置action元素的method属性 122 8.4.3 使用通配符配置action 122 8.4.4 默认action 123 8.5 拦截器Interceptor 123 8.5.1 ...

    Servlets和JSP核心技术 卷2(英文版) 第二部分

    Servlets和JSP核心技术 卷2 内容还是很详细的,看过卷1的人可以继续用这本书深造,呵呵 目录: Chapter 1. Using and Deploying Web Applications Section 1.1. Purpose of Web Applications Section 1.2. ...

    Servlets和JSP核心技术 卷2(英文版) 第一部分

    Servlets和JSP核心技术 卷2 内容还是很详细的,看过卷1的人可以继续用这本书深造,呵呵 目录: Chapter 1. Using and Deploying Web Applications Section 1.1. Purpose of Web Applications Section 1.2. ...

    李兴华Java Web开发实战经典(高清版) Part2

    第15章 Struts基础开发 15.1、Struts简介 15.2、配置Struts开发环境 15.3、开发第一个Struts程序 15.4、Struts工作原理 15.5、深入Struts应用 15.6、本章摘要 15.7、开发实战讲解(基于Oracle数据库) ...

    java web 视频、电子书、源码(李兴华老师出版)

    0415_Struts基础开发 0416_Struts常用标签库 0417_Struts高级开发 0500_第五部分:附录 0518_附录A:实用工具 0519_附录B:MyEclipse开发工具 电子书目录: MLDN 李兴华 Java Web 开发实战经典.pdf (高清版)...

    jsp 重复提交问题

    2. 使用 Token 机制,生成一个令牌保存在用户 Session 中,在 form 中加一个隐藏域,显示该令牌的值,form 提交后重新生成一个新的令牌,将用户提交的令牌和 Session 中的令牌比较,如相同则是重复提交。 3. 使用 ...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    第15章 Struts基础开发 15.1、Struts简介 15.2、配置Struts开发环境 15.3、开发第一个Struts程序 15.4、Struts工作原理 15.5、深入Struts应用 15.6、本章摘要 15.7、开发实战讲解(基于Oracle数据库) 第16...

Global site tag (gtag.js) - Google Analytics