0

以下は、単純なサーブレット (Process.java)、JSP ページ (index.jsp)、およびモデル (Model.java) のコードです。

index.jsp :

<%@ page import="com.example.*" %>

<html>
<head>
<title> Myapp </title>
</head>

<body>
<form action="process.do" method="POST">
UserName: <input type="text" name="username">
<br>
UserID: <input type="text" name="userid">
<br>
<input type="submit">
<br>

<%
Model m = (Model) request.getAttribute("model");

if( m != null) {
out.println("Username: " + m.getUserName() );
out.println("UserID: " + m.getUserID() );
}
%>

</form>
</body>
</html>

Process.java :

package com.example;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Process extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        Model m = new Model();
        m.setUserName( request.getParameter("username") );
        m.setUserID( Integer.parseInt( request.getParameter("userid") ) );

        request.setAttribute("model", m);
        response.sendRedirect( request.getRequestURI() );
    }
}

Model.java :

package com.example;

public class Model {

    private String userName = "";
    private int userID = -1;

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public void setUserID(int userID) {
        this.userID = userID;
    }

    public String getUserName() {
        return userName;
    }

    public int getUserID() {
        return userID;
    }
}

web.xml :

<servlet>
    <servlet-name>Process</servlet-name>
    <servlet-class>com.example.Process</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Process</servlet-name>
    <url-pattern>/process.do</url-pattern>
</servlet-mapping>

私は Tomcat7 を使用しており、このアプリをコンテキスト /myapp にデプロイしました。index.jsp ページを正しく表示できますが、フォームを送信すると以下のエラーが発生します。

HTTP Status 405 - HTTP method GET is not supported by this URL
4

3 に答える 3

0

あなたは何を達成しようとしていresponse.sendRedirect( request.getRequestURI() );ますか?

これは、サーブレットで処理されないGETリクエストをブラウザに送信するように指示/process.doします(doPostのみを拡張しています)。index.jsp に戻りたい場合は、response.sendRedirect( "index.jsp");

編集:

index.jsp でモデル属性にアクセスする必要があるため、実際にブラウザーのリダイレクトを行うことはできません。代わりに、サーバー リダイレクトが必要です。

request.getRequestDispatcher("index.jsp").include(request, response)代わりにresponse.sendRedirect()あなたのために働くべきです。

于 2013-01-29T12:52:26.250 に答える
0

「response.sendRedirect()」メソッドを使用すると、リクエスト オブジェクトがブラウザに渡されます。そのため、これ以上リクエスト オブジェクトを処理することはできません。「sendRedirect」の代わりに「RequestDispacther」を使用してください。連絡が取れなくても気にしないでください。

于 2013-01-30T05:45:58.927 に答える
0

にリダイレクトしていませんJSPpostフォームの URL が変更され、それhttp://domain.com/../process.doを使用するrequest.getRequestedUri()とサーブレットの URL が与えられ、メソッドがないdoGet()ため、そのエラーが発生する場合に何が起こるかを説明しましょう。response.sendRedirect("index.jsp")ファイルにリダイレクトするために使用する必要がありindex.jspます。

于 2013-01-29T12:54:06.283 に答える