- 浏览: 258546 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (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 774http://www.iteye.com/topic/1122 ... -
使用 Spring Data JPA 简化 JPA 开发
2012-04-13 08:30 894http://www.ibm.com/developerwor ... -
跟我学spring3 电子书下载(完)
2012-04-13 08:30 638http://www.iteye.com/topic/1122 ... -
spring 读取applicationContext方式
2012-04-12 08:02 1020spring 读取applicationCont ... -
spring javamail
2012-04-11 08:00 747spring javamail 博客分类 ... -
Quartz在Spring中动态设置cronExpression
2012-04-11 08:00 642Quartz在Spring中动态设置cronEx ... -
spring定时器用Annotation实现
2012-04-10 08:28 778spring定时器用Annotation实现 ... -
spring 3 中使用注解的方式来进行任务调度。
2012-04-10 08:28 733spring 3 中使用注解的方式来进行任务调度。 ... -
spring定时器如何配置
2012-04-10 08:28 1028有两种流行Spring定时器配置:Java的Timer类 ... -
Spring在web应用中获得Bean的方法
2012-04-01 08:21 887Spring在web应用中获得Bean的方法 ... -
Spring3.0中的异常处理配置方法
2012-04-10 08:28 776Spring3.0中的异常处理配置方法 ... -
在Spring3中使用注解(@Scheduled)创建计划任务
2012-04-09 09:49 1250在Spring3中使用注解(@Scheduled ... -
利用 Spring 和 EHCache 做方法缓存处理〔转〕
2012-04-09 09:49 834利用 Spring 和 EHCache 做方法缓存处理〔 ... -
springmvc rest框架搭建中遇到的问题
2012-03-16 14:37 952springmvc rest框架搭建中遇到的问题(一) ... -
spring 3.0 应用springmvc 构造RESTful URL 详细讲解
2012-03-16 14:36 678http://badqiu.iteye.com/blog/47 ... -
MyBatis3整合Spring3的Transaction事务处理
2012-03-07 08:18 909MyBatis3整合Spring3的Transacti ... -
spring结合quartz的定时的2种方式
2012-03-02 09:21 762spring结合quartz的定时的2种方式 ... -
spring结合quartz的执行多任务的实现
2012-03-02 09:21 1857spring结合quartz的执行多任务的实现 ... -
在Spring中使用JTA事务管理(二)
2012-02-28 08:15 996在Spring中使用JTA事务管理(二) (20 ... -
spring 事务 不能rollback的问题终于解决了
2012-03-19 08:24 864spring 事务 不能rollback的问题 ...
相关推荐
总的来说,"Spring3.0 + springmodules 实现validator"的项目展示了如何结合使用Spring的注解驱动验证、Springmodules的验证框架和Spring MVC,以实现高效且灵活的Web表单验证。这种方式不仅提高了代码的可读性和可...
其中commons validator是一个可配置的验证框架,使用方式和工作原理都和struts用的ValidatorPlugIn一样。它可以通过配置生成js在客户端验证, 也可以配合具有验证功能的spring controller实现客户端验证. 本下载文件...
总的来说,"Mastering Spring MVC 4(2015.09)源码"提供了深入学习Spring MVC的机会,你可以通过阅读和分析源码来了解如何配置DispatcherServlet、怎样编写控制器、如何进行数据绑定与验证,以及如何利用拦截器等特性...
在Controller的处理方法中,通过在参数前添加`@Valid`注解,Spring MVC会自动调用相应的Validator进行验证。例如: ```java @PostMapping("/users") public String createUser(@Valid User user, BindingResult ...
对于验证,Spring MVC提供了BindingResult和Validator接口,用于校验模型数据的正确性。 另外,Spring MVC与Spring框架的其他组件无缝集成,如Spring AOP(面向切面编程)用于实现日志、事务管理等功能,Spring ...
在Spring MVC框架中,注解验证是一个非常重要的功能,它允许开发者通过在控制器方法的参数上添加特定的注解来实现数据验证。这种方式简洁且高效,使得代码更加整洁,易于维护。下面我们将深入探讨Spring MVC中的注解...
例如,使用@ModelAttribute注解可以将请求参数绑定到Controller方法的参数上,@Valid用于进行数据验证,Validator接口可以自定义验证逻辑。国际化和本地化则可以通过消息源(MessageSource)来实现,为不同地区提供...
总之,这个项目展示了如何结合Spring MVC、Ibatis以及Spring注解,构建一个完整的Web应用程序,实现了数据的CRUD操作,以及分页排序查询和用户登录验证等功能,所有这些都基于非XML的配置方式,利用注解提高了开发...
11. **Validation**:Spring提供了数据验证机制,可以通过`@Valid`注解和Validator接口实现对表单数据的校验。 12. **Interceptor**:拦截器,允许在请求处理前后执行自定义逻辑,如日志记录、权限检查等。 13. **...
Spring MVC可以通过自定义Validator或使用JSR-303/JSR-349 Bean Validation进行验证。同时,安全方面需要考虑防止SQL注入和XSS攻击。 7. **视图解析器**:设置ViewResolver,如InternalResourceViewResolver,用来...
此外,@Valid用于验证模型数据,配合Validator接口实现自定义校验规则。 7. **异常处理** 可以使用@ControllerAdvice和@ExceptionHandler全局处理异常,为整个应用提供统一的错误页面或提示。 8. **拦截器...
Spring MVC支持JSR 303/JSR 349(Bean Validation)标准,允许我们使用注解在模型类的字段上定义验证规则。例如,`@NotBlank`用于检查字符串是否为空,`@Size(min, max)`用于检查长度限制,`@Email`用于验证电子...
要在Resin中启用Hibernate Validation,需要在应用中包含Hibernate Validator库,并在相应的配置文件(如web.xml或Spring配置文件)中配置验证规则。 在Resin-4.0.61压缩包中,包含了Resin服务器的所有必要组件和...
Spring MVC支持使用`@Valid`和自定义Validator实现数据验证。在登录场景中,可以验证用户名和密码是否为空,或者是否满足特定格式。 8. **视图解析** 登录成功后,Controller会返回一个视图名,如"success"。...
本章主要探讨的是如何在Spring MVC中实现对请求参数的有效性和正确性进行验证,确保应用的数据安全和业务流程的顺畅。以下将详细讲解各个知识点: 1. **简单数据类型绑定**: 在Spring MVC中,对于如int、String等...
7. **验证**:使用Hibernate Validator或Spring的Validator接口,可以在控制器方法执行前验证模型数据。 8. **异常处理**:通过@ControllerAdvice和@ExceptionHandler注解,可以全局地处理异常,提供统一的错误页面...
2. **自定义Validator**:对于更复杂或者标准注解无法满足的验证需求,可以实现Spring的`Validator`接口,创建自定义的验证器。在这个接口中,我们需要重写`supports`方法来确定验证器是否适用于特定的类,以及`...
10. **Validation API和Hibernate Validator**:用于数据验证,可以确保用户输入的有效性。 11. **Thymeleaf或FreeMarker**:作为视图解析引擎,可以将模型数据渲染成HTML页面。Spring MVC默认支持多种视图解析技术...
当用户提交表单时,Spring MVC会先调用Hibernate Validator进行验证,如果验证失败,会将错误信息存储在BindingResult对象中。开发者可以通过这个对象获取并展示错误信息,向用户返回友好的错误提示。 总的来说,...
Spring MVC 支持注解驱动的开发,比如@Controller、@RequestMapping、@GetMapping、@PostMapping等,使得代码更简洁,无需XML配置。 4. **HandlerMapping与HandlerAdapter**: HandlerMapping负责将URL映射到特定...