spring mvc 拦截器拦截jsp页面
来源:互联网 发布:两年程序员工作经验 编辑:程序博客网 时间:2024/05/23 01:36
spring mvc 拦截器怎么拦截jsp页面
你这个 是拦截带 /jsp 的 .do请求
解决方案
用spring 的拦截器 去拦截 所有的 .do 请求,
然后写一个 过滤器去拦截 所有的.jsp 的请求
这样才能防止循环过滤
这种会把所有jsp请求过滤不推荐。
<filter> <filter-name> loginFilter</filter-name> <filter-class> net.techfinger.yoyoapp.interceptor.CheckLoginFilter </filter-class> </filter> <filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <servlet-mapping> <servlet-name>Spring-Servlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
public class CheckLoginFilter implements Filter{ @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // TODO Auto-generated method stub HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; HttpSession session = request.getSession(); // 获得用户请求的URI String path = request.getRequestURI(); String contextPath = request.getContextPath(); String url = path.substring(contextPath.length()); Person person =SessionUtils.getPerson(request); if (person == null) { response.sendRedirect(contextPath+"/person.do?method=tologin"); return; } if (person.getId()!=null&&person.getPassword()!=null) { filterChain.doFilter(servletRequest, servletResponse); return; } } @Override public void init(FilterConfig filterConfig) throws ServletException { }}public class AuthInterceptor extends HandlerInterceptorAdapter { private final static Logger log= Logger.getLogger(AuthInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HandlerMethod method = (HandlerMethod)handler; Auth auth = method.getMethod().getAnnotation(Auth.class); ////验证登陆超时问题 auth = null,默认验证 if( auth == null || auth.verifyLogin()){ String baseUri = request.getContextPath(); String path = request.getServletPath(); Person person =SessionUtils.getPerson(request); if(person == null){ if(path.endsWith(".jsp")){ response.setStatus(response.SC_GATEWAY_TIMEOUT); response.sendRedirect(baseUri+"/person.do?method=tologin"); return false; }else{ response.setStatus(response.SC_GATEWAY_TIMEOUT); Map<String, Object> result = new HashMap<String, Object>(); /* result.put("success", false); result.put("logoutFlag", true);//登录标记 true 退出 result.put("msg", "登录超时."); XmlUtil.sendMsg(response, result);*/ response.sendRedirect(baseUri+"/person.do?method=tologin"); return false; } } } //验证URL权限 if( auth == null || auth.verifyURL()){/* //判断请求的url,是否包含在该角色的url里 String methodName=request.getParameter("method"); String menuUrl = StringUtils.remove(request.getRequestURI(),request.getContextPath())+"?method="+methodName; System.out.println(menuUrl); if(!SessionUtils.isAccessUrl(request, StringUtils.trim(menuUrl))){ //日志记录 String userMail = SessionUtils.getPerson(request).getLoginName(); String msg ="URL权限验证不通过:[url="+menuUrl+"][email ="+ userMail+"]" ; log.error(msg); response.setStatus(response.SC_FORBIDDEN); Map<String, Object> result = new HashMap<String, Object>(); result.put("success", false); result.put("msg", "没有权限访问,请联系管理员."); XmlUtil.sendMsg(response, result); return false; } */} return super.preHandle(request, response, handler); }
阅读全文
0 0
- spring mvc 拦截器拦截jsp页面
- spring mvc 拦截器怎么拦截jsp页面
- spring mvc拦截问题jsp
- Spring MVC 拦截器
- Spring MVC 拦截器
- Spring MVC 拦截器
- spring MVC拦截器
- Spring MVC拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- Spring mvc 拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- Spring MVC 拦截器
- spring mvc拦截器
- spring mvc拦截器
- 洪小文:以科学的方式赤裸裸地剖析AI(二)|从寒冬到复兴
- AI MOOC 2.0 | 微软人工智能公开课2.0更新版正式开放
- BZOJ3073:Journeys(线段树)
- 【转】开源神器,无需一行代码就能搞定机器学习,不会数学也能上手
- Linux常用的关机指令
- spring mvc 拦截器拦截jsp页面
- android studio 项目引入viewpagerindicator开源控件
- STL容器适配器-队列(queue)
- 消息队列处理高并发
- 关于扩展欧几里得算法以及用此方法求逆元+例题:同余方程所牵涉的一系列思考
- Mouse without Borders是微软的一个软件实验项目,这款软件可让鼠标自由在局域网中的多台电脑间移动,键盘输入实现无缝切换,还可以直接用鼠标相互拖拽文件。 如果经常需要同时使用两台以
- 判断网络状态工具类
- 20171108慢牛股票
- vlc sdk下载