- 浏览: 263815 次
- 性别:
- 来自: 苏州
-
文章分类
- 全部博客 (289)
- java (72)
- oracle (3)
- mysql (5)
- spring (28)
- hibernate (2)
- osgi (0)
- linux (2)
- ExtJs (1)
- jvm (0)
- mybatis (7)
- 分布式 (11)
- MINA (6)
- apache+tomcat (13)
- js+htm (7)
- android (44)
- http (1)
- hbase+hdoop (0)
- memcache (13)
- search (27)
- 部署及性能 (12)
- mongoDB (2)
- 多线程 (12)
- 安全管理验证 (9)
- struts (1)
- webservice (0)
- easyUI (1)
- spring security (16)
- pattern (6)
- 算法 (2)
最新评论
-
lzh8189146:
CommonsHttpSolrServer这个类,现在是不是没 ...
CommonsHttpSolrServer -
xiaochanzi:
我按照你的方法试了下,tomcat6可以发布,但是访问任何网页 ...
基于内嵌Tomcat的应用开发 -
phoneeye:
麻烦你,如果是抄来的文章,请给出来源。谢谢
ant 两则技巧 -
neverforget:
转载不注明出处
Spring Security3.1登陆验证 替换 usernamepasswordfilter -
liang1022:
若不使用eclipse ,如何在命令行下 运行服务端程序 ?
WebService CXF学习(入门篇2):HelloWorld
转载:http://blog.csdn.net/h396071018/article/details/6658962
spring mvc 注解验证springmodules common validator (注解验证)
首先说spring modules, 它是为spring定制的一些工具组件,官方地址在https://springmodules.dev.java.net/, 官网上是这样介绍的:Spring Modules is a collection of tools, add-ons and modules to extend the Spring Framework. The core goal of Spring Modules is to facilitate integration between Spring and other projects without cluttering or expanding the Spring core. 里面有很多子项目。其中commons validator是一个可配置的验证框架,使用方式和工作原理都和struts用的ValidatorPlugIn一样。它可以通过配置生成js在客户端验证, 也可以配合具有验证功能的spring controller实现server端验证.
我做得一个小例子在我的资源里大家可以下载http://download.csdn.net/source/3494112
项目是用eclipse做得包含了所有的jar包和文件直接运行即可
1 从https://springmodules.dev.java.net/下载jar包,我们将使用里面的spring-modules-validation.jar;
2 我使用的IDE是eclipse 新建一个web project名字叫做:springValdiateAnonation, 拷贝spring,jakarta-commons等相关的必要jar文件包括spring-modules-validation.jar到WEB-INF/lib/,拷贝c-rt.tld, spring.tld, spring-form.tld到WEB-INF/tld/;做好spring的基础配置工作,包括web.xml, applicationContext.xml, xxx-servlet.xml; 配置好log4j.properties;
3 在src下新建包web.kjt 在该包下建域对象User, 将作为我们的表单对象;
- public class User {
- private String userName;
- private String password;
- 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;
- }
- }
4 在web.kjt包下新建一个LoginController,因为使用spring mvc注解配置请求信息,所有就不用继承相应的controller,代码如下
- package com.kjt;
- import java.util.ArrayList;
- import java.util.List;
- import javax.validation.Valid;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.ModelMap;
- import org.springframework.validation.BindingResult;
- import org.springframework.validation.Validator;
- import org.springframework.web.bind.annotation.ModelAttribute;
- import org.springframework.web.bind.annotation.RequestMapping;
- @Controller
- public class LoginController {
- @Autowired(required=false)
- Validator validator; //这个需要在applicationContext.xml中配置bean注射进来
- //客户端验证和后台验证配置的请求
- @RequestMapping("/login.do")
- public String login(@Valid @ModelAttribute("user")User user,BindingResult bindingResult,ModelMap modelMap){
- try {
- System.out.println("11");//看请求能否进来
- if (user.getUserName() ==null) {
- user=new User();
- modelMap.addAttribute(user);
- }
- else {
- validator.validate(user, bindingResult);//这个是对前台提交的数据进行验证
- }
- return"login";
- } catch (Exception e) {
- // TODO: handle exception
- System.out.println("错误信息"+e.getMessage());
- e.printStackTrace();
- return "welcome";
- }
- }
- @RequestMapping(value="/login1.do")//后台验证配置的请求
- public String login1(@Valid @ModelAttribute("user")User user,BindingResult bindingResult,ModelMap modelMap){
- try {
- System.out.println("22");
- if (user.getUserName() ==null) {
- user=new User();
- modelMap.addAttribute(user);
- }
- else {
- validator.validate(user, bindingResult);
- }
- return"login1";
- } catch (Exception e) {
- // TODO: handle exception
- System.out.println("错误信息"+e.getMessage());
- e.printStackTrace();
- return "welcome";
- }
- }
- }
需要说明的是User user,BindingResult bindingResult 这两个对象必须紧挨着,否则出错哦。他们bindingresult是把验证的错误信息存进他得errors属性里了
下面主要讲解springmvc 注解验证怎么配置,其实和springmvc xml验证没什么不同,就是配置请求方式不一样了
5 从springmodules下载包的sample中找validator-rules.xml,validation.xml拷贝到WEB-INF目录下, 打开观察一下这两个文件,你会发现他们和struts的validatorPlugin需要的两个配置文件一模一样 , 你甚至可以从你的struts项目中拷贝这两个文件拿过来修改修改即可工作.
validator-rules.xml预定义了一些验证器,比如required(必填项),minlength(最短长度), maxlength(最大长度), float(可输入小数),integer(可输入整数),mask(输入值要满足正则表达式要求), 这个文件大多数时候都不需要我们更改他们,除非为了拓展功能或者发现bug;
validation.xml定义了一些表单的验证规则,我们需要一个表单的验证功能就要在这个文件中配置一条验证信息. 这两个文件拷贝过来之后就可以配置验证器工厂和验证器了.
在applicationContext.xml中配置validatorFactory和beanValidator(为什么要在applicationContext中配置: 因为验证器可作为应用程序公用的组件,可以被所有的servlet共享):
- <!--
- 名字必须为messageSource,因为springmodules的jar包需要引用验证时需要引用名字为messageSource的bean
- 你可以试验一下把名字改,我试验之后是不是这个名字 前台显示的错误信息validator-rules.xml最上面注释掉的Validator Error Messages的key
- -->
- <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
- <property name="basename" value="messages" />
- </bean>
- <bean id="validatorFactory" class="org.springmodules.validation.commons.DefaultValidatorFactory">
- <property name="validationConfigLocations">
- <list>
- <value>WEB-INF/validator-rules.xml</value>
- <value>WEB-INF/validation.xml</value>
- </list>
- </property>
- </bean>
- <!--
- 在applicationContext.xml中配置validatorFactory和beanValidator
- (为什么要在applicationContext中配置: 因为验证器可作为应用程序公用的组件,可以被所有的servlet共享):
- -->
- <bean id="beanValidator" class="org.springmodules.validation.commons.DefaultBeanValidator">
- <property name="validatorFactory" ref="validatorFactory"/>
- </bean>
- <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="WEB-INF/jsp/" />
- <property name="suffix" value=".jsp" />
- </bean>
6 打开validation.xml,在里面添加一个form,
- <form name="user">
- <field property="userName" depends="required"><!--depands 字段是配置需要满足的验证器,可配置多个-->
- <!--
- arg0是该字段的显示名,用于验证失败时显示提示信息
- key是定义在messageResource中的消息的key
- -->
- <arg0 key="用户名" />
- </field>
- <field property="password" depends="maxlength,required">
- <arg0 key="密码" />
- <arg1 name="maxlength" key="${var:maxlength}" resource="false" />
- <var>
- <var-name>maxlength</var-name>
- <var-value>10</var-value>
- </var>
- </field>
- </form>
7 配置需要的message, 为了在验证没通过时显示出错信息, 需要把示例文件validator-rules.xml最上面注释掉的Validator Error Messages拷贝到message.properties中,并且把它放在classpath下.同时需要在applicationContext.xml中配置messageSource,
- <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
- <property name="basename" value="messages" />
- </bean>
同时在message.properties中添加form字段的显示名称, 则本例的messages.properties全文如下:
- #english message file
- errors.required={0} is required.
- errors.minlength={0} can not be less than {1} characters.
- errors.maxlength={0} can not be greater than {1} characters.
- errors.invalid={0} is invalid.
- errors.byte={0} must be a byte.
- errors.short={0} must be a short.
- errors.integer={0} must be an integer.
- errors.long={0} must be a long.
- errors.float={0} must be a float.
- errors.double={0} must be a double.
- errors.date={0} is not a date.
- errors.range={0} is not in the range {1} through {2}.
- errors.creditcard={0} is an invalid credit card number.
- errors.email={0} is an invalid e-mail address.
- common.messages.close=Close
- user.name=userName
- user.password=userPassword
8 编辑jsp表单页面login.jsp,
- <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
- <%@ taglib uri="/WEB-INF/tld/c-rt.tld" prefix="c"%>
- <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
- <%@ taglib uri="/WEB-INF/tld/spring-form.tld" prefix="form"%>
- <%@ taglib uri="http://www.springmodules.org/tags/commons-validator" prefix="validator" %>
- <validator:javascript formName="user" staticJavascript="true" xhtml="true" cdata="false" />
- <!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=GB18030">
- <title>登录页面</title>
- </head>
- <body>
- <h1>欢迎访问,登录页面</h1>
- <form action="login.do" method="post" id="user" name="user" onsubmit="return validateUser(this);">
- <table>
- <tr>
- <td>
- 用户名:
- </td>
- <td>
- <spring:bind path="user.userName">
- <input type="text" id="userName" name="userName" value="${status.value}"/>
- <font color="red"><c:out value="${status.errorMessage}"/></font>
- </spring:bind>
- </td>
- </tr>
- <tr>
- <td>
- 密码:
- </td>
- <td>
- <spring:bind path="user.password">
- <input type="text" id="password" name="password" value="${status.value}"/>
- <font color="red"><c:out value="${status.errorMessage}"/></font>
- </spring:bind>
- </td>
- </tr>
- <tr>
- <td>
- <input type="submit" value="登录" >
- </td>
- <td></td>
- </tr>
- </table>
- </form>
- </body>
- </html>
上面的配置是javascript和后台一起验证的
启动javascript验证在页首需要加入
<validator:javascript formName="book" staticJavascript="true" xhtml="true" cdata="false" />
部署到tomcat并测试:http://localhost:8080/springValdiateAnonation/login.do
后台验证界面
客户端验证界面
我做得一个小例子在我的资源里大家可以下载http://download.csdn.net/source/3494112
项目是用eclipse做得包含了所有的jar包和文件直接运行即可
本文参考:http://blog.csdn.net/sunxing007/article/details/4660262
发表评论
-
主题:Spring MVC3 国际化配置
2012-04-13 08:30 789http://www.iteye.com/topic/1122 ... -
使用 Spring Data JPA 简化 JPA 开发
2012-04-13 08:30 909http://www.ibm.com/developerwor ... -
跟我学spring3 电子书下载(完)
2012-04-13 08:30 664http://www.iteye.com/topic/1122 ... -
spring 读取applicationContext方式
2012-04-12 08:02 1048spring 读取applicationCont ... -
spring javamail
2012-04-11 08:00 771spring javamail 博客分类 ... -
Quartz在Spring中动态设置cronExpression
2012-04-11 08:00 658Quartz在Spring中动态设置cronEx ... -
spring定时器用Annotation实现
2012-04-10 08:28 790spring定时器用Annotation实现 ... -
spring 3 中使用注解的方式来进行任务调度。
2012-04-10 08:28 752spring 3 中使用注解的方式来进行任务调度。 ... -
spring定时器如何配置
2012-04-10 08:28 1041有两种流行Spring定时器配置:Java的Timer类 ... -
Spring在web应用中获得Bean的方法
2012-04-01 08:21 913Spring在web应用中获得Bean的方法 ... -
Spring3.0中的异常处理配置方法
2012-04-10 08:28 794Spring3.0中的异常处理配置方法 ... -
在Spring3中使用注解(@Scheduled)创建计划任务
2012-04-09 09:49 1267在Spring3中使用注解(@Scheduled ... -
利用 Spring 和 EHCache 做方法缓存处理〔转〕
2012-04-09 09:49 861利用 Spring 和 EHCache 做方法缓存处理〔 ... -
springmvc rest框架搭建中遇到的问题
2012-03-16 14:37 972springmvc rest框架搭建中遇到的问题(一) ... -
spring 3.0 应用springmvc 构造RESTful URL 详细讲解
2012-03-16 14:36 694http://badqiu.iteye.com/blog/47 ... -
MyBatis3整合Spring3的Transaction事务处理
2012-03-07 08:18 932MyBatis3整合Spring3的Transacti ... -
spring结合quartz的定时的2种方式
2012-03-02 09:21 773spring结合quartz的定时的2种方式 ... -
spring结合quartz的执行多任务的实现
2012-03-02 09:21 1873spring结合quartz的执行多任务的实现 ... -
在Spring中使用JTA事务管理(二)
2012-02-28 08:15 1023在Spring中使用JTA事务管理(二) (20 ... -
spring 事务 不能rollback的问题终于解决了
2012-03-19 08:24 886spring 事务 不能rollback的问题 ...
相关推荐
博客还可能涵盖了如何在实际项目中集成这些自定义注解,比如Spring MVC框架中的数据绑定和校验,以及如何通过AOP(面向切面编程)在全局范围内处理验证失败的情况。此外,它或许还讨论了如何利用反射和注解处理器...
- **使用 Validator 接口:** Validator 接口用于校验数据的有效性,可以配合 Spring MVC 等框架使用。 - **BeanWrapper 和 bean 处理:** BeanWrapper 是一个用于读写 Bean 属性的工具类,可以方便地进行属性的设置...
7. spring:Spring框架的JAR文件,包括spring-beans、spring-context、spring-web、spring-webmvc等模块,它们分别提供了核心容器、应用上下文、Web支持以及MVC功能。 8. struts:Struts2框架的JAR文件,包括struts...
- `hibernate-validator.jar`: Hibernate验证支持。 - `jboss-archive-browsing.jar`: JBoss档案浏览支持。 - `c3p0-0.9.1.2.jar`: 连接池支持。 ##### 2. Spring配置 对于Spring的集成,则需要以下JAR包: - `...
5. **hibernate-validator.jar**:实现了JSR-303/JSR-349标准,提供了数据验证功能,可以对输入的数据进行校验。 6. **mysql-connector-java.jar** 或其他数据库驱动:这取决于你的项目所使用的数据库,例如MySQL、...
对于使用切面编程(AOP)和JSR-250注解的项目,还需要包含**aspectjweaver.jar**、**aspectjrt.jar**、**cglib-nodep-2.1_3.jar**、**common-annotations.jar**等库。 #### Hibernate3.3核心组件分析 **hibernate3....