获取struts请求参数的三种方式

一、请求参数直接注入对应Action的属性中

要求:
(1)Action类必须为要接受参数的成员变量提供setXXX()方法;
(2)jsp中表单的name属性须与Action中接受参数的成员变量的setter方法对应,遵循JavaBean命名规则。

login1.jsp

<form action="${pageContext.request.contextPath}/login1.action">
    <h1>struts登录测试</h1>
    <fieldset style="width: 300px; padding-top: 20px">
        <span style="color:red;"><s:fielderror></s:fielderror></span>
        <legend><strong>用户登录</strong></legend>
        <div>
            <label for="username">用户名:</label>
            <input type="text" id="username"  name="username"> <br> <br>
            <label for="password">密&nbsp;&nbsp;&nbsp;码:</label> 
            <input type="text" id="password" name="password"> <br> <br>
            <input type="submit" value="登&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;录"
                 style="width: 120px;height:25px;;margin-left: 70px;background: green;">
        </div>
    </fieldset>
</form>

struts.xml

<package name="default" namespace="/" extends="struts-default">
    <action name="login1" class="cn.xiyou.action.Login1Action">
        <!-- name为逻辑视图名 -->
        <result name="success">/WEB-INF/jsp/login1_success.jsp</result>
        <result name="input" type="dispatcher">login1.jsp</result>
    </action>
 </package>

Login1Action.java

package cn.xiyou.action;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class Login1Action extends ActionSupport {
    private static final long serialVersionUID = -6730211106850626711L;

    private String username;
    private String password;

    @Override
    public String execute() throws Exception {
        if("admin".equals(username) && "1234".equals(password)) {
            System.out.println("用户名和密码正确");
            return Action.SUCCESS;
        } else {
            System.out.println("用户名和密码错误");
            return Action.ERROR;
        }
    }

    /**
     * 对传来的数据进行检验
     */
    @Override
    public void validate() {
        if(!"admin".equals(username)) {
            addFieldError("username_error", "用户名错误");
            System.out.println("用户名错误");
            return;
        }
        if(!"1234".equals(password)) {
            addFieldError("password_error", "登录密码错误");
            System.out.println("登录密码错误");
        }
    }

    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;
    }

}

login1_success.jsp

<h1><span style="color: green;">${username }</span></h1> 登录成功!

二、域模型(DomainModel)注入,将参数注入到对应的JavaBean的属性中

要求:
(1)Action类创建接受参数的实体变量,并提供setXXX()方法;
(2)jsp中表单的name属性写法要求:Action类中Bean的成员变量名.Bean的属性名。如:<input type=”text” id=”username” name=”user.username”>

login2.jsp

<form action="${pageContext.request.contextPath}/login1.action">
    <h1>struts登录测试</h1>
    <fieldset style="width: 300px; padding-top: 20px">
        <span style="color:red;"><s:fielderror></s:fielderror></span>
        <legend><strong>用户登录</strong></legend>
        <div>
            <label for="username">用户名:</label>
            <input type="text" id="username"  name="user.username"> <br> <br>
            <label for="password">密&nbsp;&nbsp;&nbsp;码:</label> 
            <input type="text" id="password" name="user.password"> <br> <br>
            <input type="submit" value="登&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;录"
                 style="width: 120px;height:25px;;margin-left: 70px;background: green;">
        </div>
    </fieldset>
</form>

struts.xml

<package name="default" namespace="/" extends="struts-default">
    <action name="login2" class="cn.xiyou.action.Login2Action">
        <!-- name为逻辑视图名 -->
        <result name="success">/WEB-INF/jsp/login2_success.jsp</result>
        <result name="input" type="dispatcher">login2.jsp</result>
    </action>
</package>

Login2Action.java

package cn.xiyou.action;

import cn.xiyou.entity.User;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class Login2Action extends ActionSupport {
    private static final long serialVersionUID = -6730211106850626711L;

    private User user;

    @Override
    public String execute() throws Exception {
        if("admin".equals(user.getUsername()) && "1234".equals(user.getPassword())) {
            System.out.println("用户名和密码正确");
            return Action.SUCCESS;
        } else {
            System.out.println("用户名和密码错误");
            return Action.ERROR;
        }
    }

    /**
     * 对传来的数据进行检验
     */
    @Override
    public void validate() {
        if(!"admin".equals(user.getUsername())) {
            addFieldError("username_error", "用户名错误");
            System.out.println("用户名错误");
            return;
        }
        if(!"1234".equals(user.getPassword())) {
            addFieldError("password_error", "登录密码错误");
            System.out.println("登录密码错误");
        }
    }

    public User getUser() {
        return user;
    }

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

}

login2_success.jsp

<h1><span style="color: green;">${user.username }</span></h1> 登录成功!

三、模型驱动(ModelDriven<T>)注入,将参数注入到对应的JavaBean的属性中

要求:
(1)Action类创建接受参数的实体变量,手动实例化,并提供setXXX()方法;
(2)重写T getModel();方法,返回(1)中的实体。

login3.jsp

<form action="${pageContext.request.contextPath}/login1.action">
    <h1>struts登录测试</h1>
    <fieldset style="width: 300px; padding-top: 20px">
        <span style="color:red;"><s:fielderror></s:fielderror></span>
        <legend><strong>用户登录</strong></legend>
        <div>
            <label for="username">用户名:</label>
            <input type="text" id="username"  name="username"> <br> <br>
            <label for="password">密&nbsp;&nbsp;&nbsp;码:</label> 
            <input type="text" id="password" name="password"> <br> <br>
            <input type="submit" value="登&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;录"
                 style="width: 120px;height:25px;;margin-left: 70px;background: green;">
        </div>
    </fieldset>
</form>

struts.xml

<package name="default" namespace="/" extends="struts-default">
    <action name="login3" class="cn.xiyou.action.Login3Action">
        <!-- name为逻辑视图名 -->
        <result name="success">/WEB-INF/jsp/login3_success.jsp</result>
        <result name="input" type="dispatcher">login3.jsp</result>
    </action>
</package>

Login3Action.java

package cn.xiyou.action;

import cn.xiyou.entity.User;

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

public class Login3Action extends ActionSupport implements ModelDriven<User> {
    private static final long serialVersionUID = -6730211106850626711L;

    private User user = new User();//一定要手动实例化(除非前台<input>标签的name属性写法为<input name="user.username">)

    @Override
    public User getModel() {
        return this.user;
    }

    @Override
    public String execute() throws Exception {
        if("admin".equals(user.getUsername()) && "1234".equals(user.getPassword())) {
            System.out.println("用户名和密码正确");
            return Action.SUCCESS;
        } else {
            System.out.println("用户名和密码错误");
            return Action.ERROR;
        }
    }

    /**
     * 对传来的数据进行检验
     */
    @Override
    public void validate() {
        if(!"admin".equals(user.getUsername())) {
            addFieldError("username_error", "用户名错误");
            System.out.println("用户名错误");
            return;
        }
        if(!"1234".equals(user.getPassword())) {
            addFieldError("password_error", "登录密码错误");
            System.out.println("登录密码错误");
        }
    }

    public User getUser() {
        return user;
    }

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

}

login3_success.jsp

<h1><span style="color: green;">${user.username }</span></h1> 登录成功!

四、公共实体类

package cn.xiyou.action;

import cn.xiyou.entity.User;

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

public class Login3Action extends ActionSupport implements ModelDriven<User> {
    private static final long serialVersionUID = -6730211106850626711L;

    private User user = new User();//一定要手动实例化(除非前台<input>标签的name属性写法为<input name="user.username">)

    @Override
    public User getModel() {
        return this.user;
    }

    @Override
    public String execute() throws Exception {
        if("admin".equals(user.getUsername()) && "1234".equals(user.getPassword())) {
            System.out.println("用户名和密码正确");
            return Action.SUCCESS;
        } else {
            System.out.println("用户名和密码错误");
            return Action.ERROR;
        }
    }

    /**
     * 对传来的数据进行检验
     */
    @Override
    public void validate() {
        if(!"admin".equals(user.getUsername())) {
            addFieldError("username_error", "用户名错误");
            System.out.println("用户名错误");
            return;
        }
        if(!"1234".equals(user.getPassword())) {
            addFieldError("password_error", "登录密码错误");
            System.out.println("登录密码错误");
        }
    }

    public User getUser() {
        return user;
    }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值