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.同一个网络协议.同一个端口,三者都满足就是同一个域,否则就是跨域问题了.首页广告需要一个轮播的效果, ...
随机推荐
- Tomcat embed
http://www.iflym.com/index.php/code/use-embeded-tomcat-to-javaee-start-tomcat.html http://java.dzone ...
- Delphi中使用TXMLDocument控件应注意的问题
今天写了一个类,其中用到了TXMLDocument控件.这个控件我是要动态生成的. 但是却遇到了非常奇怪的问题,下面分享一下 procedure TMainForm.Button1Click(Send ...
- hdu4336 Card Collector 状态压缩dp
Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- asp导航条子菜单横向
示意图:(代码红色部分为主要.) <%@ Master Language="C#" AutoEventWireup="true" CodeFile=&qu ...
- css中的滤镜
前几天在做一个app应用的时候,用到了滤镜.在之前我只是知道有这么个东西,但是具体的知识点其实我是不太清楚的,所以为了让自己能深刻记忆,专门把它来记录一下.. 一.滤镜的标识符:“filter”;语法 ...
- jQuery对DOM的操作
"jQuery中非常重要的部分,就是对DOM的操作!" "jQuery中非常重要的部分,就是对DOM的操作!" "jQuery中非常重要的部分,就是对 ...
- DevExpress ASP.NET 使用经验谈(2)-XPO对象的使用(使用默认数据连接)
接下来,我们通过一个控制台应用程序,介绍XPO对象的保存操作. 图一 添加新项目 图二 选择项目类型为控制台应用程序 查看生成的Program.cs代码文件,代码如下: using System; u ...
- UIButton 动态改变文本闪烁问题
当动态改变(比如一秒改变一次)按钮的Title的时候发现按钮每次都要闪烁一下:解决方法如下: self.settleButton.titleLabel.text = title; [self.sett ...
- JS 控制 form是否提交表单
问题背景:用php删除数据,希望在点击“删除”(button)的时候JS弹出confirm来确认是否删除. 此段代码为php中的form: <form action="?form=de ...
- div+css 布局下兼容IE6 IE7 FF常见问题
div+css 布局下兼容IE6 IE7 FF常见问题 收藏 所有浏览器 通用 (市面上主要用到的IE6 IE7 FF)height: 100px; IE6 专用 _height: 100px; IE ...