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 服务器端验证的更多相关文章

  1. FineUI(开源版)v6.0中FState服务器端验证的实现原理

    前言 1. FineUI(开源版)是完整开源,最早发起于 2008-04,下载全部源代码:http://fineui.codeplex.com/ 2. 你可以通过捐赠作者来支持FineUI(开源版)的 ...

  2. SpringMVC数据验证

    SpringMVC数据验证——第七章 注解式控制器的数据验证.类型转换及格式化——跟着开涛学SpringMVC 资源来自:http://jinnianshilongnian.iteye.com/blo ...

  3. jsf服务器端验证用户输入

    服务器端验证用户输入数据步骤 1 html页面上插入要输入数据控件 <h:inputText size="10" value="#{commodityBean.fo ...

  4. SpringMVC 使用验证框架 Bean Validation(上)

    SpringMVC 使用验证框架 Bean Validation(上) 对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证. ...

  5. jQuery html5Validate基于HTML5表单 异步服务器端验证

    1. HTML5 自带的Validate 很漂亮,很好用, 但是一定要在form里用submit按钮,才生效 <form id="frmInfo" action=" ...

  6. (十六)客户端验证与struts2中的服务器端验证

    一.客户端验证: 即用javaScript来验证. <%@ page language="java" contentType="text/html; charset ...

  7. springMVC数据验证出现404错误解决办法

    今天使用springMVC的数据验证的时候,看似很简单的东西,却有一个很大的陷阱:提交空表单的时候总是出现404错误,但是后台却不给你报任何错.遇到这个错误这个很苦恼,搞了几小时,今天记录并分享一下解 ...

  8. [译]SpringMVC自定义验证注解(SpringMVC custom validation annotations)

    在基于SpringMVC框架的开发中,我们经常要对用户提交的字段进行合法性验证,比如整数类型的字段有个范围约束,我们会用@Range(min=1, max=4).在实际应用开发中,我们经常碰到一些自己 ...

  9. SpringMVC数据验证(AOP处理Errors和方法验证)

    什么是JSR303? JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案. Hibernate Validator 是 Bean Valida ...

随机推荐

  1. 自定义Writable、RawComparatorWritable、comparators(转)

    自定义Writable hadoop虽然已经实现了一些非常有用的Writable,而且你可以使用他们的组合做很多事情,但是如果你想构造一些更加复杂的结果,你可以自定义Writable来达到你的目的,我 ...

  2. hibernate笔记02

  3. 视频处理控件TVideoGrabber视频捕捉设设备相关问题

    选择一个视频捕捉设备 首先设置 VideoSource = vs_VideoCaptureDevice来选择一个视频捕捉设备作为一个视频源. 通过指定VideoDevice属性来选择当前的视频捕捉设备 ...

  4. mysql的内存表和临时表

    内存表: session $ mysql -uroot root@(none) ::>use test Database changed root::>CREATE TABLE tmp_m ...

  5. python 去除字符串中连续的空格,并使用其他的分隔符替代连续的空格

    例:1: filt函数用法及匿名函数lamda用法,详见http://www.cnblogs.com/apple2016/p/5657698.html join()用法详见http://www.cnb ...

  6. ubuntu屏幕分辨率问题

    今天在ubuntu下工作时突然屏幕上下各出现了一个大概2厘米的黑条,感觉屏幕被横向拉长了,莫名其妙,开始以为简单的调整下分辨率就好了,在系统设置显示里面发现分辨率只有两个可选参数,并且对象为未知,由于 ...

  7. mysql delete数据 空间占用不减少的解决办法

    今天空间商告诉我数据库空间满了,检查了一下,发现网站用户行为记录数据表竟然占了20多MB.积累了半年了,该删除释放一下空间了.果断delete之后发现数据库空间竟然没少,虽然数据记录数是零. 原来这是 ...

  8. vim查找/替换字符串

    1.:s 命令来替换字符串. :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n,$s/vivia ...

  9. php单链表实现的代码

    <?php/*** 单链表*/ class Demo{private $id;public $name;public $next;public function __construct ($id ...

  10. C#: 获取执行程序所在路径和启动资源管理器

    一. 获取执行程序所在路径 1.获取和设置当前目录的完全限定路径. string str = System.Environment.CurrentDirectory;  //获取的是主程序目录,线程启 ...