日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

Spring mvc攔截器實現(xiàn)原理解析

瀏覽:29日期:2023-09-15 13:35:40

概述

SpringMVC的處理器攔截器類似于Servlet開發(fā)中的過濾器Filter,用于對處理器進行預處理和后處理。開發(fā)者可以自己定義一些攔截器來實現(xiàn)特定的功能。

過濾器與攔截器的區(qū)別:攔截器是AOP思想的具體應用。

過濾器

servlet規(guī)范中的一部分,任何java web工程都可以使用在url-pattern中配置了/*之后,可以對所有要訪問的資源進行攔截

攔截器

攔截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用 攔截器只會攔截訪問的控制器方法, 如果訪問的是jsp/html/css/image/js是不會進行攔截的

自定義攔截器

那如何實現(xiàn)攔截器呢?

想要自定義攔截器,必須實現(xiàn) HandlerInterceptor 接口。

新建一個Moudule , 添加web支持

配置web.xml 和 springmvc-servlet.xml 文件

編寫一個攔截器

package com.xiaohua.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í)行下一個攔截器 //如果返回false就不執(zhí)行下一個攔截器 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('------------清理------------'); }}

在springmvc的配置文件中配置攔截器

<!--關于攔截器的配置--><mvc:interceptors> <mvc:interceptor> <!--/** 包括路徑及其子路徑--> <!--/admin/* 攔截的是/admin/add等等這種 , /admin/add/user不會被攔截--> <!--/admin/** 攔截的是/admin/下的所有--> <mvc:mapping path='/**'/> <!--bean配置的就是攔截器--> <bean /> </mvc:interceptor></mvc:interceptors>

編寫一個Controller,接收請求

package com.xiaohua.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;//測試攔截器的控制器@Controllerpublic class InterceptorController { @RequestMapping('/interceptor') @ResponseBody public String testFunction() { System.out.println('控制器中的方法執(zhí)行了'); return 'hello'; }}

前端 index.jsp

<a href='http://m.b3g6.com/bcjs/${pageContext.request.contextPath}/interceptor' rel='external nofollow' >攔截器測試</a>

啟動tomcat 測試一下!

驗證用戶是否登陸(認證用戶)

實現(xiàn)思路

有一個登陸頁面,需要寫一個controller訪問頁面。

登陸頁面有一提交表單的動作。需要在controller中處理。判斷用戶名密碼是否正確。如果正確,向session中寫入用戶信息。返回登陸成功。

攔截用戶請求,判斷用戶是否登陸。如果用戶已經(jīng)登陸。放行, 如果用戶未登陸,跳轉到登陸頁面

代碼編寫

編寫一個登陸頁面 login.jsp

<%@ page contentType='text/html;charset=UTF-8' language='java' %><html><head> <title>Title</title></head><h1>登錄頁面</h1><hr><body><form action='${pageContext.request.contextPath}/user/login'> 用戶名:<input type='text' name='username'> <br> 密碼: <input type='password' name='pwd'> <br> <input type='submit' value='提交'></form></body></html>

編寫一個Controller處理請求

package com.xiaohua.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpSession;@Controller@RequestMapping('/user')public class UserController { //跳轉到登陸頁面 @RequestMapping('/jumplogin') public String jumpLogin() throws Exception { return 'login'; } //跳轉到成功頁面 @RequestMapping('/jumpSuccess') public String jumpSuccess() throws Exception { return 'success'; } //登陸提交 @RequestMapping('/login') public String login(HttpSession session, String username, String pwd) throws Exception { // 向session記錄用戶身份信息 System.out.println('接收前端==='+username); session.setAttribute('user', username); return 'success'; } //退出登陸 @RequestMapping('logout') public String logout(HttpSession session) throws Exception { // session 過期 session.invalidate(); return 'login'; }}

編寫一個登陸成功的頁面 success.jsp

<%@ page contentType='text/html;charset=UTF-8' language='java' %><html><head> <title>Title</title></head><body><h1>登錄成功頁面</h1><hr>${user}<a href='http://m.b3g6.com/bcjs/${pageContext.request.contextPath}/user/logout' rel='external nofollow' >注銷</a></body></html>

在 index 頁面上測試跳轉!啟動Tomcat 測試,未登錄也可以進入主頁!

<%@ page contentType='text/html;charset=UTF-8' language='java' %><html> <head> <title>$Title$</title> </head> <body> <h1>首頁</h1> <hr> <%--登錄--%> <a href='http://m.b3g6.com/bcjs/${pageContext.request.contextPath}/user/jumplogin' rel='external nofollow' >登錄</a> <a href='http://m.b3g6.com/bcjs/${pageContext.request.contextPath}/user/jumpSuccess' rel='external nofollow' >成功頁面</a> </body></html>

編寫用戶登錄攔截器

package com.xiaohua.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('login')) { return true; } HttpSession session = request.getSession(); // 如果用戶已登陸也放行 if(session.getAttribute('user') != null) { return true; } // 用戶沒有登陸跳轉到登陸頁面 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 { } public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { }}

在Springmvc的配置文件中注冊攔截器

<!--關于攔截器的配置--><mvc:interceptors> <mvc:interceptor> <mvc:mapping path='/**'/> <bean /> </mvc:interceptor></mvc:interceptors>

再次重啟Tomcat測試!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩中文字幕高清在线观看| 亚洲一区久久| 国产乱子精品一区二区在线观看| 日韩高清三区| 亚洲精品护士| 久久精品99国产国产精| 国产精品久久久久久久免费软件| 免费一级欧美在线观看视频| 韩日一区二区| 日本精品影院| 一区三区视频| 日韩在线网址| 麻豆精品在线播放| 亚洲涩涩在线| 亚洲一区激情| 国产亚洲字幕| 精品中文在线| 极品日韩av| 免费一级片91| 国产精品18| 欧美日韩亚洲在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美在线日韩| 日韩av有码| 亚洲综合另类| 国产欧美日韩一级| 久久国产日韩| 性色av一区二区怡红| 青草av.久久免费一区| 国产成人a视频高清在线观看| 欧美1级日本1级| 免费一区二区视频| 国产精品啊v在线| 亚洲天堂久久| 欧美午夜三级| 国产一卡不卡| 婷婷激情综合| 国产激情精品一区二区三区| 亚洲欧美综合| 欧美黄色一区二区| 国产精品中文字幕制服诱惑| 久久视频精品| 国产精品美女午夜爽爽| 婷婷色综合网| 精品免费av一区二区三区| 免费av一区二区三区四区| 日韩欧美中文字幕电影| 国产成人精品亚洲日本在线观看| 一区二区三区网站| 在线一区视频观看| 欧美亚洲自偷自偷| 激情综合网五月| 精品午夜av| 五月激激激综合网色播| 一区二区小说| 国产精品成久久久久| 日韩美女国产精品| 亚洲精品123区| 精品三级av| 亚洲精品国模| 国产精品美女| 人在线成免费视频| 国产精品一页| 日韩三级视频| 日韩一区精品字幕| 性欧美69xoxoxoxo| 日韩不卡在线| 国产资源在线观看入口av| 国产精品日本一区二区不卡视频| 免费成人在线视频观看| 亚洲先锋成人| 樱桃视频成人在线观看| 黄色精品视频| 久久av偷拍| 国产日韩一区| 人人爱人人干婷婷丁香亚洲| 亚洲综合另类| 红桃视频欧美| 国产在线成人| 久久久久国产| 欧美sss在线视频| 日韩欧美午夜| av资源中文在线| 日韩av免费大片| av中文字幕在线观看第一页 | 日韩欧美中文| 精品国产第一福利网站| 久久久久97| 美女在线视频一区| 日韩精品久久理论片| 亚洲欧美一级| 亚洲精品乱码| 日本一区二区中文字幕| 日韩激情视频网站| 日韩国产一二三区| 欧美永久精品| 国产福利一区二区三区在线播放| 国产日韩在线观看视频| 麻豆成人综合网| 精品美女在线视频| 电影天堂国产精品| 宅男在线一区| 中文字幕一区二区三区日韩精品 | 久久久久久美女精品| 久久国产免费| 国产精品毛片一区二区三区| 日韩中文字幕av电影| 亚洲毛片视频| 国产精品a久久久久| 国产精品精品| 日韩精品电影一区亚洲| 麻豆一区二区三| 福利在线一区| 亚洲日本网址| 野花国产精品入口| 中文一区一区三区免费在线观| 亚洲综合小说| 久久精品xxxxx| 天堂中文av在线资源库| 尤物在线精品| 日韩av黄色在线| 国产中文字幕一区二区三区| 欧美日韩国产v| 蜜臀久久99精品久久久久宅男| 91精品丝袜国产高跟在线| 黄色欧美在线| 9色国产精品| 国产一卡不卡| 欧美aa在线观看| 亚洲精品麻豆| 福利欧美精品在线| 老鸭窝亚洲一区二区三区| 国产毛片一区二区三区 | 国产亚洲精品精品国产亚洲综合| 精品国产99| 一区福利视频| 国产精品白丝一区二区三区| 亚洲第一精品影视| 欧美午夜网站| 精品三级久久| 一区二区三区四区精品视频| 久久精品国产久精国产| 午夜欧美精品| 免费一级欧美片在线观看网站 | 中文久久精品| 国产美女久久| 国产二区精品| 久久精品五月| 国产精品嫩草99av在线| 国产精品magnet| 欧美特黄a级高清免费大片a级| 91免费精品国偷自产在线在线| 日韩中文在线电影| 日韩和欧美一区二区| 国产精品久久久久av电视剧| 亚洲麻豆一区| 米奇777超碰欧美日韩亚洲| 国产精品99久久免费观看| 亚洲黄色影院| 中文字幕在线免费观看视频| 婷婷精品在线| 欧美精品自拍| 激情综合五月| 91麻豆精品| 日韩精品一二三| 欧美日韩一区二区三区四区在线观看 | 亚洲女人av| 蜜桃视频欧美| 欧美激情一区| 日韩中文字幕1| 日韩不卡免费高清视频| 日韩久久99| 欧美亚洲在线日韩| 国产极品嫩模在线观看91精品| 亚洲精品小说| 国产成人精选| 久久国产日韩欧美精品| 欧美日韩视频| 狂野欧美性猛交xxxx| 免费不卡在线视频| 久久影院一区| 日韩综合在线| 国产亚洲精品精品国产亚洲综合| 国产亚洲综合精品| 久久久久国产精品一区三寸 | 国产白浆在线免费观看| 91亚洲无吗| 在线看片一区| 欧美一级专区| 亚洲作爱视频| 欧美成人日韩| 精精国产xxxx视频在线野外| 久久亚洲视频| 亚洲国产不卡| 久久一级电影| 久久精品在线| 成人黄色av| 福利视频一区| 97精品国产福利一区二区三区| 国产精品久久乐|