`

struts2 Action传值方式

阅读更多
struts2 传值方式


如何把登陆页面中的用户名传递到登录成功的页面中呢?
有三种方式,

1,使用默认的action的传递方式。
2,自定义一个vo,在action中使用这个vo
3,使用ModelDriven的方式。
下面分别叙述。

1,使用默认的action的传递方式。
action文件如下:
package struts2.login;
 
public class LoginAction {
   
    private String username;
    private String password;
   
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
   
    public String execute() {
        System.out.println (LoginAction.class.hashCode());
        if (username.equalsIgnoreCase("aaa") &&
                password.equals("aaaaaa")) {
            return "loginSuc";
        }
        else {
            return "loginFail";
        }
    }
 }
 


登陆成功的文件如下:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<meta http-equiv="content-type" content="text/html;charset=gb2312">

欢迎您,<s:property value="username" /> 登录成功。
 

2,自定义一个vo,在action中使用这个vo

自定义vo文件名:LoginVO.java
文件内容:
package struts2.login; 
public class LoginVO {
     private String username;
    private String password;
   
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}



在Action文件中,要使用这个vo
文件内容:
package struts2.login;
 public class LoginAction {
     private LoginVO user = null;
 
    public String execute() {
        System.out.println (LoginAction.class.hashCode());
        if (user.getUsername().equalsIgnoreCase("aaa") &&
                user.getPassword().equals("aaaaaa")) {
            return "loginSuc";
        }
        else {
            return "loginFail";
        }
    } 
     public LoginVO getUser() {
        return user;
    } 
    public void setUser(LoginVO user) {
        this.user = user;
    }
}


登陆成功的文件如下:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<meta http-equiv="content-type" content="text/html;charset=gb2312">

欢迎您,<s:property name="user.username"> 登录成功。
 

注意login文件的部分也要进行修改
文件内容如下:
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<title>login2</title>
 
<form action="login.action" method="post">
  username:<input type="input"  name="user.username" ><br>
  password:<input type="input"  name="user.password" ><br>
  <input type="submit" value="登录">
</form>

3,使用ModelDriven的方式。
同样也需要一个vo,这个vo和方法2中的一致,但是action中的写法就不一样了。
action文件内容如下:
package struts2.login; 
import com.opensymphony.xwork2.ModelDriven;
 
public class LoginAction  implements ModelDriven<LoginVO> {
     @Override
    public LoginVO getModel() {
        // TODO Auto-generated method stub
        return user;
    }
 
    private LoginVO user = new LoginVO();
    public String execute() {
        System.out.println (LoginAction.class.hashCode());
        if (user.getUsername().equalsIgnoreCase("aaa") &&
                user.getPassword().equals("aaaaaa")) {
            return "loginSuc";
        }
        else {
            return "loginFail";
        }
    }
}

而登陆成功的页面和login的文件则不需要追加user的前缀,即和方法1的文件内容一样。
欢迎您,<s:property value="username" /> 登录成功。
 

三种方法的总结:
第一种方法把form的值都放在action文件中,当form提交的项目很多的时候,action的内容将变得很多,很臃肿。项目少的时候可用。

第二种方法将form的值单独放在vo中,解决了action文件臃肿的问题,同时使form和action分开,较好。但是需要在设置和获取的jsp页面上进行标识。

第三种方法在第二种方法的基础上,通过实现特定的接口,去掉了action中的set和get方法,同时去掉了jsp页面上的标识。使后台程序的logic更加清晰


本文引自:http://www.2cto.com/kf/201202/118037.html
分享到:
评论

相关推荐

    struts2-传值方式

    ### Struts2 传值方式详解 在Struts2框架中,实现前后台的数据传递是构建Web应用的基础之一。本文将详细介绍三种常见的Struts2数据传递方式:通过默认的Action属性传递、使用Value Object(VO)传递以及利用...

    Struts2的三种传值方式比较(附demo)

    总结来说,Struts2的传值方式包括Action属性、ValueStack和Ognl以及ActionContext与请求/Session域的使用。选择合适的方式取决于业务需求和代码的可维护性。了解并熟练掌握这些方法,对于提高Struts2应用的开发效率...

    struts2传值

    本文将深入探讨Struts2中两种不同的传值方式,并结合实例解析如何在JSP页面中使用Struts2标签进行数据访问。 首先,传值问题在Struts2中主要涉及到Action类和JSP页面之间的交互。在Action类中,有两种方式可以将值...

    ajax请求传值Struts2+jsp

    2. **创建Action类**:定义一个Struts2 Action类,该类将处理AJAX请求。Action类中的方法通常需要一个`execute`方法,返回一个表示结果的字符串,Struts2会根据这个结果选择合适的Result来展示响应。 ```java ...

    struts2配置文件传值中文乱码

    本文将围绕“Struts2配置文件传值中文乱码”这一主题,深入探讨其成因、解决方案以及相关的配置细节,旨在帮助开发者有效解决中文乱码问题,提升用户体验。 ### Struts2框架简介 Struts2是Apache组织下的一个开源...

    struts 2中文汉字传值

    总之,Struts 2 中处理中文汉字传值的关键在于理解和正确使用字符编码,包括设置页面编码、响应编码、URL编码和Action中的解码步骤。确保每个环节都与UTF-8编码兼容,可以避免中文字符的乱码问题。在实际开发中,还...

    Struts2常用标签的使用以及Action传值

    Struts2表单标签的应用实例。 主要功能是在一个页面提交个人信息之后跳转到另一个页面显示之前所提交的个人信息。具体介绍和功能演示请移步我的博客: http://blog.csdn.net/qq_33171970/article/details/51380991

    struts2访问request,session,application作用域

    在 Struts2 的 Action 类中,可以通过以下方式间接地访问到 Request、Session 和 Application: ```java // 使用 ActionContext 来获取 ActionContext context = ActionContext.getContext(); Map request = (Map)...

    Struts2_OGNL

    1. 栈顶对象:在程序执行过程中,由容器自动创建并存储到值栈中,该对象仅在Action使用模型驱动方式传值时被用到。 2. Action对象:每个Action请求到来时,容器会创建一个Action对象并存入值栈,该对象携带所有与...

    spring+struts2+hibernate 一对多增删改查

    在一对多关系的增删改查操作中,Struts2的动作类(Action)接收用户输入,调用业务逻辑层(Service)的方法,并将结果传递给视图层(JSP或Freemarker等)。Struts2的拦截器(Interceptor)可以进一步优化流程,如...

    Struts2页面取值总结

    本文将深度解析Struts2框架中页面取值的多种方式及核心标签的使用技巧,帮助开发者更高效地进行页面与后台交互。 #### 页面取值的四种常见方法 1. **`&lt;s:property&gt;` 标签**: 此标签用于展示模型中的属性值。如`...

    url传值到Action乱码解决方案

    今天,我们将讨论如何解决URL传值到Action乱码问题,特别是在Struts2框架中。 乱码问题的原因 乱码问题的原因是因为URL传值时,浏览器和服务器之间的编码方式不同所致。在大多数情况下,浏览器使用UTF-8编码,而...

    acton之间传值

    本文将详细介绍Struts2中几种常见的Action间传值方式,特别是`chain`和`redirectAction`两种方式的使用场景及限制。 #### 1. 使用`chain`进行Action间传值 `chain`结果类型允许将当前Action的结果转发到另一个...

    Struts2常用标签及说明

    在Struts2中,经常需要将表单数据传递给Action处理。最简单的做法是使用`&lt;input&gt;`标签,例如: ```html ``` 这里的`name`属性表示传递给Action的参数名称。需要注意的是,为了能够正确接收到此参数,对应的Action类...

    struts2学习代码

    4. **传值去页面**:Struts2支持将Action中的数据传递给JSP页面进行显示。这可以通过`ModelDriven`接口、`ActionSupport`类的`getFieldErrors()`方法,或者直接在JSP中使用OGNL访问Action属性来实现。此外,`...

    通过Ajax两种方式讲解Struts2接收数组表单的方法

    使用struts2表单传值,可以传一个或者是作为一个对象的各个属性传,都非常灵活便捷。但是如果我们需要传一个数组并希望struts正确接收,该怎么处理呢? 下面我将通过普通表单和ajax两种方式讲解。首先我们有如下一个...

    struts2中通过json传值解决乱码问题的实现方法

    在使用Struts2框架进行Web开发时,经常需要在前端页面和后端Java代码之间进行数据传输,尤其是涉及到JSON格式的传值。由于中文字符在UTF-8编码和ISO-8859-1编码之间的转换差异,很容易在数据传输过程中出现乱码问题...

    struts2.0 教程(标签,XML配置,入门例子,帮助手册)

    "struts 2 action type为chain传值.doc"将详细阐述如何在Action之间传递数据。 "Struts2 strus.xml中result类型及含义.doc"将涵盖不同的Result类型,如dispatcher(默认),redirect,stream等,它们决定了请求处理...

    Struts2笔记

    本笔记将深入探讨Struts2的核心概念、配置方法以及如何通过Action类与视图进行交互。 1. **Struts2的作用** Struts2的主要作用是为Web应用程序提供结构化和可扩展的架构。它负责处理用户请求,将这些请求映射到...

    struts2.x一些技术细节资料总结

    Struts2是一个流行的Java Web框架,它为开发者提供了一种组织和管理应用程序逻辑的方式。在Struts2中,Action是核心组件,负责处理用户请求并返回相应的结果。本篇文章将详细探讨在Struts2.x中两个Action之间传递值...

Global site tag (gtag.js) - Google Analytics