HTTP-статус 405 – HTTP-метод POST не поддерживается этим URL-адресом Java-сервлет

У меня проблемы с работой страницы. У меня есть метод формы для публикации, и мой сервлет реализует doPost() . Тем не менее, он продолжает показывать мне, что я не поддерживаю метод POST .

Я просто пытаюсь сделать простой сайт и вставить значения в свою базу данных MySQL.

 *type Status report message HTTP method POST is not supported by this URL description The specified HTTP method is not allowed for the requested resource (HTTP method POST is not supported by this URL).* 

статическая страница:

     XHTML Mobile Profile Document   <!--  document-wide styles would go here  -->   

Register Here

UserName:
Password:
Name:
Email:

сервлет:

 package core; import java.io.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class handlingReg extends HttpServlet { //database parameters private static final String db_server = "localhost/"; private static final String db_name ="bus_guide"; private Connection con = null; //init of connection to dabatase public void init(ServletConfig config) throws ServletException { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (Exception e) { System.out.println("Exception in init(): unable to load JDBC DriverA"); } try { con = DriverManager.getConnection("jdbc:mysql://"+ db_server + db_name , "root" , ""); System.out.println("conn: "+con); } catch (Exception e) { System.out.println(e.getMessage()); } } //end init() public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //response handling response.setContentType("text/html"); PrintWriter out = response.getWriter(); //handling request String enteredUsername = request.getParameter("txtregUsername"); String enteredPw = request.getParameter("txtregPassword"); String enteredName = request.getParameter("txtregName"); String enteredEmail = request.getParameter("txtregEmail"); //inserting values into database try { Statement stmnt = con.createStatement(); stmnt.executeUpdate("INSERT INTO regUsers VALUES('"+enteredUsername+"','"+enteredPw+"','"+enteredName+"','"+enteredEmail+"')"); } catch (SQLException ex) { System.out.println(ex.getMessage()); } //output html out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println("Register Success!"); out.println(" Click here to go back to main page. "); out.println(""); out.println(""); } } 

web.xml:

     handleRegister core.handlingReg   handleRegister /regSuccess.do    invoker /servlet/*   xhtml text/html   jad text/vnd.sun.j2me.app-descriptor   jar application/java-archive   

edit: удален doGet (запрос, ответ);

Это потому, что вы вызываете doGet() без фактического выполнения doGet() . Это реализация doGet () по умолчанию, которая вызывает ошибку, заявляя, что метод не поддерживается.

если вы используете tomcat, вы можете попробовать это

  POST  

в дополнение к и

Он говорит: «POST не поддерживается», поэтому запрос не вызывает ваш сервлет. Если бы я был вами, я выдаст GET (например, доступ с помощью браузера) к точному URL-адресу, который вы выдаете свой запрос POST, и посмотрите, что вы получаете. Готов поспорить, вы увидите что-то неожиданное.

Это случилось со мной, когда:

  • Даже с моим сервлетом, имеющим только метод «doPost»,
  • И метод формы = “POST”

  • Я попытался получить доступ к действию с помощью URL-адреса напрямую, не используя форму отправки. Поскольку метод по умолчанию для URL-адреса является методом doGet, когда вы не используете форму submit, вы увидите @ на своей консоли ошибку http 405.

Решение. Используйте только кнопку формы, которую вы сопоставили с действием сервлета.