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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值