6

以下のコードは本からの引用なので間違っていませんが、以下のエラーの解き方がわかりません。メソッドdoGet()を削除すると、同じエラーが!

「HTTP ステータス 405 - HTTP メソッド GET は、この URL ではサポートされていません」

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PDFServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override 
protected void doGet(HttpServletRequest request,HttpServletResponse response) 
throws IOException,ServletException{
    this.doPost(request,response);
}
@Override 
protected void doPost(HttpServletRequest request,HttpServletResponse response) 
                                   throws IOException,ServletException{
    response.setContentType("application/pdf");
    ServletOutputStream out=response.getOutputStream();
    File pdf=null;
    BufferedInputStream buf=null;
    try{
        pdf=new File("C:\\Users\\lk\\Desktop\\Desktop\\ example.pdf");
        response.setContentLength((int)pdf.length());
        FileInputStream input=new FileInputStream(pdf);
        buf=new BufferedInputStream(input);
        int readBytes=0;
        while((readBytes=buf.read())!=-1)    out.write(readBytes);
    }catch(IOException e){
        System.out.println("file not found!");
    }finally{
        if(out!=null) out.close();
        if(buf!=null) buf.close();
    }
}
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
-<web-app xsi:.........." version="2.5"> 
-<servlet> 
<description>This is the description of my Java EE component</description> 
<display-name>This is the display name of my Java EE component</display-name> 
<servlet-name>PDFServlet</servlet-name> 
<servlet-class>PDFServlet</servlet-class> 
</servlet> 
-<servlet-mapping> 
<servlet-name>PDFServlet</servlet-name> 
<url-pattern>/PDFServlet</url-pattern> 
</servlet-mapping> 
-<welcome-file-list> 
<welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
-<login-config> 
<auth-method>BASIC</auth-method> 
</login-config> 
</web-app>
4

7 に答える 7

13

私はちょうど今、この同じ問題を抱えていました。「HTTP ステータス 405 - HTTP メソッド GET は、この URL ではサポートされていません」。私の解決策は次のとおりです。

public abstract class Servlet extends HttpServlet {

    protected HttpServletRequest req;
    protected HttpServletResponse resp;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.req = req;
        this.resp = resp;
        this.requestManager();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.req = req;
        this.resp = resp;
        this.requestManager();

    }

    protected abstract void requestManager() throws IOException;
}

「doGet」がスーパーを呼び出していたため、コンストラクターに問題がありました

于 2013-05-28T18:20:11.137 に答える
10

サーブレット コードは正しいようです。web.xmlエントリとサーブレット呼び出し URL を提供します。

このエラーが発生する主な理由は 2 つあります。

1) 有効な doGet() メソッドがありません。サーブレットのパスをアドレス バーに直接入力すると、Tomcat などの Web コンテナが doGet() メソッドを呼び出そうとします。

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException{
....
}

2) HTML フォームから HTTP ポスト リクエストを作成しましたが、それを処理する doPost() メソッドがありません。doGet() は「Post」リクエストを処理できません。

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException{
....
}

詳細については、@BalusC の回答を参照してください。:サーブレットの doGet と doPost

于 2012-08-24T09:06:36.097 に答える
-1

上記のエラーが表示されたら、メソッドをオーバーライドしますdoGet()

@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        processRequest(req, resp); //To change body of generated methods, choose Tools | Templates.
    }
于 2016-02-02T09:57:03.763 に答える
-1

あなたがする必要があります

<form action="servlet name " method="post">

index.jsp ファイルで

于 2015-07-09T11:15:19.000 に答える
-1

ラインを交換する

pdf=new File("C:\\Users\\lk\\Desktop\\Desktop\\ example.pdf");

pdf=new File("C:/Users/lk/Desktop/Desktop/example.pdf");

してから、もう一度進みます。

于 2013-03-06T06:28:31.997 に答える
-1

I was using html file. To create web page. So when I encountered with this error. My solution was: Just to remove " index.html " path in my web.xml file. becayse my html file name was the same as "index.html"

于 2016-08-14T20:39:12.583 に答える
-3

各サーブレットには、デフォルトでサーバーによって実行される doGet() メソッドが含まれている必要があります。doGet メソッドがあることを確認してください。

于 2013-11-20T06:40:15.177 に答える