zoukankan      html  css  js  c++  java
  • Spring MVC拦截器的使用和数据效验

    什么是拦截器:

    Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。在SpringMVC中通过实现HandlerInterceptor接口实现自定义拦截器类。

    拦截器的执行流程

    自定义拦截器类如下

    public class MyIntercept implements HandlerInterceptor {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("========拦截器当中的preHandle()方法========");
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            System.out.println("=======在HandlerAdapter之后执行,在DispatcherServlet解析视图之前执行========");
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            System.out.println("=======呈现之后调用=======");
        }
    }

    编写控制器

    Controller
    @RequestMapping("/my")
    public class MyController {
        @RequestMapping("doFirst")
        public String doFirst(){
            System.out.println("======控制器的执行方法=======");
            return "index";
        }

    拦截器的配置

    输出

      <!--配置拦截器-->
        <mvc:interceptors>
            <mvc:interceptor>
                <mvc:mapping path="/my/**"/>
                <bean class="com.springmvc.Interceptor.MyIntercept"/>
            </mvc:interceptor>
        </mvc:interceptors>

    输出

    Spring MVC的数据校验

    架包

    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
        <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-validator</artifactId>
          <version>5.4.1.Final</version>
        </dependency>

    jsp页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
          <form action="/my/validate" method="post"/>
                 编号:<input type="text" name="user_id"/>  <br/>
                 姓名:<input type="text" name="user_name"/>  <br/>
                 邮箱:<input type="text" name="user_email"/> <br/>
               手机号:<input type="text" name="user_phone"/>  <br/>
                 地址:<input type="text" name="user_address"/>  <br/>
              身份证号:<input type="text" name="user_cardCode"/>  <br/>
                       <input type="submit" value="提交"/>
    </form>
    </body>

    实体类

    public class UserInfo {
        @NotNull(message = "编号不能为空")
        private Integer user_id;
    
        @NotNull
        @Length(min = 2,max = 8,message = "用户名不能少于2位大于8位")
        private String user_name;
    
        @Email(message = "邮箱格式不正确")
        private String user_email;
    
        @Pattern(regexp = "",message = "手机号格式不正确")
        private String user_phone;
    
        private String user_address;
    
        @Pattern(regexp = "",message = "身份证号不正确")
        private String user_cardCode;
    
        public Integer getUser_id() {
            return user_id;
        }
    
        public void setUser_id(Integer user_id) {
            this.user_id = user_id;
        }
    
        public String getUser_name() {
            return user_name;
        }
    
        public void setUser_name(String user_name) {
            this.user_name = user_name;
        }
    
        public String getUser_email() {
            return user_email;
        }
    
        public void setUser_email(String user_email) {
            this.user_email = user_email;
        }
    
        public String getUser_phone() {
            return user_phone;
        }
    
        public void setUser_phone(String user_phone) {
            this.user_phone = user_phone;
        }
    
        public String getUser_address() {
            return user_address;
        }
    
        public void setUser_address(String user_address) {
            this.user_address = user_address;
        }
    
        public String getUser_cardCode() {
            return user_cardCode;
        }
    
        public void setUser_cardCode(String user_cardCode) {
            this.user_cardCode = user_cardCode;
        }
    }

    编写控制器

      @RequestMapping("/validate")
        public String validate(@Valid UserInfo info, BindingResult bindingResult){
            if (bindingResult.hasErrors()){
                List<ObjectError> errors=bindingResult.getAllErrors();
                for (ObjectError error:errors){
                    System.out.println(error.getDefaultMessage());
                }
            }
            System.out.println(info.getUser_email());
            return "index";
        }
  • 相关阅读:
    格式化数字,将字符串格式的数字,如:1000000 改为 1 000 000 这种展示方式
    jquery图片裁剪插件
    前端开发采坑之安卓和ios的兼容问题
    页面消息提示,上下滚动
    可以使用css的方式让input不能输入文字吗?
    智慧农村“三网合一”云平台测绘 大数据 农业 信息平台 应急
    三维虚拟城市平台测绘 大数据 规划 三维 信息平台 智慧城市
    农业大数据“一张图”平台测绘 大数据 房产 国土 农业 信息平台
    应急管理管理局安全生产预警平台应急管理系统不动产登记 测绘 大数据 规划 科教 三维 信息平台
    地下综合管廊管理平台测绘 大数据 地下管线 三维 信息平台
  • 原文地址:https://www.cnblogs.com/Chencheno/p/11842856.html
Copyright © 2011-2022 走看看