2016-12-14 287 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。 –

相关问题