2017-08-06 100 views
0

Directory hierarchy of fileHTTP狀態500錯誤實例化servlet類org.springframework.web.servlet.DispatcherServlet

以上是我的程序的目錄層次

我新的春天和學習MVC的概念我已經寫了將輸入(Name)輸入到文本框並打印Hello ...'name'的程序。以下是我的目錄結構和我創建的各種文件。

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> 
    <display-name>MVC_HelloWorld</display-name> 
    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <!-- default configuration --> 
    <servlet> 
    <servlet-name>HelloWorld</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    </servlet> 



<servlet-mapping> 
    <servlet-name>hello</servlet-name> 
    <url-pattern>*.ap</url-pattern> <!-- this same extension should bbe used in form action --> 
    </servlet-mapping> 
</web-app> 

的HelloWorld-servlet.xml中

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" 
"http://www.springframework.org/dtd/spring-beans-2.0.dtd"> 

<beans> 
<!-- default handler mapping --> 
<!-- file should be created under web inf annd it's view resolver file --> 

    <!-- handler(Not rqd in case of default handler) --> 
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> 

    <!-- controller configuration --> 
<bean name="/HelloWorld.ap" class="controller.HelloController"> <!-- mapping url pattern to controller class using 'name' --> 

<!-- view resolver --> 

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" vlaue="/"/> <!-- default location (prefix used foor rqd page locations) --> 
     |<property name="sufix" value=".jsp"/> <!-- sufix used forr rqd page extensions --> 

</bean> 

</bean> 

</beans> 

HelloController.java

package controller; 

import java.util.HashMap; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.springframework.web.servlet.ModelAndView; 
import org.springframework.web.servlet.mvc.Controller; 

import com.sun.javafx.collections.MappingChange.Map; 

public class HelloController implements Controller { 

    @Override 
    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res) throws Exception { 

     String name=req.getParameter("name"); 

     Map m= new HashMap(); // creating output object 
      m.put("msg","Hello..."+name); 

      ModelAndView mav=new ModelAndView("success"+m); 



     return mav; 
    } 

} 

的index.jsp

<h1> Hello World</h1> 

<form action="./hello.ap"> 

NAME: <input type="text" name="name"> 
     <input type="Submit" value="Say Hello"> 
</form> 

的success.jsp

${msg} 
當我運行該代碼的index.jsp頁面運行正常毛刺在進一步執行它顯示錯誤500什麼是錯的代碼

??我在Eclipse中使用氧氣apache 8.5

回答

0

你在web.xml中的配置是錯誤的。

您正試圖將dispatch servlet映射爲控制器。
在像其他mvc框架(struts等)一樣的spring mvc中,有一個主要的servlet用於分派所有請求。

org.springframework.web.servlet.DispatcherServlet通常被命名爲「調度員」和應該被映射到通常爲頂層URL「\」

例如

<servlet> 
       <servlet-name>dispatcher</servlet-name> 
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
       <init-param> 
        <param-name>contextConfigLocation</param-name> 
        <param-value>/WEB-INF/spring/dispatcher-servlet.xml</param-value> 
       </init-param> 
       <load-on-startup>1</load-on-startup> 
      </servlet> 
    ... 
    <servlet-mapping> 
       <servlet-name>dispatcher</servlet-name> 
       <url-pattern>/</url-pattern> 
      </servlet-mapping> 

而控制器被映射在這個URL下,例如,的HelloWorld

@Controller 
@RequestMapping("/HelloWorld");" 
public class HelloController implements Controller {} 

正如您最初的項目是遠離經典的香草啓動Spring MVC的項目,它看起來像你使用的是很舊的Spring版本(或彈簧教程)。我建議從一些在線教程中重新開始。

E.g.

http://www.journaldev.com/2433/spring-mvc-tutorial
http://www.mkyong.com/spring-mvc/gradle-spring-mvc-web-project-example/

+0

很抱歉,但我沒有得到你said..could你PLZ解決方案做出改變我的文檔中,這樣它會很容易理解 –

+0

我沒有提供一個解決方案,只是指出你的錯誤之一。從一個教程的示例項目開始。 –

+0

您可以嘗試克隆我的一個樣本以及https://github.com/ramanh3/rest-json –

0

嘗試下面編輯web.xml中。

<servlet-mapping> 
<servlet-name>HelloWorld</servlet-name> 
<url-pattern>*.ap</url-pattern> <!-- this same extension should bbe used in form action --> 
</servlet-mapping> 
相關問題