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;
 }
}
时间: 2024-10-07 15:27:10

struts2的参数的封装形式的相关文章

Struts2接受参数的几种类型和接受复杂类型参数(list&lt;String&gt;和list&lt;Object&gt;)

Struts2接受参数的几种类型 大概有这几种类型: 1.使用Action的属性接受参数 在Action中加入成员变量,配置Getter和Setter方法,Getter而和Setter方法的名字和表单中input标签的name属性一致(简单来说就是Action中变量的名和表单中input的name值一致) 2.使用DomainModel接收参数 JSP: <form action="LoginAction.action" method="post"> U

struts2 请求参数接收

1. 采用基本类型接受请求参数(get/post)在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名的属性.请求路径:http://localhost:8080/action/register.action?id=33 public class HelloWorldAction { private Integer id; public Integer getId() { return id; } public void setId(Integer id)

struts2接收参数

struts2有三种接收参数的方式: 1.Action属性 2.Domain Model 3.ModelDriven login.jsp页面: <body>   <form action="loginAction.action" method="post" > 用户名:<input type="text" name="username"/> 密码:<input type="p

Struts2请求参数校验

校验的分类 客户端数据校验 和 服务器端数据校验 客户端数据校验 ,通过JavaScript 完成校验 (改善用户体验,使用户减少出错 ) 服务器数据校验 ,通过Java代码 完成校验 struts2 支持校验方式 代码校验(用的很少) :在服务器端通过编写java代码,完成数据校验 配置校验(主流):XML配置校验(主流) 和 注解配置校验 代码校验请求参数 步骤一: 封装数据 步骤二: 实现校验Action ,必须继承ActionSupport 类 步骤三: 覆盖validate方法(val

Struts2请求参数合法性校验机制

在Action中通过代码执行数据校验 请求参数的输入校验途径一般分两种:客户端校验 :通过JavaScript 完成 (jquery validation插件),目的:过滤正常用户的误操作. 服务器校验 :通过java代码完成 ,目的:整个应用阻止非法数据的最后防线 列如: <h1>登录:请求数据校验--代码手动校验</h1> <s:fielderror/> <form action="${pageContext.request.contextPath

struts2关于参数

关于struts2的参数传递 1. 通过属性 userName passWorld getXX() setXX() 2. 数组 String[] str; getXX() setXX() 3. 对象 User user; setXX() getXX() 4. 集合 List<User> user; setXX()  getXX() 如图 1.通过属性 private String userName; private String passWorld; public String getUser

Struts2获取参数的几种方式

Struts2由于是一个贴心的框架,所以获取参数这种体力活,就无需再通过原生的request来getParameter了,有如下几种方式进行获取 1.Action中属性驱动,必须提供与form表单name相同的后台属性get/set,这种方式适合数据量比较少的form表单提交 2.大数据量的form表单,这时一般对应后台的一个实体类,所以这时还在每个action写属性驱动,那就会代码冗余,这时可以定义一个对象来属性来进行参数接收,如User对象,只是前台传参数的时候,需要先写对象名再点对象下的属

struts2 复杂参数封装

1.1.1    Struts2中封装复杂类型的数据: 封装到List集合: 页面: 商品名称:<input type="text" name="products[0].pname"/><br/> 商品价格:<input type="text" name="products[0].price"/><br/> 商品名称:<input type="text"

struts2接收参数的几种形式

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