栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

CRM-拦截器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CRM-拦截器

接上一篇:CRM-业务主页面index.jsp

1. 登录验证

有两个方法:

1.1 过滤器

implements Filter{
destory():
doFilter();
init();

}
具体实例如下:

package text.frist.Emp.filter;

import text.frist.Emp.entity.Admin;
import text.frist.Emp.serive.AdminService;
import text.frist.Emp.serive.impl.AdminServiceImpl;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebFilter(filterName = "CheckFilter",value = "/admin/safe/*")
public class CheckFilter implements Filter {
    public void destroy() {}
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;
        HttpSession session = request.getSession();
        Admin admin =(Admin)session.getAttribute("admin");
        if(admin!=null){
            chain.doFilter(req, resp);
        }else {
			response.sendRedirect(request.getContextPath()+"/login.html");
        }
    }
    public void init(FilterConfig config) throws ServletException {}
}
  1. request.getSession();
  2. session.getAttribut(“”);获取session作用域中保存的登录数据
  3. 判断是否为空。
  4. 为空:就是没有登录过,response.sendRedirect(“登录页面路径”)
  5. 这里注意重定向的路径前面要加上项目名称,这里request.getContextPath()获取
  6. 不为空:放行,chain.doFilter(req,resp);
1.2 拦截器

implements HandlerInterceptor{
preHandle();
postHandle();
afterCompletion();
}
然后再mvc.xml文件中配置


    
        
            
            
            
            
        
    

具体实例如下:

package com.lyx.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class MyInterceptor1 implements HandlerInterceptor{
    //在handler之前执行
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //判断登录状态
        HttpSession session = request.getSession();
        if(session.getAttribute("state")!=null){
            return true;
        }
        //中断之后,响应请求
        response.sendRedirect(request.getContextPath()+"/login.jsp");
        return false;
    }

    //在handler之后执行,响应之前执行
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { }
    //在视图渲染之后执行
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}


  1. request.getSession();
  2. session.getAttribute(“”);获取user
  3. 判断是否为空
  4. 为空:response.sendRedirect(“”);跳转到登录页面
  5. 不为空:放行,return true;
2. 实现登录验证 2.1 写一个拦截器

在com.lyx.settings.web包下新建interceptor包
新建LoginInterceptor.java类,实现HandlerInterceptor接口
重写preHandler()方法,postHandler()和afterCompletion()方法不变

response.sendRedirect(request.getContextPath())怎么实现跳转到登录页面?
我的tomcat的

项目名称就是”/“,所以getContextPath()的值就是”/“,indexController类的index()方法的@RequestMapping(“/”)也是“/”就可以访问到项目首页,项目首页再通过



调用UserController的toLogin()方法,最后跳转到登录页面

2.2 mvc.xml配置

  
    
    
    

  1. path里面填要拦截的请求
  2. 拦截哪些请求?业务资源的请求,也就是WEB-INF/pages目录下的资源,各种.jsp页面,然而这些页面是不能直接访问的,我们访问的时候是通过Controller的方法返回值去访问的,然而Controller的方法的@RequestMapping(“”),这里面的路径,是根据当前方法返回值要访问的jsp页面所在的目录+当前方法名+.do来定义的

  1. jsp页面所在的目录

  1. 所以拦截路径就可以直接写
 
        
            
            
            
            
            
            
            
        
    
  1. UserController的toLogin()方法和login()方法不用拦截,因为这个两个方法一个就是访问登录页面的,一个是登录验证的,不需要进行拦截
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/918796.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号