2012-03-28 75 views
0

我有以下设置。该文件夹iText的是在web应用的最高水平:web.xml中的web.xml中的项目不在顶层web.xml中的servlet-mapping属性

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

在我有一个web.xml文件,在那里我做servlet映射的WEB-INF文件夹:

<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的文件夹不是在web应用的顶层文件夹,但几个级别下面:

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

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

+0

注意,在URL中的上下文路径是不一定的文件夹名称它已部署的主webapp文件夹。它可以在服务器配置中进行配置。你应该总是喜欢用'HttpServletRequest#getContextPath()'或'$ {pageContext.request.contextPath}'动态指定它,而不是在HTML/JSP中对其进行硬编码。另见http://stackoverflow.com/questions/4764405/how-to-use-relative-paths-without-including-the-context-root-name – BalusC 2012-03-28 20:29:30

回答

1

除非上下文发生变化,否则不会更改。上下文是itext,因为这是你的WEB-INF。

+0

的含义?我仍然发送请求到/ itext/fincc-itext? – oneiros 2012-03-28 20:26:32

+0

这种方式将请求发送到http:// localhost:8080/itext/fincc-itext,这实际上不是servlet的位置...... level1和level2需要包含在路径中?是/否? – oneiros 2012-03-28 20:27:41

+0

这确实不会改变。除此之外,建议的文件夹结构不符合servlet规范,并且servlet容器无法成功部署webapp。 – BalusC 2012-03-28 20:28:11

1

的Web应用程序的设置必须是:

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 

你仍然需要保持你的应用程序结构和修改web.xml中的servlet路径:

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

那个特定的webapp必须正确地位于webapps文件夹下面吗? – oneiros 2012-03-28 21:09:42