tab*_*bim 5 rest web.xml servlets jersey
我想知道在web.xml中将"jersey servlet"声明为Servlet或Filter是什么区别...
以下是我在web.xml中将jersey servlet称为Filter的方法:
<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>
Run Code Online (Sandbox Code Playgroud)
这是在web.xml中称为Servlet的jersey 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>
Run Code Online (Sandbox Code Playgroud)
我应该使用什么解决方案!
小智 0
如果您想在基本 url 末尾附加路径,可以使用servlets。但是,如果您不想在基本 url 末尾附加路径,而只想调用基于模式匹配的内容,则可以使用过滤器。
例子
假设我们有以下两种资源:
@javax.ws.rs.Path("path1")
public class Path1 {
}
@javax.ws.rs.Path("path2")
public class Path2 {
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我们有如下 servlet 映射:
<servlet-mapping>
<servlet-name>servlet_name</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
我们可以使用以下 URL 来访问资源:
http://<hostname>:<web_container_port>/<context_root_of_web_application>/rest/path1
http://<hostname>:<web_container_port>/<context_root_of_web_application>/rest/path2
Run Code Online (Sandbox Code Playgroud)
另一方面,如果我们有如下过滤器映射:
<filter-mapping>
<filter-name>filter_name</filter-name>
<url-pattern>/path1</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
我们可以通过访问以下URL来访问path1根资源:
http://<hostname>:<web_container_port>/<context_root_of_web_application>/path1
Run Code Online (Sandbox Code Playgroud)
在这种情况下,将调用过滤器filter_name
但是,如果我们尝试使用以下 URL 访问 path2:
http://<hostname>:<web_container_port>/<context_root_of_web_application>/path1
Run Code Online (Sandbox Code Playgroud)
在这种情况下,不会调用任何过滤器。
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |