老师,添加filter之后一直访问不了资源,如图:
Snipaste_2021-03-21_17-55-08.png
老师帮忙查看一下
filter部分代码:
package com.bjsxt.web.filter; import com.bjsxt.commons.Constants; import com.bjsxt.pojo.User; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.IOException; //创建过滤器 //判断用户是否进行登录的过滤器 @WebServlet(urlPatterns = {"*.do","*.jsp"}) public class UserLoginFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //参数强制类型转换 HttpServletRequest request = (HttpServletRequest) servletRequest; //获得请求的url路径 String uri = request.getRequestURI(); //判断当前请求是否含有login.jsp或者为login.do,如果是,就得放行,不能全部拦截,否则就是沙雕系统了 if (uri.indexOf("login.jsp") != -1 || uri.indexOf("login.do") != -1){ System.out.println("执行了doFilter放行1"); filterChain.doFilter(servletRequest,servletResponse); } else { //根据session信息判断是否进行登录执行操作,若没有进行登录,则不允许访问 HttpSession session = request.getSession(); //获得user对象 User user = (User) session.getAttribute(Constants.USER_SESSION_KEY); System.out.println("未执行"); //进行判断 if (user != null) { //进行放行 filterChain.doFilter(servletRequest, servletResponse); }else { request.setAttribute(Constants.REQUEST_MSG,"不登录不好使~"); //进行请求转发 request.getRequestDispatcher("login.jsp").forward(servletRequest, servletResponse); } } } @Override public void destroy() { } }
老师,在同一个容器创建两个自启动文件对象,调用方法时,会同时创建这两个吗,我在不同的类中重写了两个自启动的,发方法会报错,会产生服务器错误,如截图:
这个是方法一中的:
Snipaste_2021-03-15_21-26-48.png
这个是方式二中的:
Snipaste_2021-03-15_21-26-48.png
他会怎么执行呢,我这里是直接执行原来的方法,新的方法不会执行并返回服务器异常.
老师,在同一个容器创建两个自启动文件对象,调用方法时,会同时创建这两个吗,我在不同的类中重写了两个自启动的,发方法会报错,会产生服务器错误,如截图:
这个是方法一中的:
Snipaste_2021-03-15_21-26-48.png
这个是方式二中的:
Snipaste_2021-03-15_21-26-48.png
他会怎么执行呢,我这里是直接执行原来的方法,新的方法不会执行并返回服务器异常.