zoukankan      html  css  js  c++  java
  • struts2接收参数的5种方法

    这里总结下Struts2接收参数的5种方法。

    1. 使用Action的属性

    在action里面定义要接收的参数变量,并提供相应的setter,getter。定义的参数变量需要和提交参数的名称一致。

    并不用做数据类型的转换,相应提交方式可以用get和post。

    简单举例

    如:login.action?name=yanggb&password=123456

    jsp:

    <form action="login" method="post" name="form1">
        用户名:<s:textfield name="username"/><br/>
        密 码:<s:password name="password"/><br/>
        <s:submit value="提交"/> 
    </form>

    action:

    public class LoginAction extends ActionSupport {  
        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就能接收到前端的请求参数。

    2. 使用DomainModel

    使用这种方式,在Action里面就不用定义很多的属性,而是用Model层用到的模型,保存它的一个对象。简单理解就是,从上面的单个参数接收,改为多个参数一起接收到一个对象中。相应提交方式可以用get和post。

    简单示例

    如:login.action?loginUser.username=yanggb&loginUser.password=123456

    jsp:

    <form action="login" method="post" name="form1">
        用户名:<s:textfield name="loginUser.username"/><br/>
        密 码:<s:password name="loginUser.password"/><br/>
        <s:submit value="提交"/> 
    </form>

    action:

    public class LoginAction extends ActionSupport {
        // 错误的写法,不能自己实例化,struts会自动实例化
        // private User loginUser = new Users();
        private User loginUser;
    
        public User getLoginUser() {
            return loginUser;
        }
    
        public void setLoginUser(User loginUser) {
            this.loginUser = loginUser;
        }
    }

    entity:

    public class User { 
        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就能接收到前端的请求参数(可以通过实体去取参数)。

    3. 使用DTO--数据传输对象(Data Transfer Object)

    它的作用是接收参数和传递参数,并不是项目中的实体类。

    如用户注册时,会用到确认密码,所以要先把参数接收过来,做处理后,再传递给相应方法去创建User对象。

    提交参数的方式和Domain Model方式相同。

    简单示例

    如:login.action?userDTO.name=yanggb&userDTO.password=123456

    DTO:

    public class UserDTO {
        private String name;
        private String password;
        private String confirm;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {  
            this.password = password;  
        }  
    
        public String getConfirm() {  
            return confirm;  
        }  
    
        public void setConfirm(String confirm) {  
            this.confirm = confirm;  
        }  
    }

    Action:

    public class LoginAction extends ActionSupport {  
        private UserDTO userDTO;  
      
        public UserDTO getUserDTO() {
            return userDTO;
        }
    
        public void setUserDTO(UserDTO userDTO) {
            this.userDTO = userDTO;
        }
    
        public void execeute() {
            System.out.println("姓名: " + userDTO.getName());
        }
    }

    这样,在Action就能接收到前端的请求参数(可以通过DTO去取参数)。

    4.使用ModelDriven

    在创建Action的时候,只要Action实现了ModelDriven接口,就可以去调用接口的getModel()方法去取相关对象。

    相应提交方式可以用get和post。

    如:login.action?username=yanggb&password=123456

    jsp:

    <form action="login" method="post" name="form1">
        用户名:<s:textfield name="username"/><br/>
        密 码:<s:password name="password"/><br/>
        <s:submit value="提交"/> 
    </form>

    action:

    public class loginAction extends ActionSupport implements ModelDriven<User> {
        private User user = new User(); // 手动实例化
    
        public User getModel() {        
            return user; // 返回实例
        }     
    }

    5.使用Request对象

    此方法与传统的JSP等传接参数一样,即使用request.getParameter()方法来接收参数。

    简单示例

    如:login.action?name=yanggb

    action:

    public class LoginAction extends ActionSupport {  
        public void execeute() {
            String name = super.getRequest().getParameter("name");
            System.out.println("姓名:" + name); // yanggb
        }
    }

    这种方式几乎是最简单的。

    "有些事情不是你努力就会有结果,有些人也不是你坚持就能够留得住。"

  • 相关阅读:
    无编译/无服务器,实现浏览器的 CommonJS 模块化
    程序员如何在工作中自我增值
    软件架构被高估,清晰简单的设计被低估
    为什么会产生微服务架构?
    版本管理Git和SVN的介绍及其优缺点
    13.递归第一次
    12.二叉树的序遍历
    12.二叉树的序遍历
    10.十进制转m进制
    10.十进制转m进制
  • 原文地址:https://www.cnblogs.com/yanggb/p/11691345.html
Copyright © 2011-2022 走看看