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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

SSM框架利用Filter实现页面不登陆拦截,禁止跳过登录页面不登陆强制访问

發布時間:2023/12/31 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSM框架利用Filter实现页面不登陆拦截,禁止跳过登录页面不登陆强制访问 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果只是實現這個功能的話,其實很簡單,寫一個filter專用類,在web.xml中配置Filter,過濾地址實現頁面攔截

下面基礎代碼奉上

filter類

package com.tjzs.sccms.filter; /*** 配置url地址過濾* @author Administrator*攔截器的作用*登陸前限制訪問,只有登錄之后才可以訪問*/import java.io.IOException;import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;import com.tjzs.sccms.po.TUser;public class UrlFilter implements Filter{@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {// TODO 對全棧url進行過濾//將request和response對象強轉為http類型HttpServletRequest req=(HttpServletRequest)request;HttpServletResponse resp = (HttpServletResponse)response;//獲取訪問的地址String url = req.getRequestURI();System.out.println(url);//獲取session中的對象判斷是否登錄//攔截所有的 .do 請求但不包含tologin.do//jsp文件已經放到web-inf下 不用過濾 只過濾 .do請求即可if(url.contains(".do")&&!url.contains("tologin.do")&&!url.contains("login.do")) {//獲取sessionHttpSession session = req.getSession();TUser user=(TUser) session.getAttribute("USER");if(user==null){resp.sendRedirect("/dscms/tologin.do");return;}}//繼續執行過濾連的剩余部分chain.doFilter(req, resp);}@Overridepublic void destroy() {// TODO Auto-generated method stub}}

寫好類之后在web.xml配置文件中直接加入filter的配置

<!-- 配置url攔截器 --><filter><filter-name>UrlFilter</filter-name><filter-class>com.tjzs.sccms.filter.UrlFilter</filter-class></filter><filter-mapping><filter-name>UrlFilter</filter-name><url-pattern>*.do</url-pattern></filter-mapping>

下面是驗證登錄部分的代碼

// 去到login.jsp@RequestMapping("/tologin.do")public String tologin() {// 到login頁面return "login";}// 登錄@RequestMapping("/login.do")public String login(String loginname, String password, HttpSession session, ModelMap map) {TUser user = null;// 登錄成功到main.jsp頁面try {user = us.chkLogin(loginname, password);// 將用戶信息放到session中session.setAttribute("USER", user);return "main";} // 登錄失敗catch (SysException e) {// TODO Auto-generated catch blockmap.addAttribute("MSG", e.getErrMsg());return "login";} catch (Exception e1) {e1.printStackTrace();return "error";}}

之前在網上看到有的網友說

在配置web.xml中的filter的時候

要遵循 listener-filter-servlet的順序

說明一下

其實沒有必要,因為這是文件加載程序的執行順序

如果配置中包含 <context-param> 標簽

那么他則是最先執行的

也就是?
<context-param> -<listener>-<filter>-<servlet>

這是初始化順序

當然,如果為了代碼嚴謹性和美觀性

自行搭配

注:這是基礎的攔截實現,初步實現之后門后面還要對登錄的用戶做權限處理,而且登錄之后,用戶即可訪問全部頁面,權限問題后續更新…..

總結

以上是生活随笔為你收集整理的SSM框架利用Filter实现页面不登陆拦截,禁止跳过登录页面不登陆强制访问的全部內容,希望文章能夠幫你解決所遇到的問題。

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