2011-05-11 27 views
1

我想在JSF项目中创建一个servlet。这是我创建的第一个servlet,我使用http://www.servletworld.com/servlet-tutorials/simple-servlet-example.html作为示例让我开始。帮助在现有的jsf项目中创建servlet

唯一的是我的文件夹结构有点不同,因为现有的jsf。

我可以得到form.html页面显示,但是当我键入我的名字,然后点击提交,我得到一个404

我的文件夹结构如下(只显示相关的文件)


catalog (my project in eclipse) 
- src 
    - a 
    - b 
     - c 
     - catalog 
      - backing 
      - WelcomeServlet.java 
- WebContent 
    - catalog 
    - form.html 
    - WEB-INF 
    - web.xml 
    - classes 
     - a 
     - b 
      - c 
      - catalog 
       - backing 
       - WelcomeServlet.class 

这里是在web.xml中的servlet映射

<servlet> 
    <servlet-name>WelcomeServlet</servlet-name> 
    <servlet-class>a.b.c.catalog.backing.WelcomeServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>WelcomeServlet</servlet-name> 
    <url-pattern>/WelcomeServlet</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>/form.html </welcome-file> 
</welcome-file-list> 

<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 

<welcome-file-list> 
    <welcome-file>/index.jsp</welcome-file> 
    <welcome-file>/index.html</welcome-file> 
</welcome-file-list> 

此网址带来了form.html页面正常http://localhost:8080/catalog/catalog/form.html

当你点击提交按钮,它会调出url http://localhost:8080/catalog/catalog/WelcomeServlet,它会给出404错误。我想我的web.xml文件中存在一个问题,但我不确定,我无法弄清楚这一点。

感谢

+0

你已经在web.xml中声明的任何其他servlet的映射? – planetjones 2011-05-11 15:11:24

+0

是的。我已经用jsf作品的其余servlet映射编辑了这个问题。 – Catfish 2011-05-11 15:13:23

回答

3

尝试第一个servlet映射后添加此:

<servlet-mapping> 
    <servlet-name>WelcomeServlet</servlet-name> 
    <url-pattern>/catalog/WelcomeServlet</url-pattern> 
</servlet-mapping> 
+0

这工作谢谢! – Catfish 2011-05-11 15:27:58

+0

这有效,但我会认为它是一种解决方法。我无法想象URL _catalog/catalog/WelcomeServlet_将成为开发人员的意图。 – 2011-05-12 08:20:39

+0

有一些路径问题需要清理:上下文根可能更清晰,但我期望特定工件基于JSP页面如何生成链接。如果JSP没有在上下文根上翻倍,那么额外的目录就不必在那里。 – Femi 2011-05-12 08:43:00

0

从我所看到的,你的servlet映射到上下文根/WelcomeServlet,而你导航到上下文根 /目录/ WelcomeServlet。他们不是一回事。

我猜你忘了你的html中的斜杠。

+0

对不起,但我没有按照需要做什么。你能否详细说明一下? – Catfish 2011-05-11 15:17:42