5-2中在写代码时发现tomcat启动时就运行过滤器中的代码,不是访问对应url才执行吗?
来源:5-1 项目总结
慕虎5485268
2020-11-08 23:20:20
# 具体遇到的问题
5-2中在写代码时发现tomcat启动时就运行过滤器中的代码,不是访问对应url才执行吗?
# 报错信息的截图# 相关课程内容截图
# 尝试过的解决思路和结果
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
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回答
同学你好,是的doFilter在访问对应url才执行。tomcat启动时会访问项目根路径,如http://localhost:8080/ ,所以会执行doFilter()方法。
相似问题