• 2阶——web三大组件之2(Filter(过滤器) Listen(监听器))


    1.实现一个filter步骤

      >编写一个java类实现Lister接口

    @WebFilter("/*")  //这样就不需要在web.xml文件中再配置了
    public class EncodingFilter implements Filter {
      
    }

      >在web.xml文件中配置 可以用注解  @WebFilter("/*")替代xml文件配置

        <filter>
            <filter-name>encodingFilter</filter-name>
            <filter-class>cn.filter.EncodingFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    Web三大组件(filter listen servlet)  其实filter listen 都与servlet 一样在服务器启动时创建

     

     

    注解形式

    @WebFilter(value = "/*",dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.FORWARD})

     xml形式

        <filter>
            <filter-name>encodingFilter</filter-name>
            <filter-class>cn.filter.EncodingFilter</filter-class>
    
        </filter>
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
            <dispatcher> REQUEST</dispatcher>  <!--这个配置可以限制通过何种请求才会调用到这个过滤器-->
            <dispatcher> FORWARD</dispatcher>   <!--这个配置可以限制通过何种请求才会调用到这个过滤器-->
        </filter-mapping>

    验证登录小demo

     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest)servletRequest;
            HttpServletResponse response = (HttpServletResponse)servletResponse;
    
            String requestURI = request.getRequestURI();
            HttpSession session = request.getSession();
        
         //先放行登录的资源
    if(requestURI.contains("/login.jsp") || requestURI.contains("/css/") || requestURI.contains("/loginServlet")|| requestURI.contains("/js/")|| requestURI.contains("/checkCodeServlet") ){ filterChain.doFilter(request,response); }else {         
          //如果不是登录的资源则判断用户是否登录 如果登录则放行,如果没有登录则跳转
    Object user
    = session.getAttribute("user"); if(user != null){ filterChain.doFilter(request,response); }else{ //没有登录 需要跳转 request.setAttribute("login_msg","请先登录"); request.getRequestDispatcher("/login.jsp").forward(request,response); } } }
    坚持
  • 相关阅读:
    一个小例子说明函数式编程
    单元测试的规范
    单元测试jest部署
    正向代理与反向代理
    Cookie与Session
    从输入URL到页面加载发生了什么?
    使用Vue-cli3.0创建的项目,如何发布npm包
    Vue中通过Vue.extend动态创建实例
    使用npm link 加速调试
    单元测试之断言
  • 原文地址:https://www.cnblogs.com/gaoSJ/p/12931894.html
Copyright © 2020-2023  润新知