2017-08-06 802 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> 
相关问题