2016-09-04 4 views
-2

Ich lerne Java EE und Maven und ich versuche eine einfache dopost.aber ich bekomme (HTTP-Methode POST wird nicht von dieser URL unterstützt) Was könnten die Probleme Login sein .jspWarum HTTP-Methode POST wird nicht von dieser URL unterstützt

<form action="/login" method="post" > 
<div class="login-container less"> 
    <div class="well-login"> 
     <div class="control-group"> 
      <div class="controls"> 
       <div> 
        <input type="text" placeholder="Username or Email" class="login-input user-name"> 
       </div> 
      </div> 
     </div> 
     <div class="control-group"> 
      <div class="controls"> 
       <div> 
        <input type="password" placeholder="Password" class="login-input user-pass"> 
       </div> 
      </div> 
     </div> 
     <div class="clearfix"> 
      <button class="btn btn-inverse login-btn" type="submit" value="submit">Login</button> 
     </div> 
     <div class="remember-me"> 
      <input class="rem_me" type="checkbox" value=""> Remeber Me 
     </div> 
    </div> 
</div> 
</form> 

Anmeldung Servlets

package webapp; 

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebServlet(urlPatterns = "/login") 
public class LoginServlet extends HttpServlet { 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response); 
    } 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     super.doPost(request, response); 
     response.getWriter().println("success"); 
    } 
} 

kann nicht sehen, wo der Fehler herkommt? und alles scheint oky von meiner Seite SOS

Antwort

0

Wenn Ihre Seite innerhalb web-inf Ordner, Ressourcen, die vor Http Zugriff geschützt werden müssen, sind unter WEB-INF und Filter zum Anzeigen (jsp/html/.doc/.txt/xml) angefügt, um direkten Zugriff zu verhindern.

verwenden, so getServletContext() innerhalb doGet()

request.getServletContext().getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response); 

und da Sie nicht andere Seite von doPost() Verfahren so include() Methode

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
    response.getWriter().println("<h1>success</h1> "); 
    request.getServletContext().getRequestDispatcher("/WEB-INF/views/login.jsp").include(request, response); 
} 

entfernen Sie von super.doPost(request, response); innerhalb doPost außer Kraft verwenden Navigation werden() und auch <form action="login" method="post" > entfernen "/" von Login

3

diese Zeile löschen:

super.doPost(request, response); 

Die doPost Methode in der HttpServlet Basisklasse implementiert wird bedingungslos einen HTTP-Fehler zurück (405 für HTTP 1.1, 400 für HTTP 1.0). doGet, doPut und doDelete sind alle auf die gleiche Weise implementiert. Wenn Sie möchten, dass Ihr Servlet POST-Anfragen unterstützt, überschreiben Sie doPost, aber rufen Sie nicht die Superklassenmethode auf.

+0

können Sie etwas mehr über das Überschreiben s erklären uper.doPost (Anfrage, Antwort); Http Fehler 405 werfen? –

+1

@ B'bekShakya: Ich verstehe Ihre Frage nicht ganz. Wenn die Frage ist, warum die Superklassenmethode den HTTP-Fehler 405 auslöst, dann ist die Antwort, weil ihre Implementierer dies gewählt haben. Siehe Tomcat's Implementierung von HttpServlet [hier] (http://svn.apache.org/repos/asf/tomcat/trunk/java/javax/servlet/http/HttpServlet.java). Soweit ich das beurteilen kann, sagt das [HttpServlet javadoc] (http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServlet.html) nicht, was die Basisklassenmethoden tun sollten . –

+0

danke sir, ich möchte über die Basisklasse-Methode unter der Haube geklärt werden. Wie du gesagt hast, das Dokument liefert mir das nicht wirklich. –

Verwandte Themen