日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

拦截器---SpringMVC(权限拦截)

發布時間:2023/12/3 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 拦截器---SpringMVC(权限拦截) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

攔截器

概述

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

**過濾器與攔截器的區別:**攔截器是AOP思想的具體應用。

過濾器

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

攔截器

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

自定義攔截器

那如何實現攔截器呢?

想要自定義攔截器,必須實現 HandlerInterceptor 接口。

1、新建一個Moudule , springmvc-07-Interceptor , 添加web支持

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

3、編寫一個攔截器

package com.kuang.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 {//在請求處理的方法之前執行//如果返回true執行下一個攔截器//如果返回false就不執行下一個攔截器public boolean preHandle(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse, Object o) throws Exception {System.out.println("------------處理前------------");return true;}//在請求處理方法執行之后執行public void postHandle(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView)throws Exception {System.out.println("------------處理后------------");}//在dispatcherServlet處理后執行,做清理工作.public void afterCompletion(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {System.out.println("------------清理------------");} }

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

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

5、編寫一個Controller,接收請求

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

6、前端 index.jsp

<a href="${pageContext.request.contextPath}/interceptor">攔截器測試</a>

7、啟動tomcat 測試一下!

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xsNxRTbL-1609816486371)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

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

實現思路

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

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

3、攔截用戶請求,判斷用戶是否登陸。如果用戶已經登陸。放行, 如果用戶未登陸,跳轉到登陸頁面

測試:

1、編寫一個登陸頁面 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>

2、編寫一個Controller處理請求

package com.kuang.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) throwsException {// 向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";} }

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

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><h1>登錄成功頁面</h1> <hr>${user} <a href="${pageContext.request.contextPath}/user/logout">注銷</a> </body> </html>

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

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html><head><title>$Title$</title></head><body><h1>首頁</h1><hr> <%--登錄--%><a href="${pageContext.request.contextPath}/user/jumplogin">登錄</a><a href="${pageContext.request.contextPath}/user/jumpSuccess">成功頁面</a></body> </html>

5、編寫用戶登錄攔截器

package com.kuang.config;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException;public class LoginIntercepor 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 {} }

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

<!--關于攔截器的配置--> <mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><bean id="loginInterceptor" class="com.kuang.interceptor.LoginInterceptor"/></mvc:interceptor> </mvc:interceptors>

7、再次重啟Tomcat測試!

OK,測試登錄攔截功能無誤.

總結

以上是生活随笔為你收集整理的拦截器---SpringMVC(权限拦截)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。