`

Struts2中访问Web元素的3中方法

 
阅读更多

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

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();
    }
分享到:
评论

相关推荐

    Struts2中访问web元素的例子

    本篇文章将详细介绍Struts2中四种访问web元素的方法。 1. **Action上下文(ActionContext)** ActionContext是Struts2的核心组件之一,它封装了请求、响应以及session等信息。我们可以通过ActionContext获取到...

    Struts2_访问web元素_accessWebElements_s

    总结起来,“Struts2_访问web元素_accessWebElements_s”这个主题涵盖了Struts2框架中如何在Action类和视图层之间传递和处理web元素数据的方法。理解这些机制对于有效开发Struts2应用至关重要。在实际项目中,开发者...

    struts2访问Web元素

    在“struts2访问Web元素”这个主题中,我们主要关注的是如何通过Struts2框架来操作和控制Web页面上的各种元素。这篇博文可能详细介绍了如何在Struts2中与HTML表单、按钮、文本框等交互,以及如何处理用户提交的数据...

    struts2 访问web元素

    在"Struts2 访问web元素"这个主题中,我们主要探讨的是如何在Struts2框架中与HTML表单、按钮、文本框等web元素进行交互。这涉及到Action类、Result类型以及Struts2提供的强大数据绑定机制。 1. **Action类**:在...

    Struts2访问Web元素

    在"Struts2访问Web元素"这个主题中,我们将深入探讨如何在Struts2框架中与网页元素进行交互。 首先,我们需要了解Struts2的核心组件——Action类。Action类是业务逻辑的载体,负责处理用户请求,并返回相应的结果。...

    struts2标签使用方法

    在使用 Struts2 标签前,需要在 JSP 页面引入标签库,并在 web.xml 中声明要使用的标签。 property 标签 property 标签用于输出指定的值,例如输出用户的名称、年龄等信息。property 标签可以访问某一个包的类的...

    马士兵Struts2笔记2013

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

    spring3、struts2、mybatis结合的一个简单web实现

    在Spring3中,我们可以配置Bean定义,管理对象生命周期,并将业务逻辑注入到控制器中。同时,Spring还提供了事务管理,使得数据库操作更加安全。 其次,Struts2作为表现层框架,负责接收用户请求,调度控制流,并将...

    struts2中的OGNL的源码

    3. **集合操作**:支持对集合进行操作,如`list[0]`访问列表的第一个元素,`map["key"]`访问映射中的值。 4. **运算符支持**:包括算术运算、比较运算、逻辑运算等。 5. **上下文变量**:OGNL表达式可以在当前上...

    留言板留言板struts2留言板struts2

    Struts2是一个强大的Java web应用程序框架,用于构建和部署企业级的MVC(Model-View-Controller)架构的Web应用。这个"留言板留言板struts2"项目,显然是一个基于Struts2实现的简单留言板系统,旨在展示Struts2的...

    Struts2 demo2

    - **对指定action方法校验**: 在Struts2中,可以通过XML配置文件定义特定Action类或方法的数据校验规则,以确保用户输入的有效性。 - **对action的所有方法进行校验**: 这种配置允许全局应用校验规则,适用于...

    struts2中#号的用法

    在Struts2框架中,`#`符号是一种非常重要的语法元素,主要用于访问上下文中的变量。本文将详细介绍`#`符号的使用方法及其应用场景,帮助读者更好地理解和掌握Struts2框架的相关知识。 #### 一、Struts2简介 Struts...

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    - 在web.xml中配置过滤器(Filter),通常使用`FilterDispatcher`作为入口点,它是Struts2的核心组件之一。 - 这个过滤器会捕获所有进入Web应用的HTTP请求,并将它们传递给Struts2框架处理。 - 配置过程中需要注意...

    Struts2视频教程

    - **适用范围**:Struts2广泛应用于企业级Java Web项目的开发中,特别是那些需要处理大量用户交互和数据展示的应用。 #### 二、Struts2入门案例 - **Hello Struts2**:通过创建一个简单的“Hello World”示例,...

    传智播客struts2.1视频教程_介绍struts2及struts2开发环境的搭建

    5. **配置web.xml**:在web.xml中引入Struts2的过滤器,配置过滤器的映射,并指定Struts2的配置文件位置。 6. **添加Struts2库**:将下载的Struts2库(包括struts2-core等依赖库)添加到项目的类路径中。 7. **...

    如何将一个web手工配成struts2

    这里的`&lt;action&gt;`元素定义了一个名为`helloWorld`的动作,当用户访问相应的URL时,Struts2会调用`com.example.HelloWorldAction`类中的方法,并将结果渲染到`/WEB-INF/helloworld.jsp`页面上。 #### 总结 通过以上...

    struts2全部的jar包

    Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中扮演着重要的角色。这个“struts2全部的jar包”压缩文件包含了运行Struts2应用程序所需的所有核心库和依赖组件。这里我们将深入探讨Struts...

    struts2.5 web.xml配置

    在探讨Struts2.5中的`web.xml`配置时,我们首先需要理解`web.xml`在Java Web应用中的角色以及它如何与Struts框架交互。`web.xml`是Java Web应用的核心配置文件之一,用于定义应用程序级别的配置信息,如过滤器、监听...

    struts2版本 2.1.6 必须的jar包 和 web.xml 文件的修改

    在Struts2中,`web.xml`是应用的部署描述符,它定义了初始化参数、过滤器、监听器和Servlet等关键元素。以下是你需要关注的部分: 1. **StrutsPrepareAndExecuteFilter** - 配置Struts2的过滤器,负责拦截所有HTTP...

Global site tag (gtag.js) - Google Analytics