【问题标题】:Servlet error HTTP Status 405 - HTTP method GET is not supported by this URLServlet 错误 HTTP 状态 405 - 此 URL 不支持 HTTP 方法 GET
【发布时间】:2015-02-14 10:49:15
【问题描述】:

我编写了以下 Servlet (Search1.java):

package ergasia;

import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.ArrayList;

public class Search1 extends HttpServlet
{       
   @Override
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException 
   {
    response.setContentType("text/html");    
    Connection connection= null;    
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "ergasia";    
    String user = "root";
    String password = "password"; 
    PreparedStatement selectProteins = null;
    ResultSet resultSet = null;  
    ArrayList al = null;

        try {            
            connection = DriverManager.getConnection(url + dbName, user, password);
            String keyword = request.getParameter("keyword");            
            selectProteins = connection.prepareStatement("SELECT * FROM protein WHERE proteinName LIKE ?");
            selectProteins.setString(1, "%" + keyword + "%");
            resultSet = selectProteins.executeQuery();            

            ArrayList keyword_list = new ArrayList();             

                while (resultSet.next()) {
                    al = new ArrayList();
                    al.add(resultSet.getString(1));
                    al.add(resultSet.getString(2));
                    al.add(resultSet.getString(3));
                    al.add(resultSet.getString(4));
                    al.add(resultSet.getString(5));
                    al.add(resultSet.getString(6));
                    al.add(resultSet.getString(7));                
                    keyword_list.add(al);
                }

            request.setAttribute("results", keyword_list);        
            RequestDispatcher view = request.getRequestDispatcher("/search_proteins.jsp");
            view.forward(request, response);

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    @Override
    public String getServletInfo() {
        return "info";
    }
}  

我使用以下命令从 jsp 页面访问:

<form method="post" action="/ergasia/Search1"> 

但是当我尝试运行它时,tomcat 给了我以下错误: HTTP 状态 405 - 此 URL 不支持 HTTP 方法 GET 类型:状态报告 消息:此 URL 不支持 HTTP 方法 GET 描述:请求的资源不允许使用指定的 HTTP 方法。

这也是我的 web.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">        
    <servlet>
        <servlet-name>Search_proteins</servlet-name>
        <servlet-class>ergasia.Search1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Search_proteins</servlet-name>
        <url-pattern>/Search_proteins</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

你能帮我找出我做错了什么吗?

很遗憾我还不能发布图片,所以这是我的配置,也许会有所帮助:1

【问题讨论】:

    标签: java jsp servlets post get


    【解决方案1】:

    试试这个:

    <form action="/Search_proteins" method="post">
    

    url 映射为:

    <servlet-mapping>
       <servlet-name>Search_proteins</servlet-name>
            <url-pattern>/Search_proteins</url-pattern>
    </servlet-mapping>
    

    【讨论】:

    【解决方案2】:

    你的 servlet 没有 /ergasia/Search1 这样的 url-pattern,试试这个:

    <form method="post" action="Search_proteins"> 
    

    【讨论】:

    • 我试过了,点击搜索后它会加载页面:localhost:8084/Search_proteins 并没有显示任何内容。
    • @LunaNA,你能分享整个jsp吗?可能jsp有一些无效的html
    • 我找到了,我的数据库和包同名,导致冲突。
    【解决方案3】:

    当我们在表单动作中写method="get"时,在Servlet中写doGet(),如果method="post",则写doPost()。但是您的错误 "HTTP method GET is not supported by this URL" 是连线的,因为您的代码表单操作和 doPost() 方法是正确的。我认为 web.xml 中有一些配置错误。

    请在您的 web.xml 中更改以下代码。

        <?xml version="1.0" encoding="UTF-8"?>
        <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">        
    
     <servlet>    
        <servlet-name>eservlet</servlet-name>
        <servlet-class>ergasia</servlet-class>
     </servlet>
    
     <servlet-mapping>  
        <servlet-name>eservlet</servlet-name>
        <url-pattern>/Search1</url-pattern>    
     </servlet-mapping>
    
            <welcome-file-list>
                <welcome-file>index.jsp</welcome-file>
            </welcome-file-list>
        </web-app>
    

    【讨论】:

    • 我试过这个,当我从帖子中调用它作为
      它给了我这个错误:HTTP Status 500 - Error instantiating servlet class ergasia and当我将其称为
      时,它给了我这个错误:HTTP Status 404 - /ergasia/Search1 我很困惑。
    猜你喜欢
    • 2020-07-16
    • 2014-01-16
    • 2014-10-12
    • 1970-01-01
    • 2012-12-14
    • 2016-04-14
    • 2015-03-10
    • 2016-07-18
    • 2016-01-08
    相关资源
    最近更新 更多