2016-06-25 20 views
-1
I am getting this error on using post method in my form-- HTTP Status 405 - HTTP method POST is not supported by this URL. 

をマイregister.htmlファイルは以下の通りです:

<html>   
    <head>   
    <title>Register form</title>   
    </head>   
    <body>   
    <form method="post" action="Register">   
    Name:<input type="text" name="name" /><br/>   
    Email ID:<input type="text" name="email" /><br/>   
    Password:<input type="text" name="pass" /><br/>   
    <input type="submit" value="register" />   
    </form>   
    </body>   
    </html>   

マイRegister.javaサーブレットコードは

以下の通りです
package Glassfish; 
import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.sql.*; 
/** 
* 
* @author Intel I 5 
*/ 
public class Register extends HttpServlet { 
@Override 
protected void service(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    doPost(request, response); 
    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 

    String name = request.getParameter("name"); 
    String email = request.getParameter("email"); 
    String pass = request.getParameter("pass"); 
    try{ 

    //loading drivers for mysql 
    Class.forName("com.mysql.jdbc.Driver"); 

//creating connection with the database 
     Connection con=DriverManager.getConnection 
       ("jdbc:mysql://localhost:3306/test","user","pass"); 

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

    ps.setString(1, name); 
    ps.setString(2, email); 
    ps.setString(3, pass); 
    int i=ps.executeUpdate(); 

     if(i>0) 
     { 
     out.println("You are sucessfully registered"); 
     } 

    } 
    catch(Exception se) 
    { 
     se.printStackTrace(); 
    } 

    } 

は}HTTPステータス405 - HTTPメソッドのPOSTは、このURLでサポートされていない:GlassFishのサーバー使用のNetBeans

私のweb.xmlファイルは、以下の通りである

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.1" 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"> 
     <servlet> 
     <servlet-name>Register</servlet-name> 
     <servlet-class>Glassfish.Register</servlet-class> 
     </servlet> 
     <servlet-mapping> 
     <servlet-name>Register</servlet-name> 
     <url-pattern>/Register</url-pattern> 

    </servlet-mapping> 

    <session-config> 
    <session-timeout> 
     30 
     </session-timeout> 
    </session-config> 
</web-app> 

スタックオーバーフローのポストメソッドに対して、httpエラー405で提供されたすべてのインスタンスを使用しましたが、使用しませんでした。

答えて

0

クラス内でdoPostメソッドをオーバーライドし、POSTリクエストを処理する必要があります。
また、doGetメソッドをオーバーライドし、GET要求を処理するコードを提供する必要があります。

serviceメソッドをオーバーライドしないでください(少なくともコード内で行った方法でオーバーライドしないでください)。あなた、あなたのservice方法でdoPost(request, response);を呼び出し、それはHttpServlet抽象クラスから借用し、あなたがここで見ることができます。このメソッドのデフォルト実装されている。さ
http://grepcode.com/file/repo1.maven.org/maven2/javax.servlet/servlet-api/2.5/javax/servlet/http/HttpServlet.java#HttpServlet.doPost%28javax.servlet.http.HttpServletRequest%2Cjavax.servlet.http.HttpServletResponse%29

351  protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
352  throws ServletException, IOException 
353  { 
354  String protocol = req.getProtocol(); 
355  String msg = lStrings.getString("http.method_post_not_supported"); 
356  if (protocol.endsWith("1.1")) { 
357   resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg); 
358  } else { 
359   resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); 
360  } 
361  } 

- それがBAD_REQUESTまたはMETHOD_NOT_ALLOWEDエラーを送信しますブラウザ。

+0

私は保護された無効な投稿を追加する場合(httpserverletrequest私は私のJavaクラスファイルのすべてのエラーを取得.. uduはどのように安全にこれらのコードを私のJavaクラスに追加することをお勧めします。 –

0

public void service()メソッドを変更し、それをpublic void doGet()に変更し、メソッド内のdoPost(req、resp)メソッドを削除します。これは100℅になります!

関連する問題