色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

springboot攔截器Interceptor的使用,你都了解嗎

瀏覽:97日期:2023-02-24 08:26:09

springmvc 中的攔截器可以對請求進行判別, 在請求到達控制器之前, 把非法的請求給攔截掉下面來說一說, 它在springboot中的使用

攔截器是可以有多個的, 對不同的 url 進行攔截我們這個例子設想的是, 如果用戶登錄過, 就會用戶設置一個 session , 如果session中 有user 的信息,就說明用戶是登錄過的

1.我們先創(chuàng)建一個 User 的實例對象 domain

public class User { private Integer id; private String name; private Integer age; public User() { } public User(Integer id, String name, Integer age) {this.id = id;this.name = name;this.age = age; } public Integer getId() {return id; } public void setId(Integer id) {this.id = id; } public String getName() {return name; } public void setName(String name) {this.name = name; } public Integer getAge() {return age; } public void setAge(Integer age) {this.age = age; }}

2.創(chuàng)建一個攔截器 LoginInterceptor 實現(xiàn) HandlerInterceptor 接口,并實現(xiàn)其方法, 主要是 preHandle方法,其它的可以不用管

package com.huang.interceptor;import com.huang.domain.User;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//如果用戶登錄過才可以訪問HttpSession session = request.getSession();User user = (User)session.getAttribute('user');if(user == null){ response.sendRedirect(request.getContextPath()+'/user/login'); return false;}else{ return true;} } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { }}

在我們的springmvc項目中, 創(chuàng)建好攔截器, 下一步就是要在 springmvc的配置文件xml 中去 寫 interceptors > interceptor > bean class=“攔截器的全類名”但是在 springboot中, 我們不用這樣寫了, 我們可以使用 配置類的方式去完成

所以我們新建一個配置類 InterceptorConfig 去實現(xiàn) WebMvcConfigurer 接口

package com.huang.configure;import com.huang.interceptor.LoginInterceptor;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configurationpublic class InterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns('/user/**').excludePathPatterns('/user/login','/user/logout','/user/setsession'); }}

注意 我們要使用一個注解 @Configuration 表示這是一個配置類, springboot 在啟動的時候會自動掃瞄這個類上面的代碼可以看出, InterceptorRegistry 是一個 interceptor的注冊器類,使用 addInterceptor(new XXXInterceptor) 來把這個攔截器類注冊好, addPathPatterns('/user/**') 這個方法是被重構過的, 可以接受多個字符串參數(shù), 也可以接受一個list的集合, 也就是匹配的 url , excludePathPatterns() 也是重構過的, 表示哪些 url 是排除的, 也就是不經(jīng)過這個攔截器

上面的攔截器和注冊都完成了, 我們就可以在控制器中寫幾個方法測試了

package com.huang.controller;import com.huang.domain.User;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;@Controller@RequestMapping(value='/user')public class UserController { @RequestMapping(value='/login') @ResponseBody public String userlogin(){return '跳轉到用戶登錄的頁面'; } @RequestMapping(value='/gomain') @ResponseBody public String goMain(){return '這是用戶進入后的頁面'; } @RequestMapping(value='/logout') @ResponseBody public String logout(){return '這是用戶登出界面'; } @RequestMapping(value='/setsession') @ResponseBody public Object setSession(HttpServletRequest request){HttpSession session = request.getSession();session.setAttribute('user',new User(1,'huang',20));return 'OK'; }}

在用戶沒有請求過 /user/setsession的時候,如果用戶請求了 /user/gomain 攔截器就會發(fā)揮作用, 把它跳轉到/user/login的接口上去,如果用戶請求過/user/setsession的話, 再去請求/user/gomain 攔截器就會放行, 請求到相應的結果

到此這篇關于springboot攔截器Interceptor的使用的文章就介紹到這了,更多相關springboot攔截器Interceptor內容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Spring
相關文章:
主站蜘蛛池模板: 日韩一级欧美一级在线观看 | 欧美人与zoxxxx另类9 | 欧美一级毛片欧美一级成人毛片 | 久久影院一区二区三区 | 成人欧美精品大91在线 | 精品久久久久久中文字幕一区 | 在线国产一区二区三区 | 亚洲国产成人久久三区 | 久久久久国产精品美女毛片 | 京野结衣免费一区二区 | 国产精品blacked在线 | 黄色三级视频在线播放 | 男女男精品视频在线播放 | 久久看精品| 成人三级网址 | 国产精品久久久久999 | 国产成人精品一区二区三区 | 一级毛片不卡免费看老司机 | 三级色网站 | 国产一区二区三区免费在线视频 | 97视频免费在线观看 | 久久中文亚洲国产 | 国产a国产| 亚洲一区二区三区91 | 欧美成人亚洲 | 色综合久久一本首久久 | 日韩中文精品亚洲第三区 | 在线观看精品自拍视频 | 欧美大片无尺码在线观看 | 中文字幕免费视频 | 成年网站免费视频黄 | 日韩欧美在线综合网高清 | 色偷偷亚洲精品一区 | 亚洲成人黄色在线 | 国产一在线精品一区在线观看 | 涩涩网站 | 怡红院老首页主页入口 | 亚洲 欧美 日韩在线 | 黄色亚洲网站 | 一级毛片儿 | 免费看真人a一级毛片 |