當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot 基础拦截器
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot 基础拦截器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
所有的開發(fā)之中攔截器一定是一個必須要使用的功能,利用攔截器可以更加有效的實現(xiàn)數(shù)據(jù)的驗證處理在SpringBoot之中所使用的攔截器與Spring中的攔截器完全一樣.2.1、基礎(chǔ)攔截器操作攔截器是一種AOP操作實現(xiàn),那么在AOP之中用戶一定不需要去關(guān)注攔截器的存在,用戶只需要按照自己習(xí)慣的方式進行代碼的編寫即可。1、創(chuàng)建一個程序的控制器類:package com.microboot.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import com.microboot.util.controller.AbstractBaseController;
import com.microboot.vo.Member;@Controller
public class MemberController extends AbstractBaseController{@RequestMapping(value = "/member_add_pre", method = RequestMethod.GET)public String memberAddPre(Model model) {return "member_add";}@RequestMapping(value = "/member_add", method = RequestMethod.POST)@ResponseBodypublic Object memberAdd(Member member) {return member;}}
2、定義一個member_add.html的頁面實現(xiàn)表單定義:member_add.html<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>SpringBoot模板渲染</title><link rel="icon" type="image/x-icon" href="/images/favicon.ico" /><meta http-equiv="Content-Type" content="text/html;charse=UTF-8">
</head>
<body><form th:action="@{/member_add}" method="post">用戶編號:<input type="text" name="mid" value="101"/><br/>用戶姓名:<input type="text" name="name" value="SMITH"/><br/><input type="submit" value="提交" /><input type="reset" value="重置" /></form>
</body>
</html>
3、此時一個正常的MVC的代碼就實現(xiàn)完成了,隨后就需要編寫一個攔截器對其進行控制.為了更好的說明問題,現(xiàn)在將攔截器定義package com.microboot.util;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;public class MyInterceptor implements HandlerInterceptor {private Logger log = LoggerFactory.getLogger(MyInterceptor.class);@Overridepublic boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object handler) throws Exception {HandlerMethod handlerMethod = (HandlerMethod)handler;this.log.info("【*** MyInterceptor.preHandle ***】"
+ handlerMethod.getBean().getClass().getSimpleName());// 如果返回false表示不繼續(xù)請求,如果返回true表示繼續(xù)請求return true;}@Overridepublic void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object handler, ModelAndView modelAndView)throws Exception {HandlerMethod handlerMethod = (HandlerMethod)handler;this.log.info("【*** MyInterceptor.postHandle ***】"
+ handlerMethod.getBean().getClass().getSimpleName());this.log.info("【*** MyInterceptor.postHandle ***】" + modelAndView);}@Overridepublic void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1,
Object handler, Exception arg3)throws Exception {HandlerMethod handlerMethod = (HandlerMethod)handler;this.log.info("【*** MyInterceptor.afterCompletion ***】攔截處理完畢");}}
4、那么此時如果要想使用攔截器則必須有一個攔截器的配置類。現(xiàn)在我們已經(jīng)不再編寫配置文件了,所有的配置都使用一個類完成。package com.microboot.config;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import com.microboot.util.MyInterceptor;@Configuration
// 定義MVC的配置
public class MyWebApplicationConfig extends WebMvcConfigurerAdapter {@Override// 進行攔截器的注冊處理操作public void addInterceptors(InterceptorRegistry registry) {// 匹配路徑registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");super.addInterceptors(registry);}
}
?
總結(jié)
以上是生活随笔為你收集整理的SpringBoot 基础拦截器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot 上传多个文件
- 下一篇: SpringBoot AOP拦截器