2016-12-14 289 views
0

我已經在春季演示了登錄應用程序。這是我的LoginController.java:爲什麼顯示HTTP狀態405 - 此方法不支持HTTP方法POST?

 package com.pran.pal.controller; 


    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 
    import org.springframework.stereotype.Controller; 
    import org.springframework.web.bind.annotation.RequestMapping; 
    import org.springframework.web.bind.annotation.RequestMethod; 
    import org.springframework.web.servlet.ModelAndView; 

    @Controller 

public class LoginController extends HttpServlet{ 

    @RequestMapping(value="/login" ,method=RequestMethod.GET) 
    public ModelAndView login(HttpServletRequest request, HttpServletResponse response) { 

     String userName=request.getParameter("userName"); 
     String password=request.getParameter("password"); 
     String message; 
     if(userName != null && !userName.equals("") && userName.equals("admin") 
     && password != null && !password.equals("") && password.equals("123")){ 
      message = "Welcome " +userName + "."; 
     return new ModelAndView("index", "message", message); 
     } 
     else{ 
      message = "Wrong username or password."; 
     return new ModelAndView("index", "message", message); 
     } 
    } 

我已經使用eclipse Neon,Tomcat v9。

這是我的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.pran.pal</groupId> 
    <artifactId>LoginSystemPAL</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>LoginSystemPAL Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-web</artifactId> 
    <version>4.3.4.RELEASE</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>LoginSystemPAL</finalName> 
    </build> 
</project> 

,這是我的web.xml

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 
    <display-name>Archetype Created Web Application</display-name> 
    <servlet> 
    <servlet-name>LoginController</servlet-name> 
    <servlet-class>com.pran.pal.controller.LoginController</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>LoginController</servlet-name> 
    <url-pattern>/login</url-pattern> 
    </servlet-mapping> 

</web-app> 

這表明輸入用戶名和密碼:

HTTP狀態405 - 此URL不支持HTTP方法POST

類型狀態報告

消息HTTP POST方法不受此URL

描述指定的HTTP方法支持不允許針對所請求的資源 。

我該如何解決這個問題?

+2

那麼你的類*不是*'com.pran.pal.controller' - 它是'com.pran.pal.controller.LoginController'。你爲什麼只指定包名? –

+0

我已經嘗試Both.but但顯示相同的錯誤 –

+2

那麼他們不會顯示*相同的*錯誤 - 你應該絕對有類名。鑑於這一點已經破裂,我建議你再次嘗試使用正確的名稱,然後相應地編輯你的問題。 –

回答

4

你的<servlet-class>應該是com.pran.pal.controller.LoginController,但你也應該從here有一個依賴Spring Web。

此外,您沒有正確使用Spring @Controller註釋。請按照一步一步的教程,如一個here

+0

我已經嘗試過了。它顯示了另一個錯誤。 –

+0

有趣的是,您沒有編譯錯誤,也沒有依賴於Spring Web。你的班級路線中有沒有Jar? –

+1

不 - 看起來'LoginController'不是一個servlet。我想它應該是框架中的一些Servlet。 –

相關問題