Action传值

Action实现数值传递主要有两种方式: 一是字段驱动方式(Field-driven); 二是模型驱动方式(Model-driven)。

1 字段驱动方式

在Action中定义各种Java基本类型的字段,这些字段与表单数据相对应,并利用这些字段进行数据传递。

Action代码:

package com.user;
public class UserAction {
    private String username;
    private String password;
    public String getUsername() {
        return this.password;
    }
    public String getPassword() {
        return this.password;
    }
    public String setUsername(String username) {
        this.username = username;
    }
    public String setPassword(String password) {
        this.password = password;
    }
    public String execute() throws Exception {
       if (username.equals("admin") && password.equals("123456") {
           return SUCCESS;
       } else {
           return ERROR;
       }
    }
}

Login.jsp代码:

<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
    <head>
        <title>登录页面</title>
    </head>
    <body>
        <center>
            <s:from action="loginUser">
                <s:textfield name="username" label="用户名"/>
                <s:textfield name="password" label="口令"/>
                <s:submit value="确定"/>
                <s:reset value="重置"/>
            </s:from>
        </center>
    </body>
</html>
success.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>成功页面</title>
    </head>
    <body>
        <p align="center">
            <s:property vlaue="username"/>登录成功!
        </p>
    </body>
</html>
error.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>失败页面</title>
    </head>
    <body>
        <p align="center">
            <s:property vlaue="username"/>登录失败!
        </p>
    </body>
</html>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="com" extends="struts-default">
		<action name="loginUser" class="com.user.UserAction">
			<result name="success">/jsp/success.jsp</result>
			<result name="error">/jsp/error.jsp</result>
		</action>
	</package>
</struts>

在userAction中定义了两个字符串类型字段“username”和“password”,这两个字段分别与登录页面中的“用户名”和“口令”两个表单域相对应。在实际应用中,登录页面所提交的表单数据被各自映射到对应Action中的字段。由此Action获得了外界传入的数据。

2 模型驱动方式

模型驱动是指通过JavaBean模型进行数据传递。采用这种方式,JavaBean所封装的属性与表单数据的属性一一对应,JavaBean将成为数据传递的载体。

User.java

package com.user;
public class User {
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public String getPassword() {
		return password;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}
UserAction.java

package com.user;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
	private User user;
	public User getUser() {
	return user
	}
	public void setUser(User user) {
		this.user = user;
	}
	public String execute() throws Exception {
		if (user.username.equals("admin") && user.password.equals("123456")) {
			return SUCCESS;
		} else {
			return ERROR;
		]
	}
}
login.jsp

<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
    <head>
        <title>登录页面</title>
    </head>
    <body>
        <center>
            <s:from action="loginUser">
                <s:textfield name="user.username" label="用户名"/>
                <s:textfield name="user.password" label="口令"/>
                <s:submit value="确定"/>
                <s:reset value="重置"/>
            </s:from>
        </center>
    </body>
</html>
success.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>成功页面</title>
    </head>
    <body>
        <p align="center">
            <s:property vlaue="user.username"/>登录成功!
        </p>
    </body>
</html>
JSP页面是负责取值的,取值的格式必须为“模型对象名.属性名”;JSP页面是负责传值的,那么传值的格式可以为“模型对象名.属性名”,也可以直接是“属性名”。





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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值