it-swarm.com.ru

ошибка получения HTTP Status 405 - метод HTTP GET не поддерживается этим URL, но не используется `get` когда-либо?

Я новичок и создаю небольшую программу регистрации с базой данных, но я пытаюсь запустить это, но это дает мне некоторые ошибки, пожалуйста, помогите:

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

type Status report

message HTTP method GET is not supported by this URL

description The specified HTTP method is not allowed for the requested resource.
Apache Tomcat/8.0.5

А вот мои register.html коды:

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form action="Register" method="post">
    Name: <input type="text" name="name">
    Email: <input type="text" name="email">
    Password: <input type="password" name="password">
    Country:

    <select name="userCountry">
        <option>India</option>
        <option>Pakistan</option>
        <option>Other</option>
    </select><br><br>

    <input type="submit" value="register">
</form>
</body>
</html>

Вот мои Register.Java коды:

import Java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import Java.io.*;

public class Register extends HttpServlet{
    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
        response.setContentType("text/html");
        PrintWriter out=response.getWriter();

        String n=request.getParameter("name");
        String p=request.getParameter("password");
        String e=request.getParameter("email");
        String c=request.getParameter("userCountry");

        try{
            Connection con=DriverManager.getConnection(
                    "jdbc:mysql://localhost:8888", "root", "1234"
            );

            PreparedStatement ps=con.prepareStatement("insert into REGISTERUSER values(?, ?, ?, ?)");

            ps.setString(1,n);
            ps.setString(2,p);
            ps.setString(3,e);
            ps.setString(4,c);

            int i=ps.executeUpdate();
            if(i>0){
                out.print("Registered successfully..");
            }

        }catch(Exception d){d.printStackTrace();}
        out.close();
    }
}

И вот мой Web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <servlet>
        <servlet-name>Register</servlet-name>
        <servlet-class>Register</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Register</servlet-name>
        <url-pattern>/register.html</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>register.html</welcome-file>
    </welcome-file-list>
</web-app>

Помощь будет оценена!

7
user3631223

Проблема в том, что вы сопоставили свой сервлет с /register.html, и он ожидает метод POST, потому что вы реализовали только метод doPost(). Поэтому, когда вы открываете страницу register.html, она не открывает страницу html с формой, а сервлетом, который обрабатывает данные формы.

В качестве альтернативы, когда вы отправляете форму POST по несуществующему URL, в веб-контейнере будет отображаться ошибка 405 (метод не разрешен) вместо 404 (не найден).

Чинить:

<servlet-mapping>
    <servlet-name>Register</servlet-name>
    <url-pattern>/Register</url-pattern>
</servlet-mapping>
10
Leos Literak

Я думаю, что ваша проблема может быть в шаблоне URL. изменения

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

а также

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

может решить вашу проблему

2
Totò

Переопределите метод обслуживания следующим образом: 

protected void service(HttpServletRequest request, HttpServletResponse   response) throws ServletException, IOException {
        doPost(request, response);
}

И вуаля!

1
Mihir Deshpande