十步走完一个小的Struts2实例

初学Struts2,先实践一个小的例子。
一、先建立一个工程,引入相应的包。
二、编写相应的前台jsp程序。使用表单发送给action。
<%@page contentType ="text/html; charset=gbk"%>
<%@taglib prefix = "s" uri = "/struts-tags"%>
<html>
	<head>
	<title>注册</title>
	<script type = "text/javascript" >
	function removeDefault(){
		with(event.srcElement){
			if(value == defaultValue){
				value ="";
			}	
		}
	}
	function remainValue(){
		with(event.srcElement){
			if(value==""){
				value = defaultValue;
			}
		}
	}
	</script>
	</head>
	<body>
		<form action = "register.action" method = "post">
		<s:fielderror/>
		<table>
			<tr >
				<td colspan = 2 align = "center">
					注册界面
				</td>
			</tr>
			<tr>
				<td>用户名:</td>
				<td><input type = "text" value = "请输入用户名" name = "user.userName"onfocus = "removeDefault()" onblur = "remainValue()"></td>
			</tr>
			<tr>
				<td>密码:</td>
				<td><input type = "password"  name = "user.passWord" onfocus = "removeDefault()" onblur = "remainValue()"></td>
			</tr>
			<tr>
				<td>确认密码:</td>
				<td><input type = "password"  name = "user.rePassWord" onfocus = "removeDefault()" onblur = "remainValue()"></td>
			</tr>
			<tr>
				<td>
					<s:submit value = "注册" align = "center"></s:submit>
				</td>
			</tr>
			<tr>
				<td>
					<s:reset value = "重置" align ="center"></s:reset>
				</td>
			</tr>
		</table>
		</form>
	</body>
</html>

三、编写相应的javabean程序。
package com.strutsTest.bean;
public class UserBean {
	String userName = "";
	String passWord = "";
	String rePassWord = "";
	public UserBean(){
		
	}
	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 getRePassWord() {
		return rePassWord;
	}
	public void setRePassWord(String rePassWord) {
		this.rePassWord = rePassWord;
	}
	
}


四、在Struts的业务控制器Action中编写使用jsp表单和javabean来进行的一些操作。

package com.strutsTest.struts.action;
import com.opensymphony.xwork2.ActionSupport;
import com.strutsTest.bean.*;
import javax.servlet.http.HttpServletRequest; 
import org.apache.struts2.ServletActionContext; 
public class MyStrutsTest extends ActionSupport{
	private UserBean user;
	public String execute(){
		if(!user.getPassWord().equals(user.getRePassWord())){
			this.addFieldError("password", "请输入相同的密码值");
			return "input";
		}else{
			HttpServletRequest request = ServletActionContext.getRequest();
			request.setAttribute("user", user);
			return SUCCESS;
		}
	}
	public UserBean getUser() {
		return user;
	}
	public void setUser(UserBean user) {
		this.user = user;
	}
	
	
}

五、在web.xml中编写ActionContextCleanUp和FilterDispatcher核心过滤器,以便由他们引用action
<filter>
  <filter-name>struts-cleanup</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
 </filter>
 <filter>
  <filter-name>struts</filter-name>
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>struts-cleanup</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>struts</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>


六、在struts.xml中配置Struts2的框架属性
如下
        <?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">
        <!-- 设置Web应用的默认编码集为gbk -->
	<constant name = "struts.i18n.resources" value ="gbk" />
	<!-- 设置Web应用的默认地区为zh_CN	 -->
	<constant name = "struts.locale" value ="zh_CN" />
	<!-- 设置struts2应用的国际化资源文件,多个文件中间可用逗号分隔-->
	<constant name="struts.custom.i18n.resources" value="messageResource"/>
	<!-- 设置Struts应用是否处于开发模式,通常在开发调试阶段设为true,正式上线后设为false -->
	<constant name ="struts.devMode" value = "true"/>
	<!-- 设置Struts2的默认主题为simple -->
	<constant name = "struts.ui.theme" value ="simple"/>

在struts.xml中定义package
<!--继承struts-default包并定义user包,并在该包中配置全局result与全局异常映射-->
	<package name = "user" extends="struts-default">
		<action name ="register" class ="com.strutsTest.struts.action.MyStrutsActionTest">
		<result name="success">/welcome.jsp</result>   
        <result name="input">/register.jsp</result>   
		</action>
	</package>


七、在struts.xml中配置自定义拦截器
八、配置国际化消息
九、配置Struts2的自动检验配置文件:在Action类的相同路径下放置一个XML检验配置文件,并在该配置文件中定义表达各字段的校验规则,校验配置文件的命名遵循这样的格式:Action类名-Action别名-validation.xml,且如上所说要与类在同一包中;

<validators>   
	<field name="user.userName">   
    	<!-- 验证字符串不能为空 -->   
    	<field-validator type="requiredstring">   
         	  <!-- 去空格 -->   
     		<param name="trim">true</param>   
          		<!-- 错误提示信息 -->   
     		<message>用户名不能为空</message>   
    	</field-validator>
    	<field-validator type="stringlength"> 
    		<param name = "minLength">2</param>
    		<param name = "maxLength">20</param>
    		<message>用户名长度应该在2到18字符之间</message>
    	</field-validator>
 	</field>
 	
 	<field name = "user.passWord">
 		<field-validator type = "requiredstring">
 			<param name = "trim">true</param>
 			<message>密码不能为空</message>
 		</field-validator>>
 		<field-validator type ="stringlength">
 			<param name = "minLength">6</param>
 			<param name = "maxLength">18</param>
 		</field-validator>
 	</field>
 </validators> 
       

十、编写相应的注册成功的返回界面
congratulations!${user.userName} <br>  

用strust2标签 ${对象名.属性名}
在jsp中访问Action里的对象属性

猜你喜欢

转载自hanazawakana.iteye.com/blog/1581061
今日推荐