【问题标题】:Redirect all requests for a subdirectory in Tomcat 6.0重定向 Tomcat 6.0 中子目录的所有请求
【发布时间】:2010-11-10 10:44:44
【问题描述】:

我正在我的桌面上运行本地 Tomcat 6.0 服务器。

我正在尝试将匹配 http://localhost:8080/RedirectDirectory/abc/efg/morejunk 的所有请求重定向到单个 JSP 页面。

在我的 RedirectDirectory 项目的 web.xml 我有

<servlet>
<servlet-name>IOPRedirect</servlet-name>
<jsp-file>/RedirectDirectory/filetree.jsp</jsp-file>
</servlet>

<servlet-mapping>
<servlet-name>IOPRedirect</servlet-name>
<url-pattern>/RedirectDirectory/*</url-pattern>
</servlet-mapping>

无论目录是否存在,我都希望它转到那个 JSP。

我认为这是如何做到的,但我想不是。

有什么想法吗?

谢谢

【问题讨论】:

  • 当您尝试访问服务器上的随机 URL 时究竟会发生什么?您是否从 tomcat 收到 java 错误或 404?

标签: java jsp url tomcat redirect


【解决方案1】:

解决此类问题时,我通常使用 UrlRewriteFilter。

  1. Download 并将 urlrewrite.jar 添加到您的类路径 (WEB-INF/lib)
  2. 将以下内容添加到您的 WEB-INF/web.xml:
<filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
  1. 编辑 WEB-INF/urlrewrite.xml 并添加以下内容:
<rule> <from>^/RedirectDirectory/(.*)$</from> <to>/RedirectDirectory/filetree.jsp</to> </rule>

在您的项目中使用 UrlRewriteFilter 对于解决许多常见问题非常方便,例如设置缓存标头、规范主机名、在某些 url 上强制 https 等。

【讨论】:

    【解决方案2】:

    您所做的对 servlet 效果很好 - 尚未尝试使用 JSP。

    编辑:在尝试了你所做的更多之后,我发现它工作正常。例外是在转发到使用安全约束的特定 jsp 时,这会导致错误。该错误是由于重定向绕过了用户登录,因此请求中省略了所需的数据。

    一种方法是将所有请求转发到 servlet 并将 servlet 转发到所需的 jsp。

    您的 web.xml 将是:

    <servlet>
    <servlet-name>IOPRedirect</servlet-name>
    <servlet-class>IOPRedirect</servlet-class>
    </servlet>
    
    <servlet-mapping>
    <servlet-name>IOPRedirect</servlet-name>
    <url-pattern>/RedirectDirectory/*</url-pattern>
    </servlet-mapping>
    

    你必须在你的 doGet() 方法中创建一个 IOPredirect servlet,其中包含以下内容:

    String url="/RedirectDirectory/filetree.jsp";
    ServletContext sc = getServletContext();
    RequestDispatcher rd = sc.getRequestDispatcher(url);
    rd.forward(req,res);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 2014-04-09
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      相关资源
      最近更新 更多