5-2中在写代码时发现tomcat启动时就运行过滤器中的代码,不是访问对应url才执行吗?

来源:5-1 项目总结

慕虎5485268

2020-11-08 23:20:20

# 具体遇到的问题
5-2中在写代码时发现tomcat启动时就运行过滤器中的代码,不是访问对应url才执行吗?
# 报错信息的截图
http://img.mukewang.com/climg/5fa80ca90909e24507640660.jpg# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

package com.imooc.management.filter;


import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.annotation.WebFilter;

import javax.servlet.http.HttpServletResponse;


/**

 * Servlet Filter implementation class AuthFilter

 */

@WebFilter(filterName="AuthFilter",urlPatterns="/*")

public class AuthFilter implements Filter {


    /**

     * Default constructor. 

     */

    public AuthFilter() {

        // TODO Auto-generated constructor stub

    }


/**

* @see Filter#destroy()

*/

public void destroy() {

// TODO Auto-generated method stub

}


/**

* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)

*/

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

//1,判断用户是否登陆,2,判断用户名密码是否匹配

ServletContext context = request.getServletContext();

HttpServletResponse res = (HttpServletResponse)response;

int flag = (int)context.getAttribute("flag");

System.out.println(flag);

System.out.println("过滤器在运行");

chain.doFilter(request, response);

// if(flag == 1) {

// chain.doFilter(request, response);

// }else if(flag == 0) {

// res.sendRedirect("/login.html");

// chain.doFilter(request, response);

// }

}


/**

* @see Filter#init(FilterConfig)

*/

public void init(FilterConfig fConfig) throws ServletException {

// TODO Auto-generated method stub

}


}


写回答

1回答

好帮手慕阿慧

2020-11-09

同学你好,是的doFilter在访问对应url才执行。tomcat启动时会访问项目根路径,如http://localhost:8080/ ,所以会执行doFilter()方法。

0

0 学习 · 16556 问题

查看课程