struts2从form取值的三种方式

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的文件内容一样。

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

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

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

时间: 2024-12-29 10:36:43

struts2从form取值的三种方式的相关文章

js页面取值的三种方式

<input id=""<radio <checkbox<div<img对于这些标签内参数取值,一般分为三种类型:一.有关id取值用 #:取id处的value值:id=$('#id名字').val();取id本身的值:id_value=$('#id名字').attr('id', );对于id中含有变量index的,比如id=mm${st.index}(中括号里面为变量):先定义可变量index,然后用$('#id名字'+index).val()取值:二.有

页面向后台传取值的几种方式对比

demo内容:在页面创建一个表单,通过提交表单的方式向后台传值,后台处理数据后跳转另一页面 (一).jsp+servlet 数据流向: (first.jsp——servlet) 注解版:jsp页面的form表单的:action=“**”——servlet的@WebServlet("/**"):method="post"——doPost(): input的name="**"—— request.getParameterValues("**

3.struts2接收页面传参的三种方式

Struts2通过拦截器机制封装了三种接收页面参数的方式: 1.属性驱动 2.模型驱动(有两种) Domain ModelDriven 1.属性驱动:这种方式比较简单,只要你直接在页面定义变量并且符合以下两个规则,就会自动接收值. 规则1:你变量的名字和页面的name属性一致 规则2:生成对应的get set方式 Action写法: public class ParamAction { private String username; private String password; publi

Struts2中Action接收参数的三种方式

Struts2中Action接收参数的方法主要有以下三种:1.使用Action的属性接收参数:    a.定义:在Action类中定义属性,创建get和set方法:    b.接收:通过属性接收参数,如:userName:    c.发送:使用属性名传递参数,如:user1!add?userName=zhangsan:2.使用DomainModel接收参数:    a.定义:定义Model类,在Action中定义Model类的对象(不需要new),创建该对象的get和set方法:    b.接收

Struts2(二)action的三种方式

一.普通java类 package com.pb.web.action; /* * 创建普通的java类 */ public class HelloAction1 { public String execute(){ return "success"; } } 二.实现Action接口 package com.pb.web.action; import com.opensymphony.xwork2.Action; /* * 第二种实现Action接口 */ public class

获取map集合中键和值的三种方式

//创建一个map集合 HashMap<String, Integer> map = new HashMap<>(); //添加元素 map.put("小王",25); map.put("小张",35); map.put("小李",20); 方法一:用增强for循环 //用keyset()方法获取所有的键 Set<String> keys = map.keySet(); for(String s:keys){

js对象取值的两种方式

var obj = {abc:"ss",nn:90}; var v1 = obj.abc;//使用点的方式 var v2 = obj["abc"];//使用中括号的方式 在实际项目中一般使用点,会方便许多,但是如果key是变量的话就不能使用点了,js会理解变量为对象的key值,造成混淆 1 var v3 = obj[key];//key是一个变量

5.struts2中Action类中获取ServletAPI的三种方式

**Servlet的API的访问(开发中偶尔会使用到)** 1.在Action类中也可以获取到Servlet一些常用的API,有如下三种方式获取 * 完全解耦合的方式 * 使用接口注入的方式 * 使用ServletActionContext中静态方法直接访问Servlet的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的页面上. * 提供JSP注册的页面,演示下面这三种方式: <h3>注册页面</

jquery.validate+jquery.form提交的三种方式

原文:http://www.cnblogs.com/datoubaba/archive/2012/06/06/2538873.html jquery.validate+jquery.form提交的三种方式 概述:本篇主要讨论jquery.validate结合jquery.form实现对表单的验证和提交方案. 方式一:是通过jquery.validate的submitHandler选项,即当表单通过验证时运行回调函数.在这个回调函数中通过jquery.form来提交表单: 方式二:是通过jquer