首页 新闻 论坛 问答 博客 招聘 更多 ▼
专栏 文摘 圈子 搜索 您还未登录 ! 我的应用 登录 注册 hhr-michael永久域名 http://hhr-michael.javaeye.com.struts2+hibernate3+spring2读书笔记5(类 ... | 用Java简单的读取pdf文件中的数据(转) 2010-05-20
struts2+hibernate3+spring2读书笔记4(数据校验器)
文章分类:Java编程
最近买了谢星星(阿蜜果)的企业应用架构设计-Struts2+Hibernate3+Spring2,想更好地学习与管理资料,现在在博客上写读书笔记,呵呵!
第5章 数据校验器
一.使用重写validate()方法进行手动校验
实例需求:Struts2中可通过在Action中重写ActionSupport类的validate()方法来完成Action中各方法的难证。
1. 建立工程(可参考前几章的建立,方法类似,需在web.xml文件中配置Struts2的FilterDispatcher)
2. 编写用户信息的pojo类:User.java 代码如下:
Java代码
1. package amigo.struts.validation;
2.
3.import java.util.Date;
4.
5./*
6. * 用户信息的pojo类
7. * */
8.public class User {
9. /**用户名*/
10. private String username;
11.
12. /**密码*/
13. private String password;
14.
15. /**性别*/
16. private int gender;
17.
18. /**年龄*/
19. private int age;
20.
21. /**生日*/
22. private Date birthDate;
23.
24. /**联系电话*/
25. private String tel;
26.
27. /**Email*/
28. private String email;
29.
30. /**个人首页*/
31. private String url;
32.
33. public String getUsername() {
34. return username;
35. }
36.
37. public void setUsername(String username) {
38. this.username = username;
39. }
40.
41. public String getPassword() {
42. return password;
43. }
44.
45. public void setPassword(String password) {
46. this.password = password;
47. }
48.
49. public int getGender() {
50. return gender;
51. }
52.
53. public void setGender(int gender) {
54. this.gender = gender;
55. }
56.
57. public int getAge() {
58. return age;
59. }
60.
61. public void setAge(int age) {
62. this.age = age;
63. }
64.
65. public Date getBirthDate() {
66. return birthDate;
67. }
68.
69. public void setBirthDate(Date birthDate) {
70. this.birthDate = birthDate;
71. }
72.
73. public String getTel() {
74. return tel;
75. }
76.
77. public void setTel(String tel) {
78. this.tel = tel;
79. }
80.
81. public String getEmail() {
82. return email;
83. }
84.
85. public void setEmail(String email) {
86. this.email = email;
87. }
88.
89. public String getUrl() {
90. return url;
91. }
92.
93. public void setUrl(String url) {
94. this.url = url;
95. }
96.}
package amigo.struts.validation;
import java.util.Date;
/*
* 用户信息的pojo类
* */
public class User {
/**用户名*/
private String username;
/**密码*/
private String password;
/**性别*/
private int gender;
/**年龄*/
private int age;
/**生日*/
private Date birthDate;
/**联系电话*/
private String tel;
/**Email*/
private String email;
/**个人首页*/
private String url;
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 int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
3. 编写注册的Action:RegAction.java 代码如下:
Java代码
1.package amigo.struts.validation;
2.
3.import java.util.regex.Pattern;
4.
5.import javax.servlet.http.HttpServletRequest;
6.
7.import org.apache.struts2.interceptor.ServletRequestAware;
8.
9.import com.opensymphony.xwork2.ActionSupport;
10./*
11. * 使用validate()完成注册验证
12. * */
13.public class RegAction extends ActionSupport implements ServletRequestAware {
14. private User user;
15. private HttpServletRequest request;
16. public User getUser() {
17. return user;
18. }
19. public void setUser(User user) {
20. this.user = user;
21. }
22. public HttpServletRequest getServletRequest() {
23. return request;
24. }
25. public void setServletRequest(HttpServletRequest request) {
26. this.request = request;
27. }
28. /*
29. * 重写validate()方法实现验证
30. * */
31.
32. public void validate(){
33. //非空验证与输入合法验证
34. if(user.getUsername()==null||"".equals(user.getUsername().trim())){
35. this.addFieldError("user.username","用户名不能为空");
36. }else if(user.getUsername()!=null&&!Pattern.matches("//w{5,50}",user.getUsername().trim())){
37. this.addFieldError("user.username","用户名输入不合法,必须为长度为5-50的字母或数字");
38. }
39. if(user.getPassword()==null||"".equals(user.getPassword().trim()))
40. {
41. this.addFieldError("user.password","密码不能为空");
42. }else if(user.getPassword()!=null&&!Pattern.matches("//w{5,50}", user.getPassword().trim())){
43. this.addFieldError("user.password","密码输入不合法,必须为长度为5-50的字母或数字");
44.
45. }
46. if(user.getAge()<0||user.getAge()>130){
47. this.addFieldError("user.age","年龄不合法");
48. }
49.
50. }
51. public String execute(){
52. return null;
53.
54. }
55.}
package amigo.struts.validation;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
/*
* 使用validate()完成注册验证
* */
public class RegAction extends ActionSupport implements ServletRequestAware {
private User user;
private HttpServletRequest request;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public HttpServletRequest getServletRequest() {
return request;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
/*
* 重写validate()方法实现验证
* */
public void validate(){
//非空验证与输入合法验证
if(user.getUsername()==null||"".equals(user.getUsername().trim())){
this.addFieldError("user.username","用户名不能为空");
}else if(user.getUsername()!=null&&!Pattern.matches("//w{5,50}",user.getUsername().trim())){
this.addFieldError("user.username","用户名输入不合法,必须为长度为5-50的字母或数字");
}
if(user.getPassword()==null||"".equals(user.getPassword().trim()))
{
this.addFieldError("user.password","密码不能为空");
}else if(user.getPassword()!=null&&!Pattern.matches("//w{5,50}", user.getPassword().trim())){
this.addFieldError("user.password","密码输入不合法,必须为长度为5-50的字母或数字");
}
if(user.getAge()<0||user.getAge()>130){
this.addFieldError("user.age","年龄不合法");
}
}
public String execute(){
return null;
}
} 4.编写注册页面:reg.jsp 代码如下:
Java代码
1.<%@ page language="java" contentType="text/html; charset=UTF-8"
2. pageEncoding="UTF-8"%>
3.<%@taglib prefix="s" uri="/struts-tags"%>
4.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5.<html>
6.<head>
7.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
8.<title>用户注册</title>
9.</head>
10.<body>
11.<s:form action="reg">
12.<s:textfield name="user.username" label="用户名"/>
13.<s:password name="user.password" label="密码"></s:password>
14.<s:select label="性别" name="user.gender"
15.list="#{'1':'男','0':'女'}"
16.listKey="key"
17.listValue="value" value="0"/>
18.
19.<s:textfield name="user.age" label="年龄"></s:textfield>
20.<s:textfield name="user.birthDate" label="出生日期"></s:textfield>
21.<s:textfield name="user.tel" label="联系电话"></s:textfield>
22.<s:textfield name="user.email" label="Email"></s:textfield>
23.<s:textfield name="user.url" label="个人首页"></s:textfield>
24.<s:submit value="提交"></s:submit>
25.</s:form>
26.</body>
27.</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户注册</title>
</head>
<body>
<s:form action="reg">
<s:textfield name="user.username" label="用户名"/>
<s:password name="user.password" label="密码"></s:password>
<s:select label="性别" name="user.gender"
list="#{'1':'男','0':'女'}"
listKey="key"
listValue="value" value="0"/>
<s:textfield name="user.age" label="年龄"></s:textfield>
<s:textfield name="user.birthDate" label="出生日期"></s:textfield>
<s:textfield name="user.tel" label="联系电话"></s:textfield>
<s:textfield name="user.email" label="Email"></s:textfield>
<s:textfield name="user.url" label="个人首页"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>5.配置struts.xml文件 代码如下:
Java代码
1.<!DOCTYPE struts PUBLIC
2."-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
3."http://struts.apache.org/dtds/struts-2.0.dtd">
4.
5.<struts>
6. <include file="struts-default.xml"/>
7. <package name="amigo" extends="struts-default">
8. <action name="reg" class="amigo.struts.validation.RegAction">
9. <result name="input">/validation/reg.jsp</result>
10. </action>
11. </package>
12.</struts>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<package name="amigo" extends="struts-default">
<action name="reg" class="amigo.struts.validation.RegAction">
<result name="input">/validation/reg.jsp</result>
</action>
</package>
</struts>以上五步后,就完成了重写validate()方法进行手动校验了!呵呵!
二.使用重写validateXxx()方法进行手动校验(这个例子主要是实现在同一个action中实现不同的验证方法)
1. 编写用户信息的Action: UserAction.java 具体代码如下:
Java代码
1. package amigo.struts.validation;
2.
3.import java.util.regex.Pattern;
4.
5.import com.opensymphony.xwork2.ActionSupport;
6.
7./**
8. * 使用validateXxx()方法完成注册验证
9. * */
10.
11.public class UserAction extends ActionSupport {
12. private User user;
13.
14. public User getUser() {
15. return user;
16. }
17.
18. public void setUser(User user) {
19. this.user = user;
20. }
21. /**
22. * 验证用户信息注册表单
23. * */
24. public void validateReg(){
25. //非空验证与输入合法验证
26. if(user.getUsername()==null||"".equals(user.getUsername().trim())){
27. this.addFieldError("user.username","用户名不能为空");
28. }else if(user.getUsername()!=null&&!Pattern.matches("//w{5,50}",user.getUsername().trim())){
29. this.addFieldError("user.username","用户名输入不合法,必须为长度为5-50的字母或数字");
30. }
31. if(user.getPassword()==null||"".equals(user.getPassword().trim()))
32. {
33. this.addFieldError("user.password","密码不能为空");
34. }else if(user.getPassword()!=null&&!Pattern.matches("//w{5,50}", user.getPassword().trim())){
35. this.addFieldError("user.password","密码输入不合法,必须为长度为5-50的字母或数字");
36.
37. }
38. if(user.getAge()<0||user.getAge()>130){
39. this.addFieldError("user.age","年龄不合法");
40. }
41. }
42. public void validateLogin(){
43. //非空验证与输入合法验证
44. if(user.getUsername()==null||"".equals(user.getUsername().trim())){
45. this.addFieldError("user.username", "用户名不能为空!");
46. }
47. if(user.getPassword()==null||"".equals(user.getPassword().trim())){
48. this.addFieldError("user.password", "密码不能为空!");
49. }
50.
51. }
52. /**
53. * 用户完成注册
54. * */
55. public String reg(){
56. //实现代码省略
57. return null;
58. }
59.
60. public String login(){
61. //实现代码省略
62. return null;
63. }
64. public String execute(){
65. return null;
66. }
67.
68.}
package amigo.struts.validation;
import java.util.regex.Pattern;
import com.opensymphony.xwork2.ActionSupport;
/**
* 使用validateXxx()方法完成注册验证
* */
public class UserAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
/**
* 验证用户信息注册表单
* */
public void validateReg(){
//非空验证与输入合法验证
if(user.getUsername()==null||"".equals(user.getUsername().trim())){
this.addFieldError("user.username","用户名不能为空");
}else if(user.getUsername()!=null&&!Pattern.matches("//w{5,50}",user.getUsername().trim())){
this.addFieldError("user.username","用户名输入不合法,必须为长度为5-50的字母或数字");
}
if(user.getPassword()==null||"".equals(user.getPassword().trim()))
{
this.addFieldError("user.password","密码不能为空");
}else if(user.getPassword()!=null&&!Pattern.matches("//w{5,50}", user.getPassword().trim())){
this.addFieldError("user.password","密码输入不合法,必须为长度为5-50的字母或数字");
}
if(user.getAge()<0||user.getAge()>130){
this.addFieldError("user.age","年龄不合法");
}
}
public void validateLogin(){
//非空验证与输入合法验证
if(user.getUsername()==null||"".equals(user.getUsername().trim())){
this.addFieldError("user.username", "用户名不能为空!");
}
if(user.getPassword()==null||"".equals(user.getPassword().trim())){
this.addFieldError("user.password", "密码不能为空!");
}
}
/**
* 用户完成注册
* */
public String reg(){
//实现代码省略
return null;
}
public String login(){
//实现代码省略
return null;
}
public String execute(){
return null;
}
}
2. 编写注册页面: validateXxxReg.jsp 具体代码如下:
Java代码
1. <%@ page language="java" contentType="text/html; charset=UTF-8"
2. pageEncoding="UTF-8"%>
3.<%@taglib prefix="s" uri="/struts-tags"%>
4.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5.<html>
6.<head>
7.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
8.<title>用户注册</title>
9.</head>
10.<body>
11.<s:form action="userReg">
12.<s:textfield name="user.username" label="用户名"/>
13.<s:password name="user.password" label="密码"></s:password>
14.<s:select label="性别" name="user.gender"
15.list="#{'1':'男','0':'女'}"
16.listKey="key"
17.listValue="value" value="0"/>
18.
19.<s:textfield name="user.age" label="年龄"></s:textfield>
20.<s:textfield name="user.birthDate" label="出生日期"></s:textfield>
21.<s:textfield name="user.tel" label="联系电话"></s:textfield>
22.<s:textfield name="user.email" label="Email"></s:textfield>
23.<s:textfield name="user.url" label="个人首页"></s:textfield>
24.<s:submit value="提交"></s:submit>
25.</s:form>
26.</body>
27.</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户注册</title>
</head>
<body>
<s:form action="userReg">
<s:textfield name="user.username" label="用户名"/>
<s:password name="user.password" label="密码"></s:password>
<s:select label="性别" name="user.gender"
list="#{'1':'男','0':'女'}"
listKey="key"
listValue="value" value="0"/>
<s:textfield name="user.age" label="年龄"></s:textfield>
<s:textfield name="user.birthDate" label="出生日期"></s:textfield>
<s:textfield name="user.tel" label="联系电话"></s:textfield>
<s:textfield name="user.email" label="Email"></s:textfield>
<s:textfield name="user.url" label="个人首页"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>3. 编写登录页面:validateXxxLogin.jsp 具体代码如下:
Java代码
1.<%@ page language="java" contentType="text/html; charset=UTF-8"
2. pageEncoding="UTF-8"%>
3.<%@ taglib prefix="s" uri="/struts-tags" %>
4.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5.<html>
6.<head>
7.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
8.<title>用户登录</title>
9.</head>
10.<body>
11. <s:form action="userLogin">
12. <s:textfield name="user.username" label="用户名:"></s:textfield>
13. <s:password name="user.password" label="密码:"></s:password>
14. <s:submit></s:submit>
15. </s:form>
16.</body>
17.</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户登录</title>
</head>
<body>
<s:form action="userLogin">
<s:textfield name="user.username" label="用户名:"></s:textfield>
<s:password name="user.password" label="密码:"></s:password>
<s:submit></s:submit>
</s:form>
</body>
</html>4. 配置 sturts.xml
Java代码
1.<!DOCTYPE struts PUBLIC
2."-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
3."http://struts.apache.org/dtds/struts-2.0.dtd">
4.
5.<struts>
6. <include file="struts-default.xml"/>
7. <package name="amigo" extends="struts-default">
8. <action name="reg" class="amigo.struts.validation.RegAction">
9. <result name="input">/validation/reg.jsp</result>
10. </action>
11.
12. <action name="userReg" class="amigo.struts.validation.UserAction" method="reg">
13. <result name="input">/validation/validateXxxReg.jsp</result>
14. </action>
15.
16. <action name="userLogin" class="amigo.struts.validation.UserAction" method="login">
17. <result name="input">/validation/validateXxxLogin.jsp</result>
18. </action>
19.
20. </package>
21.</struts>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<package name="amigo" extends="struts-default">
<action name="reg" class="amigo.struts.validation.RegAction">
<result name="input">/validation/reg.jsp</result>
</action>
<action name="userReg" class="amigo.struts.validation.UserAction" method="reg">
<result name="input">/validation/validateXxxReg.jsp</result>
</action>
<action name="userLogin" class="amigo.struts.validation.UserAction" method="login">
<result name="input">/validation/validateXxxLogin.jsp</result>
</action>
</package>
</struts>
以上四步后,就完成了重写validateXxx()方法进行手动校验了!呵呵!下面我们再来看看Struts2的验证框架。
三.使用Struts2的验证框架完成服务端校验
1.编写Action类:ValjFrameworkRegAction.java
Java代码
1. package amigo.struts.validation;
2.
3.import com.opensymphony.xwork2.ActionSupport;
4./**
5. * 使用Struts2的验证框架完成数据校验
6. * */
7.public class ValFrameworkRegAction extends ActionSupport {
8. private User user;
9.
10. public User getUser() {
11. return user;
12. }
13.
14. public void setUser(User user) {
15. this.user = user;
16. }
17. public String execute(){
18. return null;
19.
20. }
21.}
package amigo.struts.validation;
import com.opensymphony.xwork2.ActionSupport;
/**
* 使用Struts2的验证框架完成数据校验
* */
public class ValFrameworkRegAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute(){
return null;
}
}
2.编写验证文件: ValFrameworkRegAction-validsation.xml
Struts 2 中的每个Action都可以有一个验证文件,该验证文件与Action处于同目录中,命名格式为:Action的名称-validation.xml,其中“-validation.xml”是确定的,而“Action的名称”会根椐不同的Action而有所不同,本实例的验证文件的名称为:ValFrameworkRegAction-validsation.xml 具体内容如下:
Java代码
1. <?xml version="1.0" encoding="UTF-8"?>
2.<!DOCTYPE validators PUBLIC
3."-//OpenSymphony Group//XWork Validator 1.0.2//EN"
4."http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
5.<validators>
6.<field name="user.username">
7. <field-validator type="requiredstring">
8. <param name="trim">true</param>
9. <message>用户名不能为空</message>
10. </field-validator>
11. <field-validator type="regex">
12. <param name="expression"><![CDATA[(/w{5,50})]]></param>
13. <message>用户名输入不合法,必须为长度为5-50之间的字母或数字</message>
14. </field-validator>
15.
16.</field>
17.
18.<field name="user.password">
19. <field-validator type="requiredstring">
20. <param name="trim">true</param>
21. <message>密码不能为空</message>
22. </field-validator>
23. <field-validator type="regex">
24. <param name="expression"><![CDATA[(/w{5,50})]]></param>
25. <message>密码输入不合法,必须为长度为5-50之间的字母或数字</message>
26. </field-validator>
27.</field>
28.
29.<field name="user.age">
30. <field-validator type="int">
31. <param name="min">1</param>
32. <param name="max">130</param>
33. <message>年龄输入不合法</message>
34. </field-validator>
35.</field>
36.
37.</validators>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="user.username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(/w{5,50})]]></param>
<message>用户名输入不合法,必须为长度为5-50之间的字母或数字</message>
</field-validator>
</field>
<field name="user.password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>密码不能为空</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(/w{5,50})]]></param>
<message>密码输入不合法,必须为长度为5-50之间的字母或数字</message>
</field-validator>
</field>
<field name="user.age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">130</param>
<message>年龄输入不合法</message>
</field-validator>
</field>
</validators>3. 编写注册页面:valFrameworkReg.jsp
Java代码
1.<%@ page language="java" contentType="text/html; charset=UTF-8"
2. pageEncoding="UTF-8"%>
3.<%@taglib prefix="s" uri="/struts-tags"%>
4.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5.<html>
6.<head>
7.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
8.<title>用户注册</title>
9.</head>
10.<body>
11.<s:form action="valFrameworkReg" >
12.<s:textfield name="user.username" label="用户名"/>
13.<s:password name="user.password" label="密码"></s:password>
14.<s:select label="性别" name="user.gender"
15.list="#{'1':'男','0':'女'}"
16.listKey="key"
17.listValue="value" value="0"/>
18.
19.<s:textfield name="user.age" label="年龄"></s:textfield>
20.<s:textfield name="user.birthDate" label="出生日期"></s:textfield>
21.<s:textfield name="user.tel" label="联系电话"></s:textfield>
22.<s:textfield name="user.email" label="Email"></s:textfield>
23.<s:textfield name="user.url" label="个人首页"></s:textfield>
24.<s:submit value="提交"></s:submit>
25.</s:form>
26.</body>
27.</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户注册</title>
</head>
<body>
<s:form action="valFrameworkReg" >
<s:textfield name="user.username" label="用户名"/>
<s:password name="user.password" label="密码"></s:password>
<s:select label="性别" name="user.gender"
list="#{'1':'男','0':'女'}"
listKey="key"
listValue="value" value="0"/>
<s:textfield name="user.age" label="年龄"></s:textfield>
<s:textfield name="user.birthDate" label="出生日期"></s:textfield>
<s:textfield name="user.tel" label="联系电话"></s:textfield>
<s:textfield name="user.email" label="Email"></s:textfield>
<s:textfield name="user.url" label="个人首页"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>
4.配置struts.xml,添加的信息如下:
Java代码
1. <action name="valFrameworkReg" class="amigo.struts.validation.ValFrameworkRegAction">
2.<result name="input">/validation/valFrameworkReg.jsp</result>
3.</action>
<action name="valFrameworkReg" class="amigo.struts.validation.ValFrameworkRegAction">
<result name="input">/validation/valFrameworkReg.jsp</result>
</action>以上四步后,就完成了Struts2的验证框架服务端的校验了!呵呵!下面我们再来看看客户端的校验。
四.使用Struts2的验证框架完成客户端校验
在Strut2中,进行客户端校验将由框架在页面中自动生成javascript代码,在提交时调用自动生成的javascript代码中的函数:validateForm_Action 名称(),要实现客户端校验比较简单,只要在jsp页面的form的validate属性设为true就可以了。如下:
Java代码
1.<s:form action=”valFrameworkReg” validate=”true”></s:form>
<s:form action=”valFrameworkReg” validate=”true”></s:form>
五.国际化校验的提示信息
主要是实现验证信息的国际化:步骤如下:
1. 在src目录中创建校验提示信息的配置文件
Java代码
1.validationMessages.properties
2.
3.user.username.requried=用户名不能为空
4.user.username.regex=用户名输入不合法,必须为长度为5-50之间的字母或数字
5.user.password.requried=密码不能为空
6.user.password.regex=密码输入不合法,必须为长度为5-50之间的字母或数字
7.user.age=年龄必须在${min}和${max}}之间!
8.
9.
10. validationMessages_zh_CN.properties
11. user.username.requried=/u7528/u6237/u540d/u4e0d/u80fd/u4e3a/u7a7a
12.user.username.regex=/u7528/u6237/u540d/u8f93/u5165/u4e0d/u5408/u6cd5/uff0c/u5fc5/u987b/u4e3a/u957f/u5ea6/u4e3a5-50/u4e4b/u95f4/u7684/u5b57/u6bcd/u6216/u6570/u5b57
13.user.password.requried=/u5bc6/u7801/u4e0d/u80fd/u4e3a/u7a7a
14.user.password.regex=/u5bc6/u7801/u8f93/u5165/u4e0d/u5408/u6cd5/uff0c/u5fc5/u987b/u4e3a/u957f/u5ea6/u4e3a5-50/u4e4b/u95f4/u7684/u5b57/u6bcd/u6216/u6570/u5b57
15.user.age=/u5e74/u9f84/u5fc5/u987b/u5728${min}/u548c${max}}/u4e4b/u95f4/uff01
validationMessages.properties
user.username.requried=用户名不能为空
user.username.regex=用户名输入不合法,必须为长度为5-50之间的字母或数字
user.password.requried=密码不能为空
user.password.regex=密码输入不合法,必须为长度为5-50之间的字母或数字
user.age=年龄必须在${min}和${max}}之间!
validationMessages_zh_CN.properties
user.username.requried=/u7528/u6237/u540d/u4e0d/u80fd/u4e3a/u7a7a
user.username.regex=/u7528/u6237/u540d/u8f93/u5165/u4e0d/u5408/u6cd5/uff0c/u5fc5/u987b/u4e3a/u957f/u5ea6/u4e3a5-50/u4e4b/u95f4/u7684/u5b57/u6bcd/u6216/u6570/u5b57
user.password.requried=/u5bc6/u7801/u4e0d/u80fd/u4e3a/u7a7a
user.password.regex=/u5bc6/u7801/u8f93/u5165/u4e0d/u5408/u6cd5/uff0c/u5fc5/u987b/u4e3a/u957f/u5ea6/u4e3a5-50/u4e4b/u95f4/u7684/u5b57/u6bcd/u6216/u6570/u5b57
user.age=/u5e74/u9f84/u5fc5/u987b/u5728${min}/u548c${max}}/u4e4b/u95f4/uff01
2.修改struts.xml文件
在struts的头部添加如下代码(注是在struts的标签内添加):
Java代码
1.<constant name="struts.custom.i18n.resources" value="validationMessages"></constant>
2. <constant name="struts.i18n.encoding" value="UTF-8"></constant>
<constant name="struts.custom.i18n.resources" value="validationMessages"></constant>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>3. 修改校验文件 valFrameworkRegAction-validation.xml 内容如下:
Java代码
1.<?xml version="1.0" encoding="UTF-8"?>
2.<!DOCTYPE validators PUBLIC
3."-//OpenSymphony Group//XWork Validator 1.0.2//EN"
4."http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
5.<validators>
6.<field name="user.username">
7. <field-validator type="requiredstring">
8. <param name="trim">true</param>
9.<!--用了国际化,user.username.requried的内容是:用户名不能为空 -->
10. <message>${getText("user.username.requried")}</message>
11. </field-validator>
12. <field-validator type="regex">
13. <param name="expression"><![CDATA[(/w{5,50})]]></param>
14.<!--用了国际化,user.username.regex内容是:用户名输入不合法,必须为长度为5-50之间的字母或数字 -->
15. <message>${getText("user.username.regex")}</message>
16. </field-validator>
17.
18.</field>
19.
20.<field name="user.password">
21. <field-validator type="requiredstring">
22.
23. <param name="trim">true</param>
24.<!--用了国际化,user.password.requried的内容是:密码不能为空 -->
25. <message>${getText("user.password.requried")}</message>
26. </field-validator>
27.
28. <field-validator type="regex">
29. <param name="expression"><![CDATA[(/w{5,50})]]></param>
30.<!--用了国际化,user.password.regex的内容是:密码输入不合法,必须为长度为5-50之间的字母或数字 -->
31. <message>${getText("user.password.regex")}</message>
32. </field-validator>
33.</field>
34.
35.<field name="user.age">
36. <field-validator type="int">
37. <param name="min">1</param>
38. <param name="max">130</param>
39. <!--user.age的内容是:年龄输入不合法 -->
40. <message>${getText("user.age")}</message>
41.
42. </field-validator>
43.</field>
44.
45.</validators>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="user.username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<!--用了国际化,user.username.requried的内容是:用户名不能为空 -->
<message>${getText("user.username.requried")}</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(/w{5,50})]]></param>
<!--用了国际化,user.username.regex内容是:用户名输入不合法,必须为长度为5-50之间的字母或数字 -->
<message>${getText("user.username.regex")}</message>
</field-validator>
</field>
<field name="user.password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<!--用了国际化,user.password.requried的内容是:密码不能为空 -->
<message>${getText("user.password.requried")}</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(/w{5,50})]]></param>
<!--用了国际化,user.password.regex的内容是:密码输入不合法,必须为长度为5-50之间的字母或数字 -->
<message>${getText("user.password.regex")}</message>
</field-validator>
</field>
<field name="user.age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">130</param>
<!--user.age的内容是:年龄输入不合法 -->
<message>${getText("user.age")}</message>
</field-validator>
</field>
</validators>
以上三步后,就完成了国际化的验证校验了!
六.常用内建的较验器
1. 必填字符串校验器requiredstring
Java代码
1.字段校验器
2. <field name="user.username">
3. <field-validator type="requiredstring">
4. <param name="trim">true</param>
5. <message>用户名不能为空</message>
6. </field-validator>
7.</field> 非字段校验器
8. <validator type=”requiredstring”>
9. <param name="fildname">user.name</param>
10. <param name=”trim”>true</param>
11. <message>用户名不能为空</message>
12.</validator>
字段校验器
<field name="user.username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>
</field> 非字段校验器
<validator type=”requiredstring”>
<param name="fildname">user.name</param>
<param name=”trim”>true</param>
<message>用户名不能为空</message>
</validator>2.整数范围校验器 int
filedName:用于非字段校验器,指定需要验证的属性名。
Min: 可选参数,用于指定整数最小值
Max:可选参数,用于指定最大值。
Java代码
1.字段校验器
2.<field name="user.age">
3. <field-validator type="int">
4. <param name="min">1</param>
5. <param name="max">130</param>
6. <message>年龄输入不合法</message>
7. </field-validator>
8.</field>
9.
10. 非字段校验器
11.
12. <validator type=”int”>
13. <param name="fildname"> user.age </param>
14. <param name=”min”>1</param>
15. <param name=”max”>130</param>
16. <message>年龄输入不合法</message>
17.</validator>
字段校验器
<field name="user.age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">130</param>
<message>年龄输入不合法</message>
</field-validator>
</field>
非字段校验器
<validator type=”int”>
<param name="fildname"> user.age </param>
<param name=”min”>1</param>
<param name=”max”>130</param>
<message>年龄输入不合法</message>
</validator>3.正则表达式校验器
Fieldname:非字段校验器具有该属性,指定Action属必名。
Expression:必填,指定正则表达式
caseSensitive:非必填,指定是否区分大小写,默认为true.
Java代码
1.字段校验器
2.<field name="user.username">
3.<field-validator type="regex">
4. <param name="expression"><![CDATA[(/w{5,50})]]></param>
5. <message>用户名输入不合法,必须为长度为5-50之间的字母或数字</message>
6. </field-validator>
7.</field>
8.
9.非字段校验器
10. <validator type=” regex”>
11. <param name="fildname"> user.username </param>
12. <param name=” expression”><![CDATA[(/w{5,50})]]></param>
13. <message>用户名输入不合法,必须为长度为5-50之间的字母或数字</message>
14.</validator>
字段校验器
<field name="user.username">
<field-validator type="regex">
<param name="expression"><![CDATA[(/w{5,50})]]></param>
<message>用户名输入不合法,必须为长度为5-50之间的字母或数字</message>
</field-validator>
</field>
非字段校验器
<validator type=” regex”>
<param name="fildname"> user.username </param>
<param name=” expression”><![CDATA[(/w{5,50})]]></param>
<message>用户名输入不合法,必须为长度为5-50之间的字母或数字</message>
</validator>
4.必填校验器
Java代码
1. 字段校验器
2. <field name="user.username">
3. <field-validator type="required">
4. <message>用户名不能为空</message>
5. </field-validator>
6.</field>
7.
8. 非字段校验器
9. <validator type=”required”>
10. <param name="fildname">user.name</param>
11. <message>用户名不能为空</message>
12.</validator>
字段校验器
<field name="user.username">
<field-validator type="required">
<message>用户名不能为空</message>
</field-validator>
</field>
非字段校验器
<validator type=”required”>
<param name="fildname">user.name</param>
<message>用户名不能为空</message>
</validator>
5.字符串度度校验器
Java代码
1. 字段校验器
2.
3.<field name=”user.username”>
4. <field-validator type=”stringlength”>
5.<param name=”minLength”>5</param>
6.<param name=”maxLength”>50</param>
7.<message>用户名长度必须在5-50之间</message>
8.</field-validator >
9.</field >
10.
11.非字段校验器
12.
13. < validator type=”stringlength”>
14.<param name=”fieldname”>user.username</param>
15.<param name=”minLength”>5</param>
16.<param name=”maxLength”>50</param>
17.<message>用户名长度必须在5-50之间</message>
18.</validator>
字段校验器
<field name=”user.username”>
<field-validator type=”stringlength”>
<param name=”minLength”>5</param>
<param name=”maxLength”>50</param>
<message>用户名长度必须在5-50之间</message>
</field-validator >
</field >
非字段校验器
< validator type=”stringlength”>
<param name=”fieldname”>user.username</param>
<param name=”minLength”>5</param>
<param name=”maxLength”>50</param>
<message>用户名长度必须在5-50之间</message>
</validator>
6.日期校验器
Java代码
1. 字段校验器
2. <field name="user.birthDate">
3. <field-validator type="date">
4. <param name="min">1850-01-01</param>
5. <param name="max">2015-07-20</param>
6. <message>出生日期输入不合法</message>
7. </field-validator>
8.</field>
9.
10.
11.非字段校验器
12. < validator type="date">
13. <param name="fieldname"> user.birthDate </param>
14. <param name="min">1850-01-01</param>
15. <param name="max">2015-07-20</param>
16. <message>出生日期输入不合法</message>
17. </ validator>
字段校验器
<field name="user.birthDate">
<field-validator type="date">
<param name="min">1850-01-01</param>
<param name="max">2015-07-20</param>
<message>出生日期输入不合法</message>
</field-validator>
</field>
非字段校验器
< validator type="date">
<param name="fieldname"> user.birthDate </param>
<param name="min">1850-01-01</param>
<param name="max">2015-07-20</param>
<message>出生日期输入不合法</message>
</ validator>7.网址校验器
Java代码
1.字段校验器
2. <field name="user.url">
3. <field-validator type="url">
4. <message>个人首页输入不合法</message>
5. </field-validator>
6.</field>
7.非字段校验器
8. < validator type="url">
9. <param name=”fieldname”>user.url</param>
10. <message>个人首页输入不合法</message>
11. </validator>
字段校验器
<field name="user.url">
<field-validator type="url">
<message>个人首页输入不合法</message>
</field-validator>
</field>
非字段校验器
< validator type="url">
<param name=”fieldname”>user.url</param>
<message>个人首页输入不合法</message>
</validator>
8.邮件地址校验器
Java代码
1.字段校验器
2. <field name="user.email">
3. <field-validator type="email">
4. <message> Email地址不合法</message>
5. </field-validator>
6.</field>
7.
8.非字段校验器
9. < validator type="email">
10. <param name=”fieldname”> user.email </param>
11. <message> Email地址不合法</message>
12. </validator>
字段校验器
<field name="user.email">
<field-validator type="email">
<message> Email地址不合法</message>
</field-validator>
</field>
非字段校验器
< validator type="email">
<param name=”fieldname”> user.email </param>
<message> Email地址不合法</message>
</validator>
struts2+hibernate3+spring2读书笔记5(类 ... | 用Java简单的读取pdf文件中的数据(转) 17:05浏览 (70)评论 (5)分类: struts+hibernate+spring學習相关推荐评论
5 楼 lixia0417 2010-05-27 引用
恩,LZ,谢谢了,那我还是练习把SSh的例子改成S2sh的吧,呵呵,哎,现在s2sh整合开发的例子还真是有点少啊,大都是SSh的,呵呵
4 楼 hhr_michael 2010-05-26 引用
哥们,你好,这本书着重s2sh的各个部分开发,而整合的例子不是很多,只有三章是整合的例子,且都是很基础的。
3 楼 lixia0417 2010-05-26 引用
对,哥们,问一下,这本书中关于S2SH整合开发的例子多吗,就是用三个框架一起开发的例子,想多练习一下,买本书,呵呵
2 楼 hhr_michael 2010-05-25 引用
谢谢提醒,由于只是着重校验的过程,所以这代码没有在struts.xml中配置对应的视图。
1 楼 lixia0417 2010-05-25 引用
楼主写得不错,受教了, 不过觉得<code> public String reg(){
//实现代码省略
return null;
}
public String login(){
//实现代码省略
return null;
}
public String execute(){
return null;
} </code>
返回空,有点怪怪的,还不如直接返回“success”呢,虽然在Struts.xml中没有配置对应的视图页面;发表评论
表情图标
字体颜色: 标准深红红色橙色棕色黄色绿色橄榄青色蓝色深蓝靛蓝紫色灰色白色黑色 字体大小: 标准1 (xx-small)2 (x-small)3 (small)4 (medium)5 (large)6 (x-large)7 (xx-large) 对齐: 标准居左居中居右
提示:选择您需要装饰的文字, 按上列按钮即可添加上相应的标签.您还没有登录,请登录后发表评论(快捷键 Alt+S / Ctrl+Enter)
hhr_michael
浏览: 4761 次
性别:
来自: 惠州
详细资料 留言簿
搜索本博客
最近访客 >>更多访客
qljobswpfwupengfeiwpf土豆皮mianhuatangone.博客分类
■全部博客 (45)
■java學習 (15)
■PHP學習 (2)
■javascript (12)
■vba excel (1)
■英語學習 (1)
■k3安裝與配置 (1)
■html學習 (1)
■struts+hibernate+spring學習 (11)
■数据库学习 (1)
我的留言簿 >>更多留言
■漂过
-- by xw302
其他分类
■我的收藏 (0)
■我的论坛主题贴 (0)
■我的所有论坛贴 (0)
■我的精华良好贴 (0)
最近加入圈子
存档
■2010-06 (7)
■2010-05 (6)
■2010-03 (1)
■更多存档...
最新评论
■struts2+hibernate3+sprin ...
恩,LZ,谢谢了,那我还是练习把SSh的例子改成S2sh的吧,呵呵,哎,现在s2s ...
-- by lixia0417
■struts2+hibernate3+sprin ...
哥们,你好,这本书着重s2sh的各个部分开发,而整合的例子不是很多,只有三章是整合 ...
-- by hhr_michael
■struts2+hibernate3+sprin ...
对,哥们,问一下,这本书中关于S2SH整合开发的例子多吗,就是用三个框架一起开发的 ...
-- by lixia0417
■struts2+hibernate3+sprin ...
谢谢提醒,由于只是着重校验的过程,所以这代码没有在struts.xml中配置对应的 ...
-- by hhr_michael
■struts2+hibernate3+sprin ...
楼主写得不错,受教了, 不过觉得<code> public Stri ...
-- by lixia0417
评论排行榜
■struts2+hibernate3+spring2读书笔记4(数据 ...
■js生成行,刪除行,復制行
■struts2+hibernate3+spring2读书笔记11( ...
■JSP环境配置使用fckeditor
■struts2+hibernate3+spring2读书笔记10( ...
[什么是RSS?]
.
--------------------------------------------------------------------------------
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。
? 2003-2010 JavaEye.com. All rights reserved. 上海炯耐计算机软件有限公司 [ 沪ICP备05023328号 ] .