目录
org.hibernate
hibernate-validator
6.0.7.Final
clazz实体类:
- package com.xbb.ssm.model;
-
- import javax.validation.constraints.NotBlank;
- import javax.validation.constraints.NotNull;
-
- /**
- * @NotNull :作用于基本数据类型
- * @NotEmpty 作用于集合
- * @NotBlank 作用于字符串
- */
- public class Clazz {
- @NotNull(message = "班级编号不能为空")
- // @Size(max = 100,min = 10,message = "大小必须在10至100之间")
- protected Integer cid;
-
- @NotBlank(message = "班级名不能为空")
- protected String cname;
-
- @NotBlank(message = "班级教员老师不能为空")
- protected String cteacher;
-
- protected String pic;
-
- public Clazz(Integer cid, String cname, String cteacher, String pic) {
- this.cid = cid;
- this.cname = cname;
- this.cteacher = cteacher;
- this.pic = pic;
- }
-
- public Clazz() {
- super();
- }
控制层ClazzController:
- // 给数据添加服务端校验
- @RequestMapping("/valiAdd")
- public String valiAdd(@Validated Clazz clazz, BindingResult result,HttpServletRequest req){
- // 如果服务端验证不通过,有错误
- if(result.hasErrors()){
- // 服务端验证了实体类的多个属性,多个属性都没有验证通过
- List
fieldErrors = result.getFieldErrors(); - Map
map = new HashMap<>(); - for (FieldError fieldError : fieldErrors) {
- // 将多个属性的验证失败信息输送到控制台
- System.out.println(fieldError.getField() + ":" + fieldError.getDefaultMessage());
- map.put(fieldError.getField(),fieldError.getDefaultMessage());
- }
- req.setAttribute("errorMap",map);
- }else {
- this.clazzBiz.insertSelective(clazz);
- return "redirect:/clz/list";
- }
- return "clzEdit";
- }
clzEdit.jsp:
- <%--
- id:"text" name="cid" value="${b.cid }">"color: red;">${errorMap.cid}
- cname:"text" name="cname" value="${b.cname }">"color: red;">${errorMap.cname}
- cteacher:"text" name="cteacher" value="${b.cteacher }">"color: red;">${errorMap.cteacher}
- "submit">
效果展示:

什么是拦截器?
SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。
- package com.xbb.ssm.intercept;
-
- import org.springframework.web.servlet.HandlerInterceptor;
- import org.springframework.web.servlet.ModelAndView;
-
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
-
- public class OneHandlerInterceptor implements HandlerInterceptor {
-
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- // 预处理
- System.out.println("[OneHandlerInterceptor] . preHandle");
- return true;
- }
-
- @Override
- public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
- // 后处理
- System.out.println("[OneHandlerInterceptor] . postHandle...");
- }
-
- @Override
- public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
- // 完成后执行
- System.out.println("[OneHandlerInterceptor] . afterCompletion...");
- }
- }
-
- package com.xbb.ssm.web;
-
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
-
- /**
- * @author 冰冰
- * @create 2022-08-19 19:21
- */
- @Controller
- public class HelloController {
-
- @RequestMapping("hello")
- public String hello(){
- System.out.println("进入业务方法...");
- return "index";
- }
- }
-
-
-
-
"com.xnx.ssm.intercept.OneHandlerInterceptor"> -
运行效果:

- package com.xbb.ssm.intercept;
-
- import org.springframework.web.servlet.HandlerInterceptor;
- import org.springframework.web.servlet.ModelAndView;
-
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- /**
- * @author 冰冰
- * @create 2022-08-19 18:32
- */
- public class TwoHandlerInterceptor implements HandlerInterceptor {
-
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- // 预处理
- System.out.println("[TwoHandlerInterceptor] . preHandle");
- return true;
- }
-
- @Override
- public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
- // 后处理
- System.out.println("[TwoHandlerInterceptor] . postHandle...");
- }
-
- @Override
- public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
- // 完成后执行
- System.out.println("[TwoHandlerInterceptor] . afterCompletion...");
- }
- }
-
- <mvc:interceptors>
- <mvc:interceptor>
- <mvc:mapping path="/**"/>
- <bean class="com.xbb.ssm.intercept.OneHandlerInterceptor">bean>
- mvc:interceptor>
- <mvc:interceptor>
- <mvc:mapping path="/clz/**"/>
- <bean class="com.xbb.ssm.intercept.TwoHandlerInterceptor">bean>
- mvc:interceptor>
- mvc:interceptors>
效果

login.jsp:
- <%--
- Created by IntelliJ IDEA.
- User: Administrator
- Date: 2022/8/19
- Time: 19:55
- To change this template use File | Settings | File Templates.
- --%>
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>Titletitle>
- head>
- <body>
- 登录界面
- body>
- html>
-
LoginController:
- package com.xbb.ssm.web;
-
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
-
- import javax.servlet.http.HttpServletRequest;
-
- /**
- * @author 冰冰
- * @create 2022-08-19 19:52
- */
- @Controller
- public class LoginController {
-
- @RequestMapping("/login")
- public String login(HttpServletRequest request){
- // 登录成功需要保存用户信息
- String uname = request.getParameter("uname");
- if("zhangsan".equals(uname)){
- request.getSession().setAttribute("uname",uname);
- }
- return "index";
- }
-
- @RequestMapping("/loginout")
- public String loginout(HttpServletRequest request){
- request.getSession().invalidate();
- return "index";
- }
-
- }
-
效果
