2016-08-26 8 views
0

転送メソッドディスパッチャーでエラーが発生しました。 これは私のサンプルコードですが、エラーメッセージが表示されています。私はs2.javaファイルを使用して表示名が必要です。ディスパッチャーサーブレットの転送メソッドでエラーが発生する

これはhtmlページを表示しています。名前を最初と最後に入れて、エラーを表示してください。

/*this is s1.java(first java file)*/ 
 
package rqdis; 
 

 
import java.io.IOException; 
 
import java.io.PrintWriter; 
 

 
import javax.servlet.RequestDispatcher; 
 
import javax.servlet.ServletException; 
 
import javax.servlet.http.HttpServlet; 
 
import javax.servlet.http.HttpServletRequest; 
 
import javax.servlet.http.HttpServletResponse; 
 

 
public class S1 extends HttpServlet{ 
 
\t public void doPost(HttpServletResponse rs,HttpServletRequest rq) 
 
\t throws ServletException,IOException{ 
 
\t \t try{ 
 
\t \t \t rs.setContentType("text/html"); 
 
\t \t \t PrintWriter p=rs.getWriter(); 
 
\t \t \t String s1=rq.getParameter("n1"); 
 
\t \t \t String s2=rq.getParameter("n2"); 
 
\t \t \t p.print(s1+" "+s2); 
 
\t \t RequestDispatcher rd=rq.getRequestDispatcher("/fff"); 
 
\t \t rd.forward(rq, rs); 
 
\t \t p.print("am from server 1.!"); 
 
\t \t p.close(); 
 
\t \t }catch (Exception e){ 
 
\t \t \t e.printStackTrace(); 
 
\t \t } 
 
\t } 
 
} 
 
/*this is s2.java(second java file)*/ 
 
package rqdis; 
 

 
import java.io.IOException; 
 
import java.io.PrintWriter; 
 

 
import javax.servlet.ServletException; 
 
import javax.servlet.http.HttpServlet; 
 
import javax.servlet.http.HttpServletRequest; 
 
import javax.servlet.http.HttpServletResponse; 
 

 
public class s2 extends HttpServlet{ 
 
\t public void doPost(HttpServletRequest rq,HttpServletResponse rs) 
 
\t throws ServletException,IOException{ 
 
\t \t try{ 
 
\t \t rs.setContentType("text/html"); 
 
\t \t PrintWriter p=rs.getWriter(); 
 
\t \t String s1=rq.getParameter("n1"); 
 
\t \t String s2=rq.getParameter("n2"); 
 
\t \t p.print(s1+" "+s2); 
 
\t \t p.print("am from server 2.!"); 
 
\t \t p.close(); 
 
\t \t }catch (Exception e){ 
 
\t \t \t e.printStackTrace(); 
 
\t \t } 
 
\t } 
 
}
<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
 
    <display-name>rqdis</display-name> 
 
    <welcome-file-list> 
 
    <welcome-file>main.html</welcome-file> 
 
    </welcome-file-list> 
 
    <servlet> 
 
    <servlet-name>firstservlet</servlet-name> 
 
    <servlet-class>rqdis.S1</servlet-class> 
 
    </servlet> 
 
    <servlet-mapping> 
 
    <servlet-name>firstservlet</servlet-name> 
 
    <url-pattern>/ff</url-pattern> 
 
    </servlet-mapping> 
 
    <servlet> 
 
    <servlet-name>secondservlet</servlet-name> 
 
    <servlet-class>rqdis.s2</servlet-class> 
 
    </servlet> 
 
    <servlet-mapping> 
 
    <servlet-name>secondservlet</servlet-name> 
 
    <url-pattern>/fff</url-pattern> 
 
    </servlet-mapping> 
 
</web-app>
<html> 
 

 
<head> 
 
<meta charset="ISO-8859-1"> 
 
<title>disfor</title> 
 
</head> 
 

 
<body> 
 
<form action="forward metod" method="post"> 
 
    First name: 
 
    <input type="text" name="n1"> Last name: 
 
    <input type="text" name="n2"> 
 
    <input type="submit" value="Submit"> 
 
</form> 
 
</body> 
 

 
</html>

+0

あなたが取得しているエラーは何ですか? :) – Squazz

答えて

1

応答が他のサーブレットでコミットされるため、別のサーブレットに転送するときにサーブレットに書き込むべきではありません。

参考: Cause of Servlet's 'Response Already Committed'

0

私はコードから見ることができるように、あなたが取得されるだろうエラー(見つかりません)404です。フォームアクションはforward metodです。これはweb.xmlファイルにURLマッピングがありません。フォームアクションは、リクエストが行われるべきURLを指定するために使用されます。 フォームのアクションをaction="/ff"に変更してみてください。

関連する問題