柚子快報(bào)激活碼778899分享:nginx 運(yùn)維 Title
柚子快報(bào)激活碼778899分享:nginx 運(yùn)維 Title
1.介紹
2.攔截器實(shí)現(xiàn)方式
3.自定義攔截器
4.案例
結(jié)語
1.介紹
====
**主要用于攔截用戶請求并作相應(yīng)的處理。**例如在購物網(wǎng)站中通過攔截器可以攔截未登錄的用戶,禁止其購買商品,或者使用它來驗(yàn)證已登錄用戶是否有相應(yīng)的操作權(quán)限等,Spring MVC提供了攔截器功能,通過配置即可對(duì)請求進(jìn)行攔截處理。
攔截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用 攔截器只會(huì)攔截訪問的控制器方法, 如果訪問的是jsp/html/css/image/js是不會(huì)進(jìn)行攔截的
2.攔截器實(shí)現(xiàn)方式
=========
通常攔截器類可以通過兩種方式來定義。
1.通過實(shí)現(xiàn)HandlerInterceptor接口,或繼承HandlerInterceptor接口的實(shí)現(xiàn)類(如HandlerInterceptorAdapter)來定義。
2.通過實(shí)現(xiàn)WebRequestInterceptor接口,或繼承WebRequestInterceptor接口的實(shí)現(xiàn)類來定義。
以實(shí)現(xiàn)HandlerInterceptor接口方式為例,接下來開始實(shí)現(xiàn)自定義攔截器。
3.自定義攔截器
========
(1)創(chuàng)建Maven項(xiàng)目,并添加web支持
(2)配置web.xml和SpringMVC核心配置文件
(3)編寫一個(gè)攔截器
package com.yixin.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor implements HandlerInterceptor {
//在請求處理的方法之前執(zhí)行
//如果返回true執(zhí)行下一個(gè)攔截器
//如果返回false就不執(zhí)行下一個(gè)攔截器
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
System.out.println(“------------處理前------------”);
return true;
}
//在請求處理方法執(zhí)行之后執(zhí)行
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
System.out.println(“------------處理后------------”);
}
//在dispatcherServlet處理后執(zhí)行,做清理工作.
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
System.out.println(“------------清理------------”);
}
}
(4)在springmvc核心配置文件中配置攔截器
mvc:interceptors
mvc:interceptor
(5)編寫一個(gè)Controller,接收請求
//測試攔截器的控制器
@Controller
@RequestMapping(“test”)
public class InterceptorController {
@RequestMapping(“/interceptor”)
public String testFunction() {
System.out.println(“控制器中的方法執(zhí)行了”);
return “hello”;
}
}
(6)編寫前端
index.jsp
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
$Title$
攔截器測試
hello.jsp
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
Title
hello
啟動(dòng)tomcat,查看運(yùn)行結(jié)果:
4.案例
====
看到這里理解了攔截器后,我們來實(shí)現(xiàn)一個(gè)案例:
用戶沒有登錄是無法進(jìn)入購買頁面的,只有登錄過后才能進(jìn)入購買頁面。
(1)編寫攔截器類
package com.yixin.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
// 如果是登陸頁面則放行
System.out.println("uri: " + request.getRequestURI());
if (request.getRequestURI().contains(“l(fā)ogin”)) {
return true;
}
HttpSession session = request.getSession();
// 如果用戶已登陸也放行
if(session.getAttribute(“user”) != null) {
return true;
}
// 用戶沒有登陸跳轉(zhuǎn)到登陸頁面
request.getRequestDispatcher(“/WEB-INF/jsp/login.jsp”).forward(request, response);
return false;
}
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)Java工程師,想要提升技能,往往是自己摸索成長或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年Java開發(fā)全套學(xué)習(xí)資料》,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Java開發(fā)知識(shí)點(diǎn),真正體系化!
由于文件比較大,這里只是將部分目錄大綱截圖出來,每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且后續(xù)會(huì)持續(xù)更新
如果你覺得這些內(nèi)容對(duì)你有幫助,可以添加V獲取:vip1024b (備注Java)
最后
即使是面試跳槽,那也是一個(gè)學(xué)習(xí)的過程。只有全面的復(fù)習(xí),才能讓我們更好的充實(shí)自己,武裝自己,為自己的面試之路不再坎坷!今天就給大家分享一個(gè)Github上全面的Java面試題大全,就是這份面試大全助我拿下大廠Offer,月薪提至30K!
我也是第一時(shí)間分享出來給大家,希望可以幫助大家都能去往自己心儀的大廠!為金三銀四做準(zhǔn)備! 一共有20個(gè)知識(shí)點(diǎn)專題,分別是:
Dubbo面試專題
JVM面試專題
Java并發(fā)面試專題
Kafka面試專題
MongDB面試專題
MyBatis面試專題
MySQL面試專題
Netty面試專題
RabbitMQ面試專題
Redis面試專題
Spring Cloud面試專題
SpringBoot面試專題
zookeeper面試專題
常見面試算法題匯總專題
計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)專題
設(shè)計(jì)模式專題
一個(gè)人可以走的很快,但一群人才能走的更遠(yuǎn)。如果你從事以下工作或?qū)σ韵赂信d趣,歡迎戳這里加入程序員的圈子,讓我們一起學(xué)習(xí)成長!
AI人工智能、Android移動(dòng)開發(fā)、AIGC大模型、C C#、Go語言、Java、Linux運(yùn)維、云計(jì)算、MySQL、PMP、網(wǎng)絡(luò)安全、Python爬蟲、UE5、UI設(shè)計(jì)、Unity3D、Web前端開發(fā)、產(chǎn)品經(jīng)理、車載開發(fā)、大數(shù)據(jù)、鴻蒙、計(jì)算機(jī)網(wǎng)絡(luò)、嵌入式物聯(lián)網(wǎng)、軟件測試、數(shù)據(jù)結(jié)構(gòu)與算法、音視頻開發(fā)、Flutter、IOS開發(fā)、PHP開發(fā)、.NET、安卓逆向、云計(jì)算
88474464)]
計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)專題
[外鏈圖片轉(zhuǎn)存中…(img-1Yng4A32-1712188474465)]
設(shè)計(jì)模式專題
[外鏈圖片轉(zhuǎn)存中…(img-sp7tfqA5-1712188474465)]
一個(gè)人可以走的很快,但一群人才能走的更遠(yuǎn)。如果你從事以下工作或?qū)σ韵赂信d趣,歡迎戳這里加入程序員的圈子,讓我們一起學(xué)習(xí)成長!
AI人工智能、Android移動(dòng)開發(fā)、AIGC大模型、C C#、Go語言、Java、Linux運(yùn)維、云計(jì)算、MySQL、PMP、網(wǎng)絡(luò)安全、Python爬蟲、UE5、UI設(shè)計(jì)、Unity3D、Web前端開發(fā)、產(chǎn)品經(jīng)理、車載開發(fā)、大數(shù)據(jù)、鴻蒙、計(jì)算機(jī)網(wǎng)絡(luò)、嵌入式物聯(lián)網(wǎng)、軟件測試、數(shù)據(jù)結(jié)構(gòu)與算法、音視頻開發(fā)、Flutter、IOS開發(fā)、PHP開發(fā)、.NET、安卓逆向、云計(jì)算
柚子快報(bào)激活碼778899分享:nginx 運(yùn)維 Title
文章鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。