(七)Struts2 验证框架
2016-05-09 01:32
573 查看
所有的学习我们必须先搭建好Struts2的环境(1、导入对应的jar包,2、web.xml,3、struts.xml)
第一节:Struts2 验证简介
Struts2 基于Struts2 拦截器,为开发者提供了一套易用的验证框架,并可扩展;一般的验证都支持。第二节:Struts2 内置验证
一,普通字段验证二,验证表达式:
<s:actionerror/>(在配置信息中最后“用户名和真实姓名不能相同”的话,即表明有error,所以用表达式,在前端页面会有显示)
例子:
struts.xml
<?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"> <struts> <package name="manager" extends="struts-default"> <action name="registerAction" class="com.wishwzp.action.RegisterAction"> <result name="input">/register.jsp</result> <result name="success">/success.jsp</result> </action> </package> </struts>
User.java
package com.wishwzp.model; public class User { private String userName;//用户名 private String name;//真实姓名 private int age;//年龄 private String email;//邮件 private String homePage;//主页 public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getHomePage() { return homePage; } public void setHomePage(String homePage) { this.homePage = homePage; } @Override public String toString() { return "User [userName=" + userName + ", name=" + name + ", age=" + age + ", email=" + email + ", homePage=" + homePage + "]"; } }
RegisterAction.java
package com.wishwzp.action; import com.wishwzp.model.User; import com.opensymphony.xwork2.ActionSupport; public class RegisterAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String execute() throws Exception { System.out.println("传入的用户:"+user); return SUCCESS; } }
RegisterAction-validation.xml (这个文件命名规范:XXXX-validation.xml,其中XXXX就是后台action类)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <validators> <!-- 用户名格式验证 --> <field name="user.userName"> <field-validator type="requiredstring"> <message>请输入用户名</message> </field-validator> <field-validator type="stringlength"> <param name="minLength">6</param> <param name="maxLength">10</param> <message>用户名必须在${minLength}和${maxLength}之间</message> </field-validator> </field> <!-- 真实姓名格式验证 --> <field name="user.name"> <field-validator type="requiredstring"> <message>请输入姓名</message> </field-validator> </field> <!-- 年龄格式验证 --> <field name="user.age"> <field-validator type="int"> <param name="min">18</param> <message>年龄必须满18周岁</message> </field-validator> </field> <!-- 邮件格式验证 --> <field name="user.email"> <field-validator type="requiredstring"> <message>请输入邮件</message> </field-validator> <field-validator type="email"> <message>邮件格式不对</message> </field-validator> </field> <!-- 主页格式验证 --> <field name="user.homePage"> <field-validator type="requiredstring"> <message>请输入主页</message> </field-validator> <field-validator type="url"> <message>主页格式不对</message> </field-validator> </field> <!-- 用户名和真实姓名不能相同验证 --> <!-- !user.name.equals(user.userName) 用户名和真实姓名不能相等,如果相等就是错误的信息,前端页面会有"<s:actionerror>"表达式显示错误信息 --> <validator type="expression"> <param name="expression"><![CDATA[!user.name.equals(user.userName)]]></param> <message>用户名和真实姓名不能相同</message> </validator> </validators>
register.jsp
<%@ 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>Insert title here</title> </head> <body> <!-- 这是就是用户名和真实姓名错误后显示的信息 --> <s:actionerror/> 用户注册 <s:form action="/registerAction" method="post"> <s:textfield name="user.userName" label="用户名"></s:textfield> <s:textfield name="user.name" label="真实姓名"></s:textfield> <s:textfield name="user.age" label="年龄"></s:textfield> <s:textfield name="user.email" label="邮件"></s:textfield> <s:textfield name="user.homePage" label="主页"></s:textfield> <s:submit value="注册"></s:submit> </s:form> </body> </html>
success.jsp
<%@ 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>Insert title here</title> </head> <body> 注册成功 </body> </html>
结果显示:(什么都没有写就提交了的结果显示)
第三节:自定义验证
例子:validators.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator Config 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd"> <validators> <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/> <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/> <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/> <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/> <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/> <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/> <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/> <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/> <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/> <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/> <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/> <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/> <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/> <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/> <!-- 自己定义配置的validatiors验证敏感词汇 --> <validator name="sensitive" class="com.wishwzp.validators.SensitiveWordValidators"/> </validators>
SensitiveWordValidators.java
package com.wishwzp.validators; import com.opensymphony.xwork2.validator.ValidationException; import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; public class SensitiveWordValidators extends FieldValidatorSupport{ @Override public void validate(Object object) throws ValidationException { String fieldName=this.getFieldName();//获取字段名称 String value=this.getFieldValue(fieldName, object).toString();//获取用户输入的值 if(!check(value)){ this.addFieldError(fieldName, object); } } public boolean check(String value){ String sensitiveWords[]={"你妹","你妈"};//敏感词汇 for(int i=0;i<sensitiveWords.length;i++){ if(value.indexOf(sensitiveWords[i])>-1){ return false; } } return true; } }
struts.xml
<?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"> <struts> <package name="manager" extends="struts-default"> <action name="validationAction" class="com.wishwzp.action.ValidationAction"> <result name="input">/validation.jsp</result> <result name="success">/success.jsp</result> </action> </package> </struts>
ValidationAction.java
package com.wishwzp.action; import com.wishwzp.model.User; import com.opensymphony.xwork2.ActionSupport; public class ValidationAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String execute() throws Exception { System.out.println("姓名:"+name); return SUCCESS; } }
ValidationAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <validators> <field name="name"> <field-validator type="requiredstring"> <message>请输入姓名</message> </field-validator> <field-validator type="sensitive"> <message>有敏感词汇</message> </field-validator> </field> </validators>
validation.jsp
<%@ 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>Insert title here</title> </head> <body> 简单自定义验证 <s:form action="/validationAction" method="post"> <s:textfield name="name" label="姓名"></s:textfield> <s:submit value="提交"></s:submit> </s:form> </body> </html>
结果:
如果输入敏感词提交的话:
如果输入不是敏感词提交的话:
相关文章推荐
- 使用Android Studio打开eclipse项目以及打开网上下载的studio项目报错解决办法
- java中的一些基本语句
- (六)Struts2 国际化
- 012 Integer to Roman(Java)
- 【转】Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- spring 、zookeeper(dubbo)整合
- JAVA代码训练营救——TreeSet的泛型实现
- java.lang.NoClassDefFoundError: org/jaxen/JaxenException
- windows系统下Eclipse启动界面更改
- Java Web基础小结之Jsp JavaBean
- Java NIO 理解
- Spring的Controller请求方法中参数名匹配,但是参数类型不同会报404
- JAVA——泛型
- 重新学javaweb---过滤器 应用--全站乱码
- 20145230《java程序设计》第五次实验报告
- SpringMVC的第一个案例 Helloword 步骤
- 20145301《Java程序设计》第10周学习总结
- spring-core组件详解——PropertySource属性源
- spring-core组件详解——环境体系
- struts2拦截器详解