`
langgufu
  • 浏览: 2307047 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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;
    }
 
}
 
登陆成功的文件如下: www.2cto.com
<%@ 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的文件内容一样。
 
三种方法的总结:
第一种方法把form的值都放在action文件中,当form提交的项目很多的时候,action的内容将变得很多,很臃肿。项目少的时候可用。
 
第二种方法将form的值单独放在vo中,解决了action文件臃肿的问题,同时使form和action分开,较好。但是需要在设置和获取的jsp页面上进行标识。
 
第三种方法在第二种方法的基础上,通过实现特定的接口,去掉了action中的set和get方法,同时去掉了jsp页面上的标识。使后台程序的logic更加清晰

分享到:
评论

相关推荐

    struts2-传值方式

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

    struts2传值

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

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

    在本篇文章中,我们将详细探讨Struts2的三种主要的传值方式,并通过一个简单的Demo来加深理解。 1. **Action属性传值** Struts2的核心是Action类,每个Action类都代表一个特定的业务逻辑。我们可以通过在Action类...

    ajax请求传值Struts2+jsp

    Struts2是基于MVC(Model-View-Controller)设计模式的Java Web框架,它提供了一种组织应用结构和处理HTTP请求的方式。在Struts2中,Action类作为Controller处理用户的请求,并通过Result返回响应。 ### 二、AJAX...

    struts2使用域模型传值

    struts2使用域模型传值,如何在struts2中使用与模型传值

    struts2配置文件传值中文乱码

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

    struts 2中文汉字传值

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

    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对象并存入值栈,该对象携带所有与...

    基于struts2做的ztree实例

    基于struts2,用json传值,用jquery的ztree做了一棵树,后台用的Oracle,包里面有建表语句。因为之前也没有用过struts2,json,ztree,正好学学struts2,在包crud里面是增删改查,从官网上比着弄的,crud2是自己从网上...

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

    在IT行业中,SSH框架组合(Spring、Struts2和Hibernate)是Java Web开发中的经典选择,尤其适用于构建复杂的业务逻辑和数据管理应用。本项目"spring+struts2+hibernate 一对多增删改查"聚焦于这三大框架在处理一对多...

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

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

    Struts2页面取值总结

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

    Struts2常用标签及说明

    ### Struts2常用标签及其应用详解 #### 一、引言 Struts2是一个基于MVC模式的开源Java Web框架,它提供了丰富的标签库来帮助开发者更高效地进行Web应用程序的开发。这些标签不仅简化了页面逻辑的编写,还提高了代码...

    struts2学习代码

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

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

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

    Struts:Strurs的Somp应用

    Struts2ParameterPostMethod_common: 关于Struts普通传值的应用 Struts2ParameterPostMethod_packagebybean: 关于Struts封装参数传递的应用 Struts2SQLConnection: 关于Struts数据库链接的应用 Struts2Verifier: ...

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

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

    Struts2笔记

    Struts2是一个强大的MVC(Model-View-Controller)框架,它被广泛应用于Java Web开发中,以提高开发效率和代码可维护性。本笔记将深入探讨Struts2的核心概念、配置方法以及如何通过Action类与视图进行交互。 1. **...

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

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

Global site tag (gtag.js) - Google Analytics