您的位置:首页 > 理论基础 > 计算机网络

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实现,以后补充代码

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐