我想知道的是什么,宣布“运动衫的servlet”为servlet或在web.xml中过滤器的区别...
这里是我叫的球衣servlet作为在web.xml过滤器:
<filter>
<filter-name>jersey-serlvet</filter-name>
<filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>ca.tesias.services</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jersey-serlvet</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这里是在web.xml称为Servlet的球衣的servlet:
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>ca.tesias.services</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
我应该使用什么解决方案!
如果你想在基础URL的末尾追加一个路径,你可以使用servlet。但是,如果你不想在基础URL的末尾追加一个路径,只是调用基于模式匹配的东西,你可以使用过滤器。
例
假设我们有以下两个资源:
@javax.ws.rs.Path("path1")
public class Path1 {
}
@javax.ws.rs.Path("path2")
public class Path2 {
}
现在,如果我们有如下的servlet映射:
<servlet-mapping>
<servlet-name>servlet_name</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
我们可以通过访问以下网址的资源:
http://<hostname>:<web_container_port>/<context_root_of_web_application>/rest/path1
http://<hostname>:<web_container_port>/<context_root_of_web_application>/rest/path2
在另一方面,如果我们有如下过滤器映射:
<filter-mapping>
<filter-name>filter_name</filter-name>
<url-pattern>/path1</url-pattern>
</filter-mapping>
我们可以通过访问以下网址访问路径1根资源:
http://<hostname>:<web_container_port>/<context_root_of_web_application>/path1
在这种情况下,过滤器FILTER_NAME将被调用
然而,如果我们用下面的URL访问路径2:
http://<hostname>:<web_container_port>/<context_root_of_web_application>/path1
无过滤器会在这种情况下被调用。