2014-01-07 193 views
0

我使用弹簧控制器注释。 但运行我的应用程序获取HTTP状态404时 -/LoginAuth错误HTTP状态404 -/LoginAuth

我的文件点击登录按钮,它会调用的LoginController后 的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
id="WebApp_ID" 
version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" > 

<display-name>SpringTest</display-name> 
<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>WEB-INF/dispatcher-servlet.xml</param-value> 
</context-param> 


</web-app> 

的index.jsp 在这个文件中。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
<form action="LoginAuth" method="get"> 
<label>Enter name :</label> 
<input type="text" name="uname"><br> 
<label>Enter pass :</label> 
<input type="password" name="pass"><br> 
<input type="submit" value="LogIn"> 
</form> 

</body> 
</html> 

dispacher-servlet.xml中

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
      http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 



<bean 
    id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver" > 
    <property 
     name="prefix" 
     value="/WEB-INF/JSP/" /> 

    <property 
     name="suffix" 
     value=".jsp" /> 
</bean> 

<context:component-scan base-package="com.controller" /> 


</beans> 

LoginController.java

package com.controller; 
import org.apache.catalina.connector.Request; 
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 { 
@RequestMapping(value="/LoginAuth",method=RequestMethod.GET) 
public ModelAndView loginAuth(Request req){ 
    String uname=req.getParameter("uname"); 
    String pass=req.getParameter("pass"); 
    ModelAndView mav=new ModelAndView(); 
    if(uname.equals("Alk") && pass.equals("Alk1234")){ 
     mav.setViewName("success"); 
    }else{ 
     mav.setViewName("error"); 
    } 
    return mav; 
} 

} 

请帮助我。

+0

是不是因为您将调度程序servlet映射到***。do **和**/LoginAuth **只是与此url模式不匹配? – oceansize

回答

0

您的设置有几个问题。

首先,调度servlet将automatically load web应用上下文 - 通过dispatcher-servlet.xml所定义的。您无需在contextConfigLocation中为ContextLoaderListener指定此项。

因为它不看起来好像你有一个根应用上下文中(通常由ContextLoaderListener加载),那么你就可以删除您web.xml如下:

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>WEB-INF/dispatcher-servlet.xml</param-value> 
</context-param> 

后,调度员的servlet映射到*.do但你的控制器和表单动作都省略.do 。您的形式和控制器映射更改为LoginAuth.do

,你应该添加<mvc:annotation-driven/>dispatcher-servlet.xml激活的@RequestMapping注释和告诉Spring注册了一堆其他幕后相当有用的豆类。

为此,mvc命名空间应该被添加到您的dispatcher-servlet.xml的顶部:

xmlns:mvc="http://www.springframework.org/schema/mvc" 

用的架构位置:

http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 

给一个尝试,看看你的身体情况如何。

+0

谢谢你会 根据你的改变,但现在变得“HTTP状态500 - ”错误 –

+0

确定这比404更好,因为请求越来越。你能检查应用程序日志并找到堆栈跟踪吗?如果您使用Tomcat,请检查'catalina.out'和'localhost。日志' –

+0

我解决了这个问题,将** public ModelAndView loginAuth(Request req)**替换为** public ModelAndView loginAuth(HttpServletRequest req)** 再次感谢您的帮助:) –