Ed *_*d . 1 java jsp tomcat web.xml servlet-filters
我是Servlet过滤器的新手,基本上已经使用它们加入了一个项目,并为该web.xml文件添加了一个额外的过滤器(部署在Tomcat 5.5上).
我95%确定它在某些时候它正常工作但现在在调试时如果我在JSP页面的顶部放置断点我试图查看(login.jsp),它是模板页面(page.jsp)并且在两个配置的过滤器doFilter()方法中; 它贯穿整个login.jsp页面(从上到下),然后page.jsp开始处理过滤器.
我需要它首先运行过滤器,因为其中一个确定页面应该显示的语言(检查cookie,数据库设置和浏览器设置),然后应该应用于login.jsp.
有没有人对可能出错的地方有任何建议?
我可以发布很多代码,但我不相信它会有任何用处,因为它只是以错误的顺序工作.
来自web.xml的片段:
<web-app>
...
<filter>
<filter-name>SetSecurityContextFilter</filter-name>
<filter-class>
com.section2.SecurityContextServletFilter
</filter-class>
</filter>
<filter>
<filter-name>SetLocaleFilter</filter-name>
<filter-class>
com.section2.locale.LocaleServletFilter
</filter-class>
</filter>
<filter>
<filter-name>trinidad</filter-name>
<filter-class>org.apache.myfaces.trinidad.webapp.TrinidadFilter</filter-class>
</filter>
<filter>
<filter-name>ActiveUserFilter</filter-name>
<filter-class>com.section2.ActiveUserFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>trinidad</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>SetSecurityContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>SetLocaleFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ActiveUserFilter</filter-name>
<url-pattern>/pages/section2/user/*</url-pattern>
</filter-mapping>
...
</web-app>
Run Code Online (Sandbox Code Playgroud)
提前致谢.
Filter代码是如何组织的?你可能先打电话FilterChain#doFilter(),之后才做所需的逻辑吗?
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
// Any code here will be executed BEFORE passing request through JSP/Servlet.
chain.doFilter(request, response);
// Any code here will be executed AFTER passing request through JSP/Servlet.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9683 次 |
| 最近记录: |