SpringMVC 服务器端验证
1.导入JSR303验证类库Jar包
2.在MVC的配置文件中添加<mvc:annotation-driven/>的配置
3.在MVC的配置文件中添加验证器的配置
4.在接收表单数据的类中添加验证规则注解
5.在控制器方法的表单对象参数上添加@valid注解
6.在控制器方法中对BindResult对象进行判断
struts2:validation.xml
struts2 SpringMVC
实体类 LoginForm类
action Controller
struts.xml MVC-servlet.xml
先导入支持服务器端验证的组件 JSR-303验证类库 里边有四个类库
在LoginForm类中配置:
package cn.bdqn.mvc.form;
import org.hibernate.validator.constraints.NotEmpty;
public class LoginForm {
private String loginName;
private String password;
@NotEmpty(message="请输入登录名")
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
@NotEmpty(message="请输入密码")
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
在MVC-servlet.xml中配置
<!-- 基于注解的MVC配置 -->
<mvc:annotation-driven/>
<!-- 验证器 -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<!-- 使用Hibernate验证框架进行验证 -->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
</bean>
在LoginController类中配置:
//建议不用实体类接受请求,建议单独定义一个表单类
@RequestMapping(value="login",method=RequestMethod.POST)
public String doLogin2(
@Valid@ModelAttribute("form")LoginForm loginForm,//这样转发回表单页面的时候会自动回填数据
BindingResult result
){
//是否发生服务器端验证错误,hasErrors()是管所有的错误
if(result.hasErrors()){
return "login";
} if(!loginForm.getLoginName().equals("admin")){
result.rejectValue("loginName","form", "用户名输入错误"); //reject是驳回的意思
}else if (!loginForm.getPassword().equals("123456")) {
result.rejectValue("password","form", "密码输入错误");
}
//如果添加了错误信息,则转发回登陆表单页面
if(result.hasErrors()){
return "login";
} System.out.println("登录名:"+loginForm.getLoginName());
System.out.println("密码:"+loginForm.getPassword());
return "hello";
}
SpringMVC 服务器端验证的更多相关文章
- FineUI(开源版)v6.0中FState服务器端验证的实现原理
前言 1. FineUI(开源版)是完整开源,最早发起于 2008-04,下载全部源代码:http://fineui.codeplex.com/ 2. 你可以通过捐赠作者来支持FineUI(开源版)的 ...
- SpringMVC数据验证
SpringMVC数据验证——第七章 注解式控制器的数据验证.类型转换及格式化——跟着开涛学SpringMVC 资源来自:http://jinnianshilongnian.iteye.com/blo ...
- jsf服务器端验证用户输入
服务器端验证用户输入数据步骤 1 html页面上插入要输入数据控件 <h:inputText size="10" value="#{commodityBean.fo ...
- SpringMVC 使用验证框架 Bean Validation(上)
SpringMVC 使用验证框架 Bean Validation(上) 对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证. ...
- jQuery html5Validate基于HTML5表单 异步服务器端验证
1. HTML5 自带的Validate 很漂亮,很好用, 但是一定要在form里用submit按钮,才生效 <form id="frmInfo" action=" ...
- (十六)客户端验证与struts2中的服务器端验证
一.客户端验证: 即用javaScript来验证. <%@ page language="java" contentType="text/html; charset ...
- springMVC数据验证出现404错误解决办法
今天使用springMVC的数据验证的时候,看似很简单的东西,却有一个很大的陷阱:提交空表单的时候总是出现404错误,但是后台却不给你报任何错.遇到这个错误这个很苦恼,搞了几小时,今天记录并分享一下解 ...
- [译]SpringMVC自定义验证注解(SpringMVC custom validation annotations)
在基于SpringMVC框架的开发中,我们经常要对用户提交的字段进行合法性验证,比如整数类型的字段有个范围约束,我们会用@Range(min=1, max=4).在实际应用开发中,我们经常碰到一些自己 ...
- SpringMVC数据验证(AOP处理Errors和方法验证)
什么是JSR303? JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案. Hibernate Validator 是 Bean Valida ...
随机推荐
- RSYNC--数据迁移、备份
前言 一台Solaris主机要下线了,准备将数据迁移至一台AIX主机上,可是在Solaris主机上有一个文件系统有1200万个小文件,因为是跨平台的数据迁移,采用磁盘底层复制无法进行,采用数据备份恢复 ...
- autohotkey --- win10运行不兼容
在win10下许多脚本运行有问题, 将AutoHotkey.exe设置为兼容模式为win7 同时要设置为以管理员身份运行此程序 这个必须得记录一下.
- Linux kernel的 Makefile和Kconfig以及Make menuconfig的关系【转】
本文转载自:http://blog.sina.com.cn/s/blog_4ba5b45e0102e6vp.html 熟悉内核的Makefile对开发设备驱动.理解内核代码结构都是非常重要的linux ...
- C++注意事项锦集
1.std::string的.length()方法 计算代‘/’的字符串的长度会少计算‘/’的个数.比如:[warning]*****[/warning]
- android log机制——输出log【转】
转自:http://blog.csdn.net/tdstds/article/details/19084327 目录(?)[-] 在android Java code中输出log Logprintln ...
- Java类加载信息的顺序:包括静态代码快、静态类变量、非静态代码快、构造方法、普通方法
JVM运行之前会执行一个叫做类加载器的子系统,叫做ClassLoader,那么类里面那么多“元素”,究竟是个什么顺序呢,写几行代码测试一下,通过给每个方法和代码快和静态变量打上断点来测试: class ...
- Reverse Linked List II
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...
- SURF
推荐:http://www.cnblogs.com/tornadomeet/archive/2012/08/17/2644903.html SURF-Speeded Up Robust Feature ...
- git 冲突
git中冲突会用特殊的标记 (<<<<<<<=======>>>>>>>) 特殊标记<<<< ...
- bianwu | 数据行 | 填写意见
protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e) { //首先判断是否是数据行 if (e.Row.RowT ...