SSM框架利用Filter实现页面不登陆拦截,禁止跳过登录页面不登陆强制访问
如果只是實(shí)現(xiàn)這個(gè)功能的話,其實(shí)很簡(jiǎn)單,寫(xiě)一個(gè)filter專(zhuān)用類(lèi),在web.xml中配置Filter,過(guò)濾地址實(shí)現(xiàn)頁(yè)面攔截
下面基礎(chǔ)代碼奉上
filter類(lèi)
package com.tjzs.sccms.filter; /*** 配置url地址過(guò)濾* @author Administrator*攔截器的作用*登陸前限制訪問(wèn),只有登錄之后才可以訪問(wèn)*/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 對(duì)全棧url進(jìn)行過(guò)濾//將request和response對(duì)象強(qiáng)轉(zhuǎn)為http類(lèi)型HttpServletRequest req=(HttpServletRequest)request;HttpServletResponse resp = (HttpServletResponse)response;//獲取訪問(wèn)的地址String url = req.getRequestURI();System.out.println(url);//獲取session中的對(duì)象判斷是否登錄//攔截所有的 .do 請(qǐng)求但不包含tologin.do//jsp文件已經(jīng)放到web-inf下 不用過(guò)濾 只過(guò)濾 .do請(qǐng)求即可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;}}//繼續(xù)執(zhí)行過(guò)濾連的剩余部分chain.doFilter(req, resp);}@Overridepublic void destroy() {// TODO Auto-generated method stub}}寫(xiě)好類(lèi)之后在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>下面是驗(yàn)證登錄部分的代碼
// 去到login.jsp@RequestMapping("/tologin.do")public String tologin() {// 到login頁(yè)面return "login";}// 登錄@RequestMapping("/login.do")public String login(String loginname, String password, HttpSession session, ModelMap map) {TUser user = null;// 登錄成功到main.jsp頁(yè)面try {user = us.chkLogin(loginname, password);// 將用戶(hù)信息放到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";}}之前在網(wǎng)上看到有的網(wǎng)友說(shuō)
在配置web.xml中的filter的時(shí)候
要遵循 listener-filter-servlet的順序
說(shuō)明一下
其實(shí)沒(méi)有必要,因?yàn)檫@是文件加載程序的執(zhí)行順序
如果配置中包含 <context-param> 標(biāo)簽
那么他則是最先執(zhí)行的
也就是?
<context-param> -<listener>-<filter>-<servlet>
這是初始化順序
當(dāng)然,如果為了代碼嚴(yán)謹(jǐn)性和美觀性
自行搭配
注:這是基礎(chǔ)的攔截實(shí)現(xiàn),初步實(shí)現(xiàn)之后門(mén)后面還要對(duì)登錄的用戶(hù)做權(quán)限處理,而且登錄之后,用戶(hù)即可訪問(wèn)全部頁(yè)面,權(quán)限問(wèn)題后續(xù)更新…..
總結(jié)
以上是生活随笔為你收集整理的SSM框架利用Filter实现页面不登陆拦截,禁止跳过登录页面不登陆强制访问的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: svn 合并分支 (svn操作手册)
- 下一篇: 基于计算机视觉的裂纹检测方案