【问题标题】:redirecting requests based on the body tomcat基于body tomcat重定向请求
【发布时间】:2011-09-29 04:00:18
【问题描述】:

我有一个 tomcat 7 应用程序,我可以从外部来源获取请求。

他们中的大多数都这样称呼我的请求:

http://localhost:8080/MyWeb/exRequest

我在 MyWeb 应用程序中使用 URL 模式构建 servlet。

但是,一个外部来源必须像这样发送请求:

http://localhost:8080/

在体内:

<xml name="test" />

由于我不想声明一个通用的 servlel(如 tomcat 默认),因为这意味着任何请求都需要通过我的 servlet,我想更改 ROOT 的 index.jsp 以重定向到我的 servlet。

这是最好的选择吗?

是否有一个选项可以创建一个默认 servlet,只有在主体中有特殊参数时才会调用该默认 servlet?

已编辑

请注意,我收到的请求是 localhost:8080 而不是 localhost:8080/MyWeb - 它对 tomcat 通用,而不是对特定的 Web 应用程序

【问题讨论】:

    标签: java web-applications tomcat servlets tomcat7


    【解决方案1】:

    您不能根据请求正文选择要调用的 servlet,但可以在 web.xml 中将 servlet 设置为“欢迎文件”。

    <servlet>
      <servlet-name>index</servlet-name>
      <servlet-class>com.y.MyWelcomeServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
      <servlet-name>index</servlet-name>
      <url-pattern>/index</url-pattern>
    </servlet-mapping>
    
    <welcome-file-list>
      <welcome-file>index</welcome-file>
    </welcome-file-list>
    

    如果您想保留某些现有 index.jsp 的“欢迎”功能,您的 servlet 可以将正文中没有正确 XML 的请求转发到位于 WEB-INF 目录下的 index.jsp 文件。

    【讨论】:

    • 问题是我收到通知给 tomcat: localhost:8080 而不是 localhost:8080/MyWeb 我可以在 MyWeb 的 web.xml 中找到这些定义
    • @Odelya - 好的,我现在明白了。如果发出此请求的客户端非常不灵活,以至于无法切换到正确的 URL,则不太可能遵循重定向响应。似乎您最好的选择是将整个 Web 应用程序移动到 ROOT,然后重新映射您现有的 servlet 以在其路径中包含旧的应用程序上下文名称。例如,如果 servlet 是exRequest,上下文为MyWeb,它将移动到ROOT 上下文,并映射为MyWeb/exRequest
    • 这正是我想做的。将应用程序移至根目录
    【解决方案2】:

    不,但您可以创建Filter 并在请求满足特定条件时转发/重定向到特定 servlet。

    如果使用 servlet 3.0 将其映射为 @WebFilter,否则使用 web.xml&lt;filter&gt; + &lt;filter-mapping&gt;。您应该在默认 servlet 之前执行映射它。

    【讨论】:

    • 否 - 因为它是选项还是为所有请求创建一个过滤器更好?因为当我使用 ROOT 的 index.jsp 的更改时,它仅适用于 localhost:8080/ 请求,否则它将适用于所有请求
    • 通过过滤器在性能方面是微不足道的。您可以将过滤器映射到只是 /
    • 感谢您的帮助,但这不是我的意思。请参阅编辑后的问题以解释更多
    • 编辑并没有太大的改变——您可以使用自己的过滤器定义部署 ROOT.war
    • @Bonzho 我实际上认为最好在tomcat中创建代理以将localhost:8082 /转发到servlet(外部vednor可以更改端口
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    相关资源
    最近更新 更多