基于body tomcat重定向请求

时间:2011-07-05 21:28:51

标签: java web-applications tomcat servlets tomcat7

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

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

http://localhost:8080/MyWeb/exRequest

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

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

http://localhost:8080/

并在身体中:

<xml name="test" />

因为我不想声明一般的servlel(比如tomcat default),因为这意味着任何请求都需要通过我的servlet,我想改变ROOT的index.jsp以重定向到我的servlet。

这是最好的选择吗?

是否有创建默认servlet的选项,只有在正文中有特殊参数时才会调用它?

EDITED

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

2 个答案:

答案 0 :(得分:1)

不,但只要请求符合特定条件,您就可以创建Filter并转发/重定向到特定的servlet。

如果使用servlet 3.0将其映射到@WebFilter,则使用web.xml<filter> + <filter-mapping>。您应该映射它在默认servlet之前执行。

答案 1 :(得分:1)

您不能根据请求体选择要调用的servlet,但可以在web.xml中将servlet设置为“welcome-file”。

<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的“welcome”函数,servlet可以将没有正确XML的请求转发到位于WEB-INF目录下的index.jsp文件。