0

我正在为安全应用程序使用 Servlet 过滤器,

<filter>
    <filter-name>HelloFilter</filter-name>
    <filter-class>com.sarp.filter.HelloFilter</filter-class>
    <init-param>
        <param-name>login_form</param-name>
        <param-value>/loginForm.jsp</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>HelloFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping> 

但如果我的 servlet 使用 jsp 文件,我将无法捕获它们

private void execute(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    getServletContext().getRequestDispatcher("/deniz.jsp").forward(request, response);

例如 deniz.jsp 出现没有 aauthentication ,有什么解决办法吗?谢谢

4

1 回答 1

1

使用 dispatcher 标签指定FORWARD行为filter-mapping

<filter-mapping>
    <filter-name>HelloFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

此信息可在规范6.2.5部分中找到。

自 Java Servlet 规范 2.4 版以来的新功能是配置过滤器以在请求调度程序 forward() 和 include() 调用下调用的能力。

通过使用部署描述符中的新元素,开发人员可以为过滤器映射指示他是否希望在以下情况下将过滤器应用于请求:

  1. 该请求正在请求调度程序下处理,该请求调度程序表示匹配或使用 forward() 调用的 Web 组件。

这由值为 FORWARD 的元素指示

于 2013-11-09T21:19:05.860 回答