內部轉發為什么沒有執行dofilter()方法
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("start----doFilter--FirstFilter");
//chain.doFilter(request, response);
HttpServletRequest req =(HttpServletRequest) request;
HttpServletResponse response2 =(HttpServletResponse) response;
//重定向
// response2.sendRedirect(req.getContextPath()+"/index.jsp");
//轉發
req.getRequestDispatcher("index.jsp").forward(request, response);
// req.getRequestDispatcher("main.jsp").include(request, response);
System.out.println("end------doFilter--FirstFilter");
}
配置文件:
<welcome-file-list>
? ? <welcome-file>index.jsp</welcome-file>
? </welcome-file-list>
? <filter>
? ? ? <filter-name>Filter</filter-name>
? ? ? ?<filter-class>FirstFilter.firstFilter</filter-class>
? ? ??
? ? ? ? ?</filter>
? <!--
? <filter-mapping>
? ?<filter-name>Filter</filter-name>
? ?<url-pattern>/index.jsp</url-pattern>
? ? <dispatcher>REQUEST</dispatcher> ?
? </filter-mapping>
? -->
? ?<filter-mapping>
? ?<filter-name>Filter</filter-name>
? ?<url-pattern>/index.jsp</url-pattern>
? ? <dispatcher>FORWARD</dispatcher> ?
? </filter-mapping>
</web-app>
控制臺執行了init() ?但是執行index.jsp并沒有打印dofilter方法
2017-07-20
1)因為請求轉發,地址不變還是index.jsp ?即使Forward到了main.jsp 也不會起作用;
這種情況除非你把main.jsp的監聽改成Forward這樣即使url不變,forward行為還是會被監聽,然后又轉發,死循環報錯;
2)因為請求重定向,所以地址會改變,然后監聽器都會調用
2017-05-08
過濾器名字可以和類不一樣的
2017-05-06
把?<filter-name>Filter</filter-name>統一改成<filter-name>firstFilter</filter-name>跟你的類名一致