HTTP状态405 - HTTP GET方法不受此URL支持[复制](HTTP Status 4

2019-06-27 08:20发布

这个问题已经在这里有一个答案:

  • HTTP状态405 - HTTP GET方法不受此URL支持 2个回答

下面的代码是从一本书,所以它会不会是incorrect.But我不知道如何解决这个下面error.When删除方法的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>

Answer 1:

servlet代码似乎是正确的。 提供web.xml的条目和Servlet URL呼叫。

有造成此错误的原因主要有两个:

1)您没有一个有效的doGet()方法,当你在地址栏直接输入servlet的路径,如Tomcat Web容器将尝试调用doGet()方法。

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

2)你实现了从HTML形式的HTTP POST请求,但你没有doPost()方法来处理它。 使用doGet()不能处理的“邮报”的请求。

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

阅读@ BalusC的回答更多的细节。 : 的doGet和doPost Servlet中



Answer 2:

刚才我同样的问题。 “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”我打电话的超



Answer 3:

更换线

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

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

然后再继续。



Answer 4:

你需要做的

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

在您的index.jsp文件



Answer 5:

当上述错误然后出现重写doGet()方法。

@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        processRequest(req, resp); //To change body of generated methods, choose Tools | Templates.
    }


Answer 6:

我使用的HTML文件。 要创建网页。 所以,当我有这个错误遇到。 我的解决办法是:只是为了消除我的web.xml文件“index.html的”路径。 becayse我的HTML文件的名称是一样的“的index.html”



Answer 7:

每个servlet必须包含一个doGet()方法,它是通过defaultly服务器执行。 所以看到你有doGet方法。



文章来源: HTTP Status 405 - HTTP method GET is not supported by this URL [duplicate]