我是Servlets的新手。 我用2个jsp文件做了一个简单的项目。和两个服务员 jsp1,jsp2,servlet1和servlet2。
当两个jsps的body标签中的代码都是这个(两者都指向servlet1)
<form method="post" action="servlet1">
<input type="submit">
</form>`
并且servlet的doPost方法中有一个简单的Sysout ..
在这种情况下它完全正常。
但是当我让第二个jsp调用servlet2时。它不起作用。它给了我这个错误屏幕
HTTP状态404 - / Project / servlet2 类型状态报告 message / Project / servlet2 description请求的资源(/ Project / servlet2)不可用。 Apache Tomcat / 6.0.26
所以我们不能在同一个项目中使用两个不同的servlet吗?
编辑:
这是web.xml文件。如你看到的。所有映射都在那里。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Project</display-name>
<welcome-file-list>
<welcome-file>jsp1.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>servler1</display-name>
<servlet-name>servler1</servlet-name>
<servlet-class>servler1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servler1</servlet-name>
<url-pattern>/servler1</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>servler2</display-name>
<servlet-name>servler2</servlet-name>
<servlet-class>servler2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servler2</servlet-name>
<url-pattern>/servler2</url-pattern>
</servlet-mapping>
</web-app>
答案 0 :(得分:2)
您可能没有在WEB.XML
中映射第二个servlet。检查条目,否则创建自己的,
<servlet>
<servlet-name>Second</servlet-name>
<servlet-class>path.SecondServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Second</servlet-name>
<url-pattern>/SecondServlet</url-pattern>
</servlet-mapping>
在配置web.xml
另请阅读我对How to map a servlet call from a JSP page using form action?
的回答更新:
您的2.jsp应将action
属性映射为
<form action="./servler2" method="post">
答案 1 :(得分:0)
我同意@San Krish的回答。但更多的解释。
正如你所说:
项目中的第二个servlet无法正常工作。
您需要映射web.xml
文件中的每个servlet,就像映射第一个servlet一样。
<强>编辑:强>
来自您编辑过的问题。您在servler1
文件中使用web.xml
但在jsp中使用servlet1
,因此这是主要问题。因此,在jsp文件中使用servler1
。
例如:
<form method="post" action="servler1">
<input type="submit">
</form>`
<强> EDITED1:强> 可能还有另一个原因。
如果您的第二个servlet在包内,则必须在web.xml
中包含包名。假设您需要在servlet2.java
包中的第二个servlet com.myproject.test
,如下面的web.xml文件。
<servlet>
<description></description>
<display-name>servler2</display-name>
<servlet-name>servler2</servlet-name>
<servlet-class>com.myproject.test.servlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servler2</servlet-name>
<url-pattern>/servler2</url-pattern>
</servlet-mapping>