初学Struts2,先实践一个小的例子。
一、先建立一个工程,引入相应的包。
二、编写相应的前台jsp程序。使用表单发送给action。
三、编写相应的javabean程序。
四、在Struts的业务控制器Action中编写使用jsp表单和javabean来进行的一些操作。
五、在web.xml中编写ActionContextCleanUp和FilterDispatcher核心过滤器,以便由他们引用action
六、在struts.xml中配置Struts2的框架属性
如下
在struts.xml中定义package
七、在struts.xml中配置自定义拦截器
八、配置国际化消息
九、配置Struts2的自动检验配置文件:在Action类的相同路径下放置一个XML检验配置文件,并在该配置文件中定义表达各字段的校验规则,校验配置文件的命名遵循这样的格式:Action类名-Action别名-validation.xml,且如上所说要与类在同一包中;
十、编写相应的注册成功的返回界面
用strust2标签 ${对象名.属性名}
在jsp中访问Action里的对象属性
一、先建立一个工程,引入相应的包。
二、编写相应的前台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里的对象属性