sOを含むいくつかのフォーラムでこれに関連する多くの質問を見つけるので、私はその非常に一般的な質問を知っています。しかし、私はまだ解決策を見つけていません(web-xml(WEB-INFにあります))
<?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>SMSProjectNew</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>ReceiveMessagesServlet</display-name>
<servlet-name>ReceiveMessagesServlet</servlet-name>
<servlet-class>com.sendreceive.ReceiveMessagesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ReceiveMessagesServlet</servlet-name>
<url-pattern>/ReceiveMessagesServlet</url-pattern>
</servlet-mapping>
</web-app>
webContentフォルダーにあるHTMLページindex.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
The application started successfully version 1:27
<form action="/ReceiveMessagesServlet" method="post">
<input type="text" name="number"/>
<input type="text" name="message"/>
<input type="submit" name="submit"/>
</form>
</body>
</html>
最後に、src\com.sendreceiveパッケージcom.sendreceiveにあるサーブレット、ReceiveMessagesServlet。
import Java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ReceiveMessagesServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ReceiveMessagesServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request,response);
}
protected void processRequest(HttpServletRequest request,
HttpServletResponse response) {
String responseMessage = request.getParameter("message");
String responseNumber = request.getParameter("number");
System.out.println(responseMessage+responseNumber);
}
}
tomcatプラグインをEclipseにインストールしました。プロジェクトを右クリックして、サーバーでプロジェクトを実行するをクリックします。 TomcatサーバーがEclipseで起動し、index.htmlページが表示されます。ただし、フィールドに値を入力して[送信]をクリックすると、404エラーが発生します。過去2時間から苦労してきました。また..fyi、私はこのチュートリアルを使用しています http://www.ibm.com/developerworks/opensource/library/os-Eclipse-Tomcat/index.html
Action = "/ ReceiveMessagesServlet"が原因で404エラーが発生しています。スラッシュを削除してください。 action = "ReceiveMessagesServlet"で試してください。
URLパターンにスラッシュを追加すると、コンテナは「ReceiveMessagesServlet」という名前でデプロイされたWebアプリケーションを探します。これがないため、404エラーが返されます。
アプリケーションをサーブレットコンテナにデプロイすると、URLの前に、そのコンテナ内の他のアプリケーションの中でアプリケーションを識別するコンテキストパスが付加される場合があります(つまり、/ReceiveMessagesServlet
は/MyApp/ReceiveMessagesServlet
になります)。
したがって、その可能性を考慮に入れ、それに応じて、たとえばJSTLの<c:url>
を使用して、URLを変更する必要があります。
<form action="<c:url = value = '/ReceiveMessagesServlet' />" method="post">
または、JSTLなし:
<form action="${pageContext.request.contextPath}/ReceiveMessagesServlet" method="post">
サーブレットにエラーがあると、Tomcatがサーバーログに表示されたサーブレットを使用不可としてマークすることがあります。
2013年6月2日13:32:43 org.Apache.catalina.core.ApplicationContextログ情報:サーブレットイメージャを使用不可としてマーク06/02/2013 13:32:43 org.Apache.catalina.core.StandardWrapperValve呼び出しSEVERE:割り当てサーブレットイメージャの例外Java.lang.ClassNotFoundException com.project.test.ImageThumber
理由のログを見る必要があります。私の場合、いくつかのテストクラスで欠落しているjarです。