我有一个具有以下文件夹结构的Web应用程序
ProjectName
|.. src/main/java
|.. folder1
|.. restEndpoint1.java , restendpoint2.java etc
,restendpoint1.java就像
@Path("/static1/static2")
public class DoStuff {
@POST
@Path("/static3")
@Consumes(MediaType.APPLICATION_XML)
@Produces("application/xml")
public Response validation(String inputXML){
我的web.xml是:
<servlet>
<servlet-name>jersey-servlet</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>folder1</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/folder1/*</url-pattern>
</servlet-mapping>
哪个会成为我的网址
http:\\localhost:port/projectName/foldername/{restendpoint1.path}
有没有办法可以从映射中删除foldername,以便我可以进行映射
localhost:port/projectName/{restendpoint1.path}
如何操作我的web.xml来实现这一目标。
我需要这样做的原因是,我需要文件夹结构来确保代码的可维护性(而不是将所有内容分组到一个类中并使web.xml映射到该类)但我也必须避免获取映射中的foldername
。
答案 0 :(得分:2)
请勿将folder1
放入url-pattern
。您已将folder1
放入正在扫描服务的软件包中。通过将folder1
放入url-pattern
,您表明您希望它位于网址中。把你想要的URL放在那里。所以
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
这应该让所有电话都转到你的休息服务。但是,您可能应该在其中放置一些路径,因为您不希望将所有URL映射到REST服务(因为将存在其他不是REST服务的URL)。也许像是
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>