struts2的参数的封装形式

Posted 鲤鱼-CC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2的参数的封装形式相关的知识,希望对你有一定的参考价值。

背景:经常要求获得视图层传过来的很多数据,一般都是一个实体类的n多属性,很多时候实体类的属性特别多,
这时候如果还是按以前的方式在action里面一个个的定义出这些属性的私有变量,然后在提供set、get方法的话,
这样就会使整个action太臃肿,严重妨碍了代码的可阅读性,并且也违背了代码的可复用性,
这时我们就需要对这些请求参数进行封装,提高代码的可复用性

 

1.利用实体类封装参数
    ①创建实体类User(包括用户名和密码属性)
    ②创建action,从表单提交的数据会根据User实体类的属性进行封装

public class LoginAction extends ActionSupport {  
    private User user;
    
    public User getUser() {  
        returnuser;  
    }  
    publicvoid setUser(User user) {  
        this.user = user;  
    }  

    public String execute(){  
    if(user.getUsername().equals("admin")&&user.getPassword().equals("123456"))  
        return"success";  
        return"fail";  
    }  
} 

③定义表单,注意:表单里面的控件的name属性定义有一定的要求,定义name时我们应该定义为:对象.属性的形式
    示例代码

<s:form action="LoginAction">  
    <s:actionerror/>  
    <s:textfield name="user.username"></s:textfield>  
    <s:password name="user.password"></s:password>  
    <s:submit value="提交" ></s:submit>  
</s:form>

2.模型驱动封装请求参数

   模型驱动是指使用JavaBean来封装来回请求的参数.这种方式的好处就是减少了action的压力。

既用于封装来回请求的参数,也保护了控制逻辑,使它的结构清晰.这就是模型驱动的优势.模型驱动的实现主要在Action上

①.首先建立一个实体。

②、建立action类,继承自ActionSupport,实现ModelDriven接口,这个接口定义一个getModel()方法,

用于返回定义的Model,然后调用set方法,进行赋值

publicclass LoginAction3 extends ActionSupport implements ModelDriven<User> {  
 private User user=new User();//这里记住要实例化  
 private LoginService loginService=new LoginServiceImpl();//这里是调用登录的业务处理逻辑  
 
 Override  
 public User getModel() {    
 return user;  
·}  
 public String execute()  
{  
System.out.println(user.getUsername());  
System.out.println(user.getPassword());  
  
 if(loginService.isLogin(user.getUsername(),user.getPassword()))  
{  
 return SUCCESS;  
}  
 return INPUT;  
}  

ModelDrivenAction类的执行流程是:首先调用getModel()方法得到User对象,接着根据
JavaBean的原则将客户端传过来的属性,一个一个的set到User对象的属性中,将属性全部set完之后,

再执行execute()方法。对于模型驱动

3.属性驱动接收参数

①jsp页面:

<form action="sys/login.action" method="post">
 <input type="text" name="username">
 <input type="submit" value="submit">
</form>

②Action:直接通过get、set方法获取。

public class sysAction extends ActionSupport{
 private String username;
 
 public String login() throws Exception {
  System.out.println(username);
  return SUCCESS;
 }
 
 public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  this.username= username;
 }
}

 

以上是关于struts2的参数的封装形式的主要内容,如果未能解决你的问题,请参考以下文章

struts2 表单参数自动封装和参数类型自动转换

Struts2学习———— 表单参数自动封装和参数类型自动转换

Struts2中的参数封装

深入分析JavaWeb 45 -- Struts2封装请求参数与类型转换

Struts2参数的封装

深入分析JavaWeb 45 -- Struts2封装请求参数与类型转换