SSM框架利用Filter实现页面不登陆拦截,禁止跳过登录页面不登陆强制访问
生活随笔
收集整理的這篇文章主要介紹了
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实现页面不登陆拦截,禁止跳过登录页面不登陆强制访问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svn 合并分支 (svn操作手册)
- 下一篇: 基于计算机视觉的裂纹检测方案