2015-08-20 6 views
0

Я делаю простой проект Spring MVC Hello World. Однако у меня есть эта небольшая проблема с отображением jsp-файлов в URL-адресе. Всякий раз, когда я звоню http://localhost:8080/SalesManagement/welcome, он возвращает 404 Error. Я пробовал все сказанное в некоторых из тех же вопросов, но я все еще не могу заставить его работать успешно. Вот мои коды:Spring MVC: Нет сопоставления для HTTP-запроса

package com.salesmanagement.web; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.servlet.ModelAndView; 


@Controller 
public class HelloWorldController { 

    @RequestMapping("/welcome") 
    public ModelAndView helloWorld() { 

     String message = "<br><div style='text-align:center;'>" 
       + "<h3>********** Hello World, Spring MVC Tutorial</h3>This message is coming from CrunchifyHelloWorld.java **********</div><br><br>"; 
     return new ModelAndView("welcome", "message", message); 
    } 
} 

продаж-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-4.0.xsd"> 

<context:component-scan base-package="com.salesmanagement.web" /> 
<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" 
     value="org.springframework.web.servlet.view.JstlView" /> 
    <property name="prefix" value="/WEB-INF/jsp/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
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_3_0.xsd" version="3.0"> 
<display-name>SalesManagement</display-name> 
    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

<servlet> 
    <servlet-name>sales</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
    <servlet-mapping> 
     <servlet-name>sales</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

</web-app> 

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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>SalesManagement</groupId> 
<artifactId>SalesManagement</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>war</packaging> 
<dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>4.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>4.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>4.1.1.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.1.3</version> 
    </dependency> 
</dependencies> 
<build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.3</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.6</version> 
      <configuration> 
       <warSourceDirectory>WebContent</warSourceDirectory> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Название моего проекта - SalesManagement. У меня есть index.jsp внутри папки WebContent/WEB-INF, а my welcome.jsp находится внутри папки WebContent/WEB-INF/jsp. Я попытался добавить тэг <mvc:annotation-driven />, и он все еще не работает.

+0

Я следую этому учебнику, кстати: http://crunchify.com/simplest-spring-mvc-hello-world-example-tutorial-spring-model -view-controller-tips/ –

+0

Каково точное имя вашего файла WAR? –

+0

Извините, что вы имеете в виду? Предполагается ли, что у него есть имя? Я просто добавил свой pom.xml –

ответ

0

Обновление комментария это то, что сработало для меня.
продажи-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:p="http://www.springframework.org/schema/p" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd 
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> 

    <mvc:annotation-driven /> 
     <context:component-scan base-package="com.salesmanagement.web" /> 

     <bean id="viewResolver" 
      class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
      <property name="viewClass" 
       value="org.springframework.web.servlet.view.JstlView" /> 
      <property name="prefix" value="/WEB-INF/jsp/" /> 
      <property name="suffix" value=".jsp" /> 
     </bean> 
    </beans> 
+0

Я пробовал это, но он возвращает ошибку. "org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: строка 12 в документе XML из ресурса ServletContext [/WEB-INF/sales-servlet.xml] недопустима, вложенное исключение - org.xml.sax.SAXParseException; строка: 12 ; columnNumber: 69; cvc-complex-type.2.4.c: Соответствующий шаблон является строгим, но для элемента «bean» не найдено декларации. \t org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions (XmlBeanDefinitionReader .java: 399) " –

+0

Вы используете инструмент STS или Eclipse? – Neeraj

+0

Да, этот url работает. Но не http: // localhost: 8080/SalesManagement/welcome –

0
 you can use this viewResolver. 
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
       <property name="prefix" value="/WEB-INF/jsp/" /> 
       <property name="suffix" value=".jsp" /> 
     </bean> 

use **spring 3.1.1** version jar file into pom.xml 
and create welcome.jsp file and print ${message}