我以前通过使用web.xml
这样的方法实现了这一点:
<servlet>
<servlet-name>Test1</servlet-name>
<servlet-class>com.abc.test.Servlet</servlet-class>
<init-param>
<param-name>propertyKey</param-name>
<param-value>test1</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>Test2</servlet-name>
<servlet-class>com.abc.test.Servlet</servlet-class>
<init-param>
<param-name>propertyKey</param-name>
<param-value>test2</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Test1</servlet-name>
<url-pattern>/test1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Test2</servlet-name>
<url-pattern>/test2</url-pattern>
</servlet-mapping>
这意味着,如果我去http://server/project/Test1
,Servlet
类将获得价值test1
,propertyKey
如果我去http://server/project/Test2
,它将获得价值test2
。
我现在开始为 Tomcat 7 开发一个应用程序,所以我尝试使用注释来复制它:
@WebServlet(name = "Test1", urlPatterns = "/test1", initParams = @WebInitParam(name = "propertyKey", value = "test1"))
@WebServlet(name = "Test2", urlPatterns = "/test2", initParams = @WebInitParam(name = "propertyKey", value = "test2"))
public class Servlet extends HttpServlet {
// ...
这导致了错误“ Duplicate annotation @WebServlet
”。
我还尝试放入参数数组和 URL 模式,但它们仍然适用于同一个 servlet。
有可能做到这一点,还是我应该坚持web.xml
?或者也许我会接受它并继续,?propertyKey=test1
但?propertyKey=test2
我认为隐藏这些东西会更好。