我有一个tomcat 7应用程序,我可以从外部来源获取请求。
他们中的大多数人都这样称呼我的请求:
http://localhost:8080/MyWeb/exRequest
我在MyWeb应用程序中使用URL模式构建servlet。
但是,一个外部源必须发送这样的请求:
并在身体中:
<xml name="test" />
因为我不想声明一般的servlel(比如tomcat default),因为这意味着任何请求都需要通过我的servlet,我想改变ROOT的index.jsp以重定向到我的servlet。
这是最好的选择吗?
是否有创建默认servlet的选项,只有在正文中有特殊参数时才会调用它?
EDITED
请注意,我收到localhost:8080而不是localhost:8080 / MyWeb的请求 - 这是tomcat的常规,而不是特定的Web应用程序
答案 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文件。