1

私は Java サーブレットを学んでおり、私が使用している本にはファイルアップロードの例があります。それを行うと、次のエラーが表示されます

メソッド getInputStream() は、型 HttpServletResponse に対して未定義です

使おうとすると

ServletInputStream sis =  response.getInputStream();

提供されたソリューション日食の1つは

ServletInputStream sis =  ((ServletRequest) response).getInputStream();

そして、それを使用すると、次のようになりました

java.lang.ClassCastException: org.apache.catalina.connector.ResponseFacade をキャストできません

javax.servlet.ServletRequest へ ShowForm.doPost(ShowForm.java:37) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

ここに私の完全なコードがあります:

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

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ShowForm
 */
@WebServlet("/ShowForm")
public class ShowForm extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public ShowForm() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

            doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/plain");
        PrintWriter out = response.getWriter();

        ServletInputStream sis =  response.getInputStream();
        for (int i = sis.read();i != -1; i = sis.read())
            {

                out.print((char)i);

            }
    }
}
4

3 に答える 3

2

元のエラーを聞いてください:

メソッド getInputStream() は、型 HttpServletResponse に対して未定義です

これはあなたに問題を伝えています。 HttpServletResponseにはgetInputStream()メソッドがありません - メソッドを持っていても意味がありません。

getInputStream()はオンHttpServletRequestです。

Eclipse は、自動修正の提案に関しては少しばかげている可能性があります。

于 2012-04-17T15:35:45.997 に答える
2

これはServletResponse/HttpServletResponseに . がないためgetInputStream()です。getInputStream実際にはfromを使用したい場合がありHttpServletRequestます。

request.getInputStream()
于 2012-04-17T15:36:17.427 に答える
0

HttpServletRequest から InputStream を取得できます。HttpServletOutputStream から代わりに、OutputStream を取得できます。通常、着信要求を読み、それに応じて応答を書きたいので、これは理にかなっています。

于 2012-04-17T15:36:48.993 に答える