spring参数校验,form表单形式,以及http接口形式
2017-03-09 17:46
656 查看
背景
字段校验一般分为两种方式,第一种,前端校验,第二周,服务器端校验,不论前端校验如何,服务器端的校验是必不可少的,那么,在springMvc的框架中,怎么校验比较方便实用呢?在此,我会分别针对服务器端的form表单提交服务器校验和普通的http接口提交服务器服务器端的校验方式做一些介绍。
一、form表单提交服务器校验字段方式
1、hibernate-validator配合spring的form标签方式
需要的jar:hibernate-validator-4.3.0.Final.jar
jboss-logging-3.2.1.Final.jar
validation-api-1.0.0.GA.jar
要校验的实体:
import javax.validation.constraints.Max; import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.Length; public class User { @NotNull(message="名字不能为空") @Length(min = 6,max=12,message="用户名要在六位以上") private String userName; @Max(value=120,message="年龄最大不能查过120") private int age; // @Email(message="邮箱格式错误") // private String email; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } // public String getEmail() { // return email; // } // public void setEmail(String email) { // this.email = email; // } }
这个需要校验的实体用注解对字段校验方式进行标注
处理页面请求的Controller:
@Controller @RequestMapping(value = "/user") public class UserController { @RequestMapping("/login") public String login(@Valid User user, BindingResult result, Model model,HttpServletRequest request) { //需要添加,否则spring的form标签会处理会失败,报错 model.addAttribute(user); if (result.hasFieldErrors()) { return "user/login"; } return "/"; } }
控制器中,要用@Valid标记要校验的实体,并且紧跟着的参数是BindingResult result,这样在处理业务之前,会先校验user这个实体里面的字段是否合法,如果不合法,会将在User这个bean中的提示消息返回给jsp页面中(但是这个需要spring form标签的支持,一旦用了spring from 的标签作为表单支持的时候,对应的Controller 的方法中一定要给model或者modelMap中返回设置一个被校验对象的值,否则会报错,具体下面会有介绍)
jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri = "http://www.springframework.org/tags/form" prefix="sf" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <style type="text/css"> .error{ color:red; } </style> </head> <body> 登录页面<br> <sf:form method="POST" modelAttribute="user"> userName : <sf:input path="userName"/> <sf:errors path="userName" cssClass="error"/><br> age : <sf:input path="age"/> <sf:errors path="age" cssClass="error"/><br> <input type="submit" value="提交"> </sf:form> </body> </html>
jsp页面中必须要引入 <%@ taglib uri = "http://www.springframework.org/tags/form" prefix="sf" %> 这个是 spring form 的标签库 然后在页面中使用 spring form 标签库支持的标签书写form表单,在每一个input字段的后面,书写<sf:errors path="age" cssClass="error"/><br>,这个errors的path字段要与对应的input标签的path值对应,才能在渲染页面的时候正常渲染注入。
效果图:
二、http接口请求参数校验用aop实现,以后补充代码
相关文章推荐
- 以form表单的形式传递参数给rest接口
- ------------参数传递的四种形式----- URL,超链接,js,form表单
- 参数传递的四种形式----- URL,超链接,js,form表单
- spring cloud feign 接口继承以及参数传递的问题
- 关于怎么解决从ajax传入的json参数注入到Controller的接收对象 以及如何在Spring Boot项目使用参数校验
- 利用HttpClient发送基于Content-Type="multipart/form-data"形式的表单
- 参数传递的四种形式----- URL,超链接,js,form表单
- spring mvc 用map的形式接收form表单的参数:
- jquery多选择动态参数的使用以及ajax异步请求中提交整个form表单中serializeArray()的使用以及后台值得获取方式
- spring实战-参数传递,表单处理及表单校验
- 四种参数传递的形式――URL,超链接,js,form表单
- httpclient4.3.X post请求上传,将文件封装到请求体中(不以form表单形式)
- jQuery form插件的使用--用 formData 参数校验表单,验证后提交(简单验证).
- SpringBoot开发详解(五)--Controller接收参数以及参数校验
- spring防止F5刷新提交重复表单,为form加入参数token
- 四种参数传递的形式――URL,超链接,js,form表单
- 参数传递的四种形式----- URL,超链接,js,form表单
- 四种参数传递的形式——URL,超链接,js,form表单
- vue-resource 设置请求的参数以formData形式以及设置请求的过滤器
- springMvc通过Map形式接收多个参数form表单数据