2014-01-07 77 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)** 再次感謝您的幫助:) –