有人可以解释使用servlet并在web.xml中进行设置

时间:2017-03-22 21:27:08

标签: java rest servlets web.xml

我只是一名初学者,但我参加了一个初学者Java培训课程,其中我们还介绍了REST的一些方面,所以我开始对事情有所了解。我真的想更多地了解servlet以及如何使用web.xml来设置它们。下面是我参加这个培训课程时我在项目中使用的web.xml。

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>Archetype Created Web Application</display-name>
<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>org.arpit.java2blog.controller</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>/rest/*</url-pattern>
</servlet-mapping>

现在,我只能理解其中的一些内容。我可以理解<servlet-name><servlet-class><servlet-mapping><url-pattern>的一些内容。

但我真的很难理解<init-param><param-name><param-value>通常会做些什么。我一直试图谷歌找到一些可以用非常简单的方式解释这些信息的信息,但我没有太多的快乐。

我真的想了解下面这两节的内容:

`<init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>org.arpit.java2blog.controller</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>`

我可以理解第一部分涉及的内容,因为我的控制器类在包<param-value>org.arpit.java2blog.controller</param-value>中。但是,作为com.sun.jersey.config.property的param-name是什么以及为什么?我找不到任何具有此名称的包裹。

我理解第二个init = param部分与jersey-json jar有关,就是这个。

如果有人能用非常简单的英语解释其中的一些东西(英语不是我们在爱沙尼亚的母语),我真的很感激。我很努力地在编程方面做得更好,我可以使用一些帮助。

亲切的问候。

1 个答案:

答案 0 :(得分:0)

这些是servlet类的初始化参数:

com.sun.jersey.spi.container.servlet.ServletContainer.

如果你看一下源代码here

  

...如果是初始化参数   “ com.sun.jersey.config.property.resourceConfigClass ”或   “ javax.ws.rs.Application ”不存在且初始化   参数“ com.sun.jersey.config.property.packages ”存在(参见    com.sun.jersey.api.core.PackagesResourceConfig.PROPERTY_PACKAGES )a    com.sun.jersey.api.core.PackagesResourceConfig 的新实例是   创建。初始化参数   “ com.sun.jersey.config.property.packages ”必须设置为提供一个   或更多包名称。每个包名必须用';'分隔。该   包名称作为属性值添加到Map实例使用   属性名称(@link PackagesResourceConfig#PROPERTY_PACKAGES}。   然后将任何其他初始化参数添加到Map   实例。然后将Map实例传递给构造函数   com.sun.jersey.api.core.PackagesResourceConfig

PojoMappingFuture

的第二个