`

Struts2笔记 – Struts2中访问Web元素的3中方法

阅读更多
Struts2笔记 – Struts2中访问Web元素的3中方法

1、通过RequestAware,SessionAware,ApplicationAware获取:
    在Struts2中不能直接访问Request,Session,Application元素,但是可以使用Struts2中提供的RequestAware,SessionAware,ApplicationAware。在这里要分别为三个对象提供setter方法,以便让struts自动执行,使用IoC(控制反转)进行赋值。
    下面的LoginAction使用ModelDriven获取User,放入Session中,并在request和application中分别放入“test1”和“test2”。
LoginAction:
public class LoginAction extends ActionSupport implements 
					ModelDriven<User>,RequestAware,SessionAware, ApplicationAware {
					
    private Map<String, Object> request;
    private Map<String, Object> session;
    private Map<String, Object> application;
    private User user = new User();

    public void setSession(Map<String, Object> session) {
        this.session = session;
    }
    public void setRequest(Map<String, Object> request) {
        this.request = request;
    }
    public void setApplication(Map<String, Object> application) {
        this.application = application;
    }
    public void setUserService(UserServiceImpl userService) {

        this.userService = userService;
    }
    public String execute() {
        session.put("user", userRe);
        request.put("req", "test1");
        application.put("app", "test2");
        return "result";
    }
}

    在页面中读取保存的数据可以用HttpServletRequest,HttpSession,ServletContext等直接访问,也可以使用Struts标签通过Stack Context访问。
    在页面中可以按照以下方式读取保存的数据:
<img class="user_photo" src="<s:property value="#session.user.userPhoto" />" />
<!-- userPhoto为User的一个属性 -->

<!--使用标签OGNL表达式的方式访问Stack Context中的值,需要加“#” -->
<s:property value="#request.req"/>
<!--使用HttpServletRequest方式访问 -->
<%=request.getAttribute("req") %> <br />

<s:property value="#application.app"/> <%=application.getAttribute("app") %> <br />

<!--使用OGNL表达式访问Stack Context中的attr获取具体的数据-->
<s:property value="#attr.user.userPhoto"/><br />
<s:property value="#attr.req"/><br />
<s:property value="#attr.app"/><br />


2、通过ActionContext获取Map类型的元素:

private Map request;
    private Map session;
    private Map application;
    //可以在构造方法中取值
    public LoginAction1() {
        request = (Map)ActionContext.getContext().get("request");
        session = ActionContext.getContext().getSession();
        application = ActionContext.getContext().getApplication();
    }
    public String execute() {
        request.put("r1", "r1");
        session.put("s1", "s1");
        application.put("a1", "a1");
        return SUCCESS; 
    }


3、通过ServletActionContext获取原始的web元素类型:

private HttpServletRequest request;
    private HttpSession session;
    private ServletContext application;
    public LoginAction3() {
        request = ServletActionContext.getRequest();
        session = request.getSession();
        application = session.getServletContext();
    }   
    



本文引自:

http://www.itzhai.com/visit-the-web-element-using-struts2-ioc-assignment-requestaware-sessionaware-applicationaware.html

分享到:
评论

相关推荐

    struts2 学习重点笔记

    - **原理**:Struts2 的拦截器会在 Action 执行完成后,调用 getter 方法并将结果存储到适当的范围对象中。 **3.4 请求转发与重定向** - **转发**:Action 的 execute 方法返回一个字符串,根据这个字符串找到对应...

    黑马程序员Struts2笔记

    黑马程序员的笔记中可能包含了如何创建一个简单的Struts2应用,从HelloWorld实例到实际的表单提交、文件上传下载等实战案例,帮助初学者快速掌握Struts2的基本用法。 通过学习这些笔记,开发者将能够理解Struts2的...

    马士兵Struts2笔记2013

    Struts2可以通过OGNL(Object-Graph Navigation Language)轻松地访问和操作Web元素,如请求参数、session、application范围内的对象等。 10. **Stack Context** Stack Context是ValueStack的一部分,它包含了...

    struts2学习笔记(完美总结)——转自OPEN经验库

    OGNL是Struts2中用于对象属性访问和表达式语言,它允许在Action、ValueStack和视图层之间传递数据。ValueStack是一个对象栈,它持有ActionContext上下文中的所有对象,包括Action实例、ActionForm、Session、Request...

    struts2课程笔记

    防止表单重复提交是Web开发中的常见问题,Struts2通过令牌机制来解决这个问题,避免了同一操作被多次执行。 项目练习部分涉及到使用Ajax实现异步请求并返回JSON数据,这通常通过Struts2的JSON插件实现。文件下载则...

    张龙圣思园struts2学习笔记word

    笔记中可能详细讲解了Struts2的配置文件,如struts.xml,它是整个应用的配置中心,定义了Action的映射、结果类型、拦截器栈等。在Action配置中,我们可以指定Action类、方法以及对应的URL路径,实现请求与业务的关联...

    struts2学习笔记总结

    本笔记将全面总结Struts2的核心概念、主要功能以及实际开发中的应用。 一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是...

    struts2学习笔记

    Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中广泛使用,提供了丰富的功能和灵活性。下面将详细讲解Struts2的一些核心知识点。 **一.Struts2核心文件:struts.xml配置** Struts2的...

    struts2笔记

    本笔记将深入探讨Struts2的核心概念、执行流程、类型转换、输入验证和国际化等方面。 **一、Struts2框架基础** Struts2是Apache软件基金会的一个开源项目,它是基于拦截器的MVC框架,继承了WebWork框架的优点。...

    struts2四天的学习笔记

    3. **配置文件**:Struts2的配置主要在两个文件中完成:struts.xml和web.xml。struts.xml定义了Action的映射、结果类型、拦截器等,而web.xml则配置DispatcherServlet(Struts2的前端控制器)和其他必需的Servlet和...

    struts2综合笔记

    - 在 `web.xml` 中添加 Struts2 核心过滤器配置,参考 `struts-2.3.15.3-all\struts-2.3.15.3\apps\struts2-blank\WEB-INF\web.xml`。 #### 四、Struts2 目录结构 - **apps**: 包含基于 Struts2 的示例应用。 - *...

    Struts2学习笔记

    3. **定义struts.xml**:在classpath中放置struts.xml文件,这是Struts2的核心配置文件,用于声明包、结果类型、拦截器以及Action等元素。 4. **创建视图和控制器**:在项目中编写JSP页面作为视图,同时定义Action类...

    Struts2笔记

    Struts2是一个基于MVC(Model-View-Controller)模式的Java Web应用框架,它能够帮助开发者快速构建出结构清晰、易于维护的Web应用程序。 #### 二、“约定优于配置”原则 在Struts2的设计理念中,“约定优于配置”...

    struts2学习笔记黑马程序员

    ### Struts2学习笔记之文件上传与Ajax开发 #### Struts2文件上传 **文件上传简介** 文件上传是Web应用中常见的功能之一,Struts2框架内置了对文件上传的支持,使得开发者能够轻松地实现这一功能。为了确保文件...

    Struts2框架笔记

    3. **动态方法调用**: 通过动态调用的方式访问Action中的方法。 #### 结果页面配置 1. **全局结果页面**: 通过在`&lt;package&gt;`标签下添加`&lt;global-results&gt;`标签来配置,适用于多个Action共享相同的视图场景。 2. **...

    struts2 学习笔记 实战

    Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中扮演着重要的角色。本文将深入探讨Struts2的核心概念,包括Namespace、标签、Action以及它们在实际开发中的应用。 一、Namespace ...

    struts2 笔记(根据尚硅谷视频所记)

    在本笔记中,我们将深入探讨Struts2的核心配置文件`struts.xml`及其主要配置元素。 首先,`struts.xml`是Struts2的核心配置文件,用于定义Action、拦截器、结果页面等。它遵循特定的DTD(文档类型定义),在这个...

    [黑马程序员Struts2 2016版视频] 前3Days笔记

    虽然笔记中没有提供源代码,但学习过程中可以通过模仿示例创建简单的Struts2应用,如用户登录注册系统,熟悉Action配置、视图展现和拦截器的使用。 总结,黑马程序员Struts2 2016版的前3Days笔记重点介绍了Struts2...

    struts2学习笔记.doc

    - 解压缩下载的Struts2包,将其中的`.jar`文件拷贝至项目中的`WebRoot/WEB-INF/lib`目录下,包括但不限于: - `commons-logging-1.0.4.jar` - `struts2-core-2.0.12.jar` - `xwork-2.0.6.jar` - `ognl-2.6.11....

Global site tag (gtag.js) - Google Analytics