一、先建立一个工程,引入相应的包。
二、编写相应的前台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里的对象属性