在做登录拦截时遇到的几个问题,很困惑,希望大家帮忙解释一下,谢谢了--jsp访问路径:
http://localhost:7001/aa/过滤器配置
<filter>
<filter-name>xxFilter</filter-name>
<filter-class>com.asiainfo.xxFilter</filter-class>
<init-param>
<param-name>ALLOWPATH</param-name>
<param-value>/aa/login.jsp</param-value>
</init-param>
</filter><filter-mapping>
<filter-name>xxFilter</filter-name>
<url-pattern>/aa/*</url-pattern>
</filter-mapping>
1.filter 拦截 方法doFilter中得到request.getServletPath()=/aa/index.jsp
为什么会自动添加index.jsp呢,访问时没有指定具体页面的?谁来做的默认指定?是welcome-file-list自动添加的吗2.doFilter方法拦截请求,并转到response.sendRedirect(request.getContextPath()+"/aa/ChannelLogin.jsp");,登录请求页面
debug时再次执行了,doFilter方法,打印出request.getServletPath()=/aa/ChannelLogin.jsp
这个是正确的拦截操作,可是继续执行时debug发现又执行了doFilter方法,并且打印出request.getServletPath()为空,这是为什么呢?

解决方案 »

  1.   

    1.是welcome-file-list自动添加的
    你可以将web.xml中的welcome-file-list默认的index.jsp改为其他的 那么他输出的就是其他的页面
    2.每次进入页面之前都会先进入 doFilter方法
    第一次进入doFilter方法后 执行你的操作 他会记录这个状态
    那么当你再次跳转到其他页面的时候 他也会进入这个方法 
    但是他会根据你上次的记录的状态 判断是否再一次执行doFilter里面的 代码