springmvc-3.2-jsr303解决服务端验证问题
从以前的验证:Stringutils.isEmpty....到struts的验证:xxxvalidate
现在使用jsr303使之更加简单
依赖hibernate-validator-4.xx.jar
实体类中的变化
@Entity
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Admin { @Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
// 加NotEmpty注解,如果为空有提示
@NotEmpty(message="账号不能为空")
private String name;
@NotEmpty(message="密码不能为空")
private String password;
表单书写方式发生变化
首先导入springmvc的标签
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<!--来这个表单之前先传一个admin过来 commandName="admin" -->
<form:form method="POST" commandName="admin">
<legend>登录</legend>
<!-- <form:errors path="*" cssClass="help-inline text-error" element="span"/>这样是所有错误都在这显示,也可以像下面分开写 -->
<label>账号</label>
<!-- path相当于以前的name属性 -->
<form:input path="name"/>
<form:errors path="name" cssClass="help-inline text-error" element="span"/>
<label>密码</label>
<form:password path="password"/>
<form:errors path="password" cssClass="help-inline text-error" element="span"/>
<div class="form-actions">
<button class="btn btn-primary">登录</button>
</div>
</form:form>
----------------------------------------------------------
/*以前是这样
@RequestMapping(value="/",method=RequestMethod.GET)
public String index() { return "index";
} */
/* 现在有了commandName="admin"这个form属性就必须在到达页面前传过去一个admin,虽然是空的 */
@RequestMapping(value="/",method=RequestMethod.GET)
public String index(Model model) {
model.addAttribute("admin", new Admin());
return "index";
} /* 在提交的方法中也要有所改变 */
@RequestMapping(value="/",method=RequestMethod.POST)
/* 使用jsr303,提交过来的表单必须用对象接受,不能用name,password
需要加注解@Valid表明admin是需要验证的
而且@Valid Admin admin必须放在最前面*/
public String login(@Valid Admin admin,BindingResult bindingResult,HttpSession session,RedirectAttributes redirectAttributes) {
/* 添加了BindingResult这个参数,如果验证有了错误就return到index页面
注意,不是重定向到index 做到这里效果就是如果有错误就会还在index页面并提示账户和密码不能空
当账户写了,但是密码没写,就会只提示密码为空,而且账户的input框中填写的信息不会消失
就是因为
1.我们来这个页面的时候传过来一个空的admin对象,所以他把你写的值都set放入到admin中
2.input框中填写的信息没有消失,是因为我们是return index而不是重定向,然后又把admin中的值get进去
*/
if(bindingResult.hasErrors()) {
return "index";
} Admin currAdmin = adminService.login(admin.getName(),admin.getPassword());
if(currAdmin == null) {
redirectAttributes.addFlashAttribute("message", "账号或密码错误");
<!-- 重定向 -->
return "redirect:/";
} else {
session.setAttribute("curr_admin", currAdmin);
return "redirect:/book";
}
}
springmvc-3.2-jsr303解决服务端验证问题的更多相关文章
- JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践
任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用在很多时候,同样的数据验证逻辑会出现在不同的层, ...
- .net使用FluentValidation进行服务端验证。
背景 最近使用asp.mvc 做一个在线口语系统项目,在服务端验证问题遇到了一些小问题. 自己根据数据库表user定义一个数据库表实体对象UserDbEntity [Table(" ...
- Asp.net MVC 服务端验证多语言错误
服务端验证用户提交信息时为了实现多语言使用了资源文件,如: using System.ComponentModel.DataAnnotations; public class UserModel { ...
- Easyui validatebox后台服务端验证
Easyui validatebox的验证提示十分好用,可是在实际项目的运用中,经常会遇到需要服务器验证后并返回验证结果信息,比如验证用户名.手机号.邮箱是否已存在.于是就想着怎么拓展Easyui的验 ...
- ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)
ASP.NET MVC通过Model验证帮助我们很容易的实现对数据的验证,在默认的情况下,基于ValidationAttribute的声明是验证被使用,我们只需 要将相应的ValidationAttr ...
- C#在服务端验证客户端证书(Certificate)
使用https协议进行通讯的时候可以设置双向证书认证,客户端验证服务端证书的方法前面已经介绍过了,现在说一下在服务端验证客户端证书的方案. 这里给出的方案比较简单,只需要在Service端的配置文件中 ...
- ASP.NET的服务端验证(干货)
最近有项目需要使用.net的web,啥也不说,直接开始学习.net的mvc框架.感觉微软的web项目其实还是很好用的,今天和大家分享一下服务端验证的事情.其实原理就是用到了c#的特性,特性不用多说,大 ...
- MIME类型-服务端验证上传文件的类型
MIME的作用 : 使客户端软件,区分不同种类的数据,例如web浏览器就是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件. web服务器使用MIME来说明发送数据的种类, ...
- 使用Httpclient 完美解决服务端跨域问题
项目需求: jsonp是从前台js的角度考虑,通过Ajax调用springMVC的接口.同一个ip.同一个网络协议.同一个端口,三者都满足就是同一个域,否则就是跨域问题了.首页广告需要一个轮播的效果, ...
随机推荐
- Android平台APK分析工具包androguard的部署使用和原理分析
原创文章,转载请注明出处,谢谢. Android应用程序分析主要有静态分析和动态分析两种,常见的静态分析工具是Apktool.dex2jar以及jdgui.今天突然主要到Google code上有个叫 ...
- python字符串操作总结
python中有各种字符串操作,一开始python有个专门的string模块,要使用需先import string.后来从python2.0开始,string方法改用str.method()形式调用, ...
- iostream.h 和stdio.h区别
stdio.h是C的标准I/O库,是以函数的方式向buffer写入或读取字符.输入输出是这样的printf(...);,scanf(...); iostream是C++的标准I/O库,引入了输入/输出 ...
- Scrambled Polygon(凸多边形,斜率)
Scrambled Polygon Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7805 Accepted: 3712 ...
- No.3小白的HTML+CSS心得篇
A--看的东西多了总会出现好多模糊不清的又长的很像的的词语 今天对此进行区别分析下 1. align 与 text-align的区别 align 在W3Cschool中是这样解释的 ----alig ...
- Maven导入时,Cannot change version of project facet Dynamic Web Module to 3.0.
今天手贱,在eclipse里面把项目删掉了,重新maven导入时,报出Cannot change version of project facet Dynamic Web Module to 3.0. ...
- 比赛F-F Perpetuum Mobile
比赛F-F Perpetuum Mobile 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=86640#problem/ ...
- vim: 字符串替换
:s/str1/str2/ 替换当前行第一个 str1 为 str2:s/str1/str2/g 替换当前行所有 str1 为 str2 ( 注意, s/xx/xxx/g 语句从s开始,中间的空格视 ...
- C# 模拟提交带附件(input type=file)的表单
今天调用某API时,对于文档中的传入参数:File[] 类型,感觉很陌生,无从下手! 按通常的方式在json参数中加入file的二进制数据提交,一直报错(参数错误)!后来经过多方咨询,是要换一种 表单 ...
- java int and string convert
int -> String int i=12345; String s=""; 第一种方法:s=i+""; 第二种方法:s=String.valueOf( ...