struts2-(2)---通过login示例解析几个struts.xml配置

本文通过用户登录示例解析Struts2配置文件struts.xml的关键元素。介绍如何自定义Action处理表单提交,配置不同方法及结果页面映射。

这里将通过用户登录示例来解析struts.xml中的几个配置。这个配置包括:

1.自定义一个action

2.指定调用action的方法

3.表单提交时,如何自动封装表单数据到实体对象。

4.action后如何调转到回显页面


编写一个自定义的action,需注意一下三点:

首先:用户自己编写一个action,此action实现了Action接口。即实现了此接口的exectue方法,当然用户编写一个action,此action继承ActionSupport类。

其次,当自定义了一个action类是,此类需要为表单提交数据的每一项准备一个field,同时有其对应的get和set方法。

还有一点,此action必须有一个无参构造函数。

下面是一个实现了Action接口的action示例:

package cn.itcast.action;

import cn.itcast.domain.User;
import cn.itcast.service.UserService;

import com.opensymphony.xwork2.Action;

public class LoginAction implements Action {
	private User user;  //为表单数据提供一个feild
	
	public User getUser() {
		return user;
	}

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

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		UserService service = new UserService();
		if(service.userValidator(user)>0){
			return SUCCESS;
		}else{
			return ERROR;
		}
	}
	
	public String del() throws Exception {
		// TODO Auto-generated method stub
		UserService service = new UserService();
		if(service.userValidator(user)>0){
			return ERROR;
		}else{
			return SUCCESS;
		}
	}
}
用户提交数据后,jsp页面编写如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  
  <body>
    <form action="loginAction" method="post">
    	用户名:<input type="text" name="user.name" /><br />
    	密码: <input type="password" name="user.password" /><br />
    	<input type="submit" value="注册" /> 
    </form>
  </body>
</html>
此jsp将会将输入的name和password填充到user实体对象的对应属性上。同时将此表单数据提交给loginAction去处理。下面是对应的struts.xml配置文件。

<struts>
	<!-- 指定devMode为开发模式,即每修改一处配置后,无须重新发布web应用,即可生效 -->
    <constant name="struts.devMode" value="true" />
	
	<!-- namespace指定命名空间 -->
    <package name="default" namespace="/" extends="struts-default">
    	<action name="loginAction" 
    		class="cn.itcast.action.LoginAction"
    		method="del">
            <result name="success">
                /WEB-INF/jsp/success.jsp
            </result>
            <result name="error">
            	/WEB-INF/jsp/error.jsp
            </result>
        </action>
		<!-- 它是一个通用的action,*为通配符,当从浏览器地址栏解析uri地址,并通过namespace解析
			获取到了对应的action名称后,将在struts中查询对应的配置。找到后将调转到result指定的
			显示页面。 -->
        <action name="*Action">
            <result>
                /WEB-INF/jsp/{1}.jsp
            </result>
        </action>
    </package>


    <!-- Add packages here -->

</struts>
此配置文件有几点需要说明的是:

第一,自定义一个action,需要在action标签中通过class来指定处理这个action的类(即指定自定的action来处理)

第二,通过action标签的method方法来指定处理这个action的方法,默认为execute。上面例子中指定了del方法。

第三,result标签通过name属性来指定调用不同的jsp回显页面。上面有两个result,一个为error对应的一个result,一个为success对应的result.当然后面还有一个一般匹配的action(在struts2中,同一个package中配置action有先后顺序,它依次匹配靠前的action,要是匹配到了,将不会使用后面的action,因此上例中,当LoginAction匹配到后,将会不调用下面的一般匹配的action)。

第四, 至于调用action那个result, 需要根据action中指定的方法(默认为exectue)回显的字符串。回显success,则是success标签。error,则是error标签。通常action回显有五种标签,LOGIN,INPUT,ERROR,SUCCESS,NONE。

下面是简单的流程图描述:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值