web.xml中的servlet-mapping属性,用于不在webapps中位于顶层的项目

时间:2012-03-28 20:07:15

标签: java web-applications servlets

我有以下设置。文件夹 itext 位于webapps的顶层:

├───itext
│   └───WEB-INF
│       ├───classes
│       │   └───com
│       │       └───imparator
│       │           └───ist
│       └───lib

在web-inf文件夹中,我有一个web.xml文件,我在其中进行servlet映射:

<servlet>
    <servlet-name>Itext Servlet</servlet-name>
    <servlet-class>com.imparator.ist.ItextServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Itext Servlet</servlet-name>
    <url-pattern>/fincc-itext</url-pattern>
</servlet-mapping>

现在当我想要这个servlet提供的东西时,我的动作属性是一个形式:

<form method="POST" action="/itext/fincc-itext">

=============================================== =========================================

现在,假设itext文件夹不在webapps的顶级文件夹中,而是在以下几个级别:

├───level1
│   └───level2
│       └───itext
│           └───WEB-INF
│               ├───classes
│               │   └───com
│               │       └───imparator
│               │           └───ist
│               └───lib

如何更新servlet映射和action属性值以对应于此目录结构?

2 个答案:

答案 0 :(得分:1)

除非情境发生变化,否则不会改变。上下文是itext,因为那是WEB-INF的所在。

答案 1 :(得分:1)

网络应用的设置必须是:

webapp
    -somefolders (you can put text, js, css, image files here)
    - WEB-INF
        - classes
        - lib (contains jars)
        - web.xml
        - xml or configuration files
    - META-INF (if needed)

这是标准,你必须遵循。如果要更改servlet路径,请在web.xml中更改它。在你的情况下:

+---itext (web app name)
¦   +---somefolders (you can put text, js, css, image files here)
¦   ¦
¦   +---META-INF (if needed)
¦   ¦
¦   +---WEB-INF
¦       +---classes
¦       ¦   +---com
¦       ¦       +---imparator
¦       ¦           +---ist
¦       +---lib
¦   ¦
¦   +---web.xml
¦   ¦   
¦   +---xml or configuration files

你仍然需要保留你的app结构并修改web.xml中的servlet路径:

<servlet-mapping>
    <servlet-name>Itext Servlet</servlet-name>
    <url-pattern>/itext/fincc-itext</url-pattern>
</servlet-mapping>