struts2 页面向Action传参方式

1、基本属性注入

  我们可以直接将表单数据项传递给Action,而Action只需要提供基本的属性来接收参数即可,这种传参方式称为基本属性注入。例如

  jsp页面:

<s:form method="post" action="/Login">
    <s:textfield name="username" label="用户名"/>
    <s:password name="password" label="密码"/>
    <s:submit></s:submit>
</s:form>

  Action:

package action;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

import models.User;


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(){
        //用户名或密码错误
        if(!"admin".equals(this.username) || !"123456".equals(this.password)){
            return Action.LOGIN;
        }
        //用户名和密码正确
        else{
            return Action.SUCCESS;
        }
    }
}

只需要在Action中提供username和password两个属性,并提供了setXXX()方法,就可以实现参数的自动传递,这里不需要成员变量的名称和参数名称一致,只需要setXXX()对于的属性名和参数名相同就行

2、域模型注入

   如果表单上的数据项很多,我们可以将表单中的数据项封装成实体对象后传递给Action,而Action需要提供实体对象属性来接收参数,这种传参的方式称为域模型注入。

   如上面例子,可以先定义一个User实体类

package models;

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中

package action;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

import models.User;


public class LoginAction {

    private User user;
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }

    public String execute(){
        //用户名或密码错误
        if(user==null || !"admin".equals(user.getUsername()) || !"123456".equals(user.getPassword())){
            return Action.LOGIN;
        }
        //用户名和密码正确
        else{
            return Action.SUCCESS;
        }
    }
}

  

  jsp页面:

<s:textfield name="user.username" label="用户名"/>
<s:password name="user.password" label="密码"/>
<s:submit></s:submit>

3、模型驱动传参数(Model Driven)

Action:

package action;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ModelDriven;

import models.User;


public class LoginAction implements ModelDriven<User>{

    private User user=new User();
    

    public String login(){
        //用户名或密码错误
        if(user==null || !"admin".equals(user.getUsername()) || !"123456".equals(user.getPassword())){
            return Action.LOGIN;
        }
        //用户名和密码正确
        else{
            return Action.SUCCESS;
        }
    }


    public User getModel() {
        // TODO Auto-generated method stub
        return user;
    }
}

JSP页面

<s:textfield name="username" label="用户名"/>
<s:password name="password" label="密码"/>
<s:submit></s:submit>

  

 

原文地址:https://www.cnblogs.com/caoyc/p/5582925.html