java SpringMVC Filter登录拦截器
2016-05-10 13:14
441 查看
SpringMVC框架是一个非常强大的java web框架,目前最主流的也是spring mvc的框架今天我们学习下springMVCd的登录拦截器Filter
首先呢,SpringMVC具有统一的入口DIspatcherServlet,所有请求都会通过DIspatcherServlet来进行处理
dispatcherServlet是前置控制器,配置在web.xml中,主要是用来拦截对应的请求,然后将请求根据对应的规则发送到Controller来进行处理
首先在web.xml中进行配置拦截请求
这里我们用的是.do拦截格式,就是说所有请求中有.do的请求都会被我们拦截下来做登录处理,这里如果将.do写成“/”的话,就会拦截所有请求,会导致 js文件、css文件等文件无法访问
这里我们写的是继承HttpServlet类实现Filter接口
当我们访问localhost:8080/test/userDetai.do时如果没有登录的验证就会跳转到对应的login页面
首先呢,SpringMVC具有统一的入口DIspatcherServlet,所有请求都会通过DIspatcherServlet来进行处理
dispatcherServlet是前置控制器,配置在web.xml中,主要是用来拦截对应的请求,然后将请求根据对应的规则发送到Controller来进行处理
首先在web.xml中进行配置拦截请求
<!--filter登录拦截器--> <filter> <!--拦截请求做处理的类--> <filter-name>SecurityServlet</filter-name> <filter-class> org.andy.shop.utils.SecurityServlet</filter-class> </filter> <filter-mapping> <filter-name>SecurityServlet</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <!--拦截格式.do--> <filter-name>SecurityServlet</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping>
这里我们用的是.do拦截格式,就是说所有请求中有.do的请求都会被我们拦截下来做登录处理,这里如果将.do写成“/”的话,就会拦截所有请求,会导致 js文件、css文件等文件无法访问
这里我们写的是继承HttpServlet类实现Filter接口
package org.andy.shop.utils; 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.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * Filter 登录拦截器 * @author lyy * @date 2016-05-05 */ public class SecurityServlet extends HttpServlet implements Filter{ /** * */ private static final long serialVersionUID = 1L; public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request=(HttpServletRequest)srequest; HttpServletResponse response =(HttpServletResponse) sresponse; HttpSession session = request.getSession(true); String usercode = (String) request.getRemoteUser();// 登录人 String user_role = (String)session.getAttribute(Constants.USERID);//登录人角色 String url=request.getRequestURI();//获取的请求路径 System.out.println(url); if(user_role == null || "".equals(user_role)) {//如果登录标识为空 //判断获取的路径不为空且不是访问登录页面或执行登录操作时跳转 if(url!=null && !url.equals("") && (url.contains("userDetail.do") )) {//如果请求url不为空且请求的url包含userDetail.do请求 response.sendRedirect(request.getContextPath() + "/login.do"); return; } } chain.doFilter(srequest, sresponse);//跳转 return; } }
当我们访问localhost:8080/test/userDetai.do时如果没有登录的验证就会跳转到对应的login页面
相关文章推荐
- java定时任务
- Eclipse NDK 配置
- Java HashMap工作原理及实现(二)
- Java之------单机版书店管理系统(设计思想和设计模式系列二)用户模块
- Java中,当表单含有文件上传时,提交数据的如何读取
- Spring 4.x Reference翻译(一)IOC容器
- struts2标签小问题
- 【JAVA 动态创建风水罗盘 超精华Swing项目方案-项目源码 - 文章05】
- hadoop 2.7.2 (hadoop2.x)使用ant制作eclipse插件hadoop-eclipse-plugin-2.7.2.jar
- JAVA IO学习
- springcloud(第六篇)springcloud ribbon
- Java 泛型
- Java 学习日志 2.1 if 条件选择语句(if switch 四种方法检验成绩状况)
- eclipse不按ALT+/没有提示关键字的解决方法
- SpringMVC 学习-入门篇
- Java解析xml的四种方法汇总
- Struts2_CRUD
- Eclipse RCP开发桌面程序
- JAVA 简单线程池区别
- spring @Scheduled 执行2次