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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

009_拦截器

發布時間:2025/4/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 009_拦截器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 單個攔截器執行流程

1. 創建一個攔截器類, 需要實現HandlerInterceptor接口

2. 在springmvc.xml里配置我們創建的攔截器

3. 攔截器preHandle方法, 在控制器方法執行前被執行。可以做一些登錄攔截、權限認證等操作。

4. 攔截器preHandle方法, 返回true放行, false攔截。

5. 攔截器postHandle方法, 在控制器方法執行后, 返回ModelAndView之前被執行。設置或者清理頁面共用參數等操作。

6. 攔截器afterCompletion方法, 在控制器方法執行后被執行。處理異常、記錄日志等操作。

7. 攔截器放行的話, 執行流程

8. 攔截器攔截的話, 執行流程

二. 多個攔截器執行流程

1. 創建第二個攔截器類

2. 在springmvc.xml里配置多個攔截器

3. 多個攔截器的執行流程

4. 攔截器一攔截的話, 執行流程

5. 攔截器一放行, 攔截器二攔截的話, 執行流程

6. 在springmvc.xml里先配置攔截器二, 再配置攔截器一, 攔截器都放行的話執行方法順序

三. 攔截器例子

1. 新建一個名為SpringMVCInterceptor的Web工程, 同時拷入相關jar包

2. 新建一個名為MyInterceptor.java的攔截器

package com.lywgames.interceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;public class MyInterceptor implements HandlerInterceptor {// 在控制器方法執行前被執行??梢宰鲆恍┑卿洈r截、權限認證等操作。@Overridepublic boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handler) throws Exception {System.out.println("MyInterceptor.preHandle");// 返回true放行, false攔截。return true;}// 在控制器方法執行后, 返回ModelAndView之前被執行。設置或者清理頁面共用參數等操作。@Overridepublic void postHandle(HttpServletRequest req, HttpServletResponse res, Object handler, ModelAndView mav) throws Exception {System.out.println("MyInterceptor.postHandle");mav.addObject("name", "張三");}// 在控制器方法執行后被執行。處理異常、記錄日志等操作。@Overridepublic void afterCompletion(HttpServletRequest req, HttpServletResponse res, Object handler, Exception e) throws Exception {System.out.println("MyInterceptor.afterCompletion");}}

3. 新建一個名為MyInterceptor2.java的攔截器

package com.lywgames.interceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;public class MyInterceptor2 implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handler) throws Exception {System.out.println("MyInterceptor2.preHandle");return true;}@Overridepublic void postHandle(HttpServletRequest req, HttpServletResponse res, Object handler, ModelAndView mav) throws Exception {System.out.println("MyInterceptor2.postHandle");}@Overridepublic void afterCompletion(HttpServletRequest req, HttpServletResponse res, Object handler, Exception e) throws Exception {System.out.println("MyInterceptor2.afterCompletion");}}

4. 新建一個名為InterceptorAction.java的控制器

package com.lywgames.web.action;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;@Controller public class InterceptorAction {@RequestMapping("interceptor")public String interceptor() {System.out.println("interceptor");return "login";} }

5. 在src目錄下配置springmvc.xml

6. 修改web.xml配置

7. 編寫index.jsp

8. 編寫login.jsp

9. 運行項目

10. 登錄成功

四. 攔截器重定向用戶登錄例子

1. 新建一個名為InterceptorUserLogin的Web工程, 同時拷入相關jar包

2. 新建一個名為LoginInterceptor.java的攔截器

package com.lywgames.web.action;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handler) throws Exception {Object userName = req.getSession().getAttribute("userName");String sp = req.getServletPath();if(sp.contains("user") || userName != null) {return true;}else {res.sendRedirect(req.getContextPath() + "/user/toLogin.action");return false;}}@Overridepublic void postHandle(HttpServletRequest req, HttpServletResponse res, Object handler, ModelAndView mav) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest req, HttpServletResponse res, Object handler, Exception e) throws Exception {}}

3. 新建一個名為Item.java的實體類

package com.lywgames.domain;import java.io.Serializable; import java.util.Date;public class Item implements Serializable{private static final long serialVersionUID = 1L;// 商品idprivate Integer id;// 商品名稱private String name;// 商品價格private Double price;// 商品創建時間private Date createtime;// 商品描述private String detail;public Item() { }public Item(Integer id, String name, Double price, Date createtime, String detail) {this.id = id;this.name = name;this.price = price;this.createtime = createtime;this.detail = detail;}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 Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}public Date getCreatetime() {return createtime;}public void setCreatetime(Date createtime) {this.createtime = createtime;}public String getDetail() {return detail;}public void setDetail(String detail) {this.detail = detail;} }

4. 新建一個名為ItemAction.java的處理器

package com.lywgames.web.action;import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.lywgames.domain.Item;@Controller @RequestMapping("item") public class ItemAction {List<Item> itemList = new ArrayList<Item>();public ItemAction() {itemList.add(new Item(1, "冰箱", 1999.0, new Date(), "保鮮。"));itemList.add(new Item(2, "電腦", 8888.0, new Date(), "網上沖浪"));itemList.add(new Item(3, "洗衣機", 4000.0, new Date(), "從此不用手。"));itemList.add(new Item(4, "空調", 2600.0, new Date(), "冬天制熱, 夏天制冷。"));itemList.add(new Item(5, "液晶電視", 20000.0, new Date(), "曲面屏幕"));}@RequestMapping(value="findAllProducts")public ModelAndView findAllProducts() { ModelAndView mav = new ModelAndView();mav.addObject("itemList", itemList);mav.setViewName("itemList");return mav;}}

5. 新建一個名為UserController.java的處理器

package com.lywgames.web.action;import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;@Controller @RequestMapping("user") public class UserController {@RequestMapping("toLogin")public String toLogin() {return "login";}@RequestMapping("login")public String login(String userName, String password, HttpSession hs) {if("admin".equals(userName) && "123456".equals(password)) {hs.setAttribute("userName", userName);return "redirect:/item/findAllProducts";}return "login";} }

6. 在src目錄下配置springmvc.xml

7. 修改web.xml配置

8. 編寫index.jsp

9. 編寫itemList.jsp

10. 編寫login.jsp

11. 運行項目

12. 點擊查詢所有商品, 會到登錄頁面

13. 進行用戶登錄, 登錄成功后跳轉到商品列表頁面

14. 回到首頁, 再次查詢所有商品

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

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

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