2016-06-20 4 views
0

Я пытаюсь изучить фреймворк mvc весны, но когда я пытаюсь запустить код под водой на сервере, я не получаю ничего визуализированного и только ошибку в скрининг. Но я заметил, что url имеет WEB-INFHelloPage/.jsp в ошибке 404. Это нормально (также с обратной косой чертой между WEB-INF/HelloPage.jsp)? И почему я не получаю что-то как:HTTP Status 404 - /FirstSpringMVCProject/WEB-INFHelloPage/.jsp

Первый Spring MVC приложения Demo

Привет пользователь, Добро пожаловать на первый Spring MVC приложения

визуализации?

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" 
    id="WebApp_ID" version="3.0"> 
    <display-name>FirstSpringMVCProject</display-name> 

    <servlet> 
     <servlet-name>spring-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 

    </servlet> 

    <servlet-mapping> 
     <servlet-name>spring-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 


</web-app> 

HelloController:

package com.stack; 

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

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

public class HelloController extends AbstractController { 

    @Override 
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) 
      throws Exception { 
     ModelAndView modelandview = new ModelAndView("HelloPage"); 
     modelandview.addObject("welcomeMessage", "Hi User, welcome to the first Spring MVC Application"); 
     return modelandview; 
    } 

} 

весна-диспетчерская-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" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 

    <bean id="HandlerMapping" 
     class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> 

    <bean name="/welcome.html" class="com.stack.HelloController" /> 

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


    </bean> 


</beans> 

HelloPage.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> 
<!-- <title>Insert title here</title> --> 
</head> 

<h1> First Spring MVC Application Demo </h1> 

<h2>${welcomeMessage}</h2> 

<body> 

</body> 
</html> 

экран стрелять

enter image description here

ответ

1

Ошибка явно о том, что вы забыли окончание / в префиксной собственности. Оно должно быть:

... 
<property name="prefix"> 
      <value>/WEB-INF/</value> 
     </property> 
... 

Но с достойной версией Spring MVC, то нет никаких оснований для использования явного BeanNameUrlHandlerMapping, ни вывести вас контроллер класса от AbstractController. Это были для Spring 2.0, но с 3.1 RequestMapping аннотированные методы являются более мощными и более простыми в использовании.