重定向Tomcat 6.0中对子目录的所有请求

时间:2009-07-13 20:31:21

标签: java jsp url tomcat redirect

我正在桌面上运行本地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那个目录是否存在。

我认为这是怎么做的,但我猜不是。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:2)

在解决这样的问题时,我通常会使用UrlRewriteFilter。

  1. Download并将urlrewrite.jar添加到您的类路径(WEB-INF / lib)
  2. 将以下内容添加到WEB-INF / web.xml:
  3. 
        <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并将以下内容添加到其中:
    2. 
          <rule>
              <from>^/RedirectDirectory/(.*)$</from>
              <to>/RedirectDirectory/filetree.jsp</to>
          </rule>
      
      

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

答案 1 :(得分:0)

你所做的对于servlet来说很好 - 没有尝试过使用JSP。

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

关于这样做的一种方法是将所有请求转发给servlet&amp;让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);