2016-03-21 3 views
0

Попытка сделать страницу приветствия от Spring MVC.Spring MVC неправильно отображает текст

Вот мой /WeeklyPickems/src/main/webapp/WEB-INF/config/servlet-config.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:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:context="http://www.springframework.org/schema/context" 

    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd"> 

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

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

Вот мой /WeeklyPickems/src/main/webapp/WEB-INF/web.xml

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 
    <servlet> 
    <servlet-name>WeeklyPickemsServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/config/servlet-config.xml</param-value> 
    </init-param> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>WeeklyPickemsServlet</servlet-name> 
    <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 
    <display-name>Archetype Created W eb Application</display-name> 
</web-app> 

Вот мой /WeeklyPickems/src/main/java/com/lucentdigital/controller/HelloController.java

package com.lucentdigital.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.RequestMapping; 


@Controller 
public class HelloController { 

    @RequestMapping(value="/greeting") 
    public String sayHello(Model model) { 

     model.addAttribute("greeting", "Hello World"); 

     return "hello"; 

    } 

} 

При переходе к http://localhost:8080, браузер правильно делает /WeeklyPickems/src/main/webapp/index.jsp но навигации по http://localhost:8080/WeeklyPickems/greeting.html, я его использовал, чтобы отобразить сообщение об ошибке 404:

HTTP Status 404 - 
type Status report 
message 
description The requested resource is not available. 

Теперь я обновил свой путь и все это работает, но по-прежнему не отображается правильно «Hello Мир". У меня есть следующие в /WeeklyPickems/src/main/webapp/WEB-INF/jsp/hello.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<html> 
    <head> 
     <title>Title</title> 
    </head> 
    <body> 
     <h1>${greeting}</h1> 
    </body> 
</html> 

И веб-страница отображает слово «$ {приветственное}» на этой странице. Что мне нужно, чтобы изменить, какой файл на самом деле отображать «Hello World» в теге H1? Спасибо.

+0

Вы видите загрузку контроллера при запуске? – Koitoer

+0

Мне нужно было добавить $ JAVA_HOME в качестве переменной окружения. Но теперь я получаю обновленный ответ. –

ответ

0

Ваше имя сервлета не связано с вашим контекстом сервлета.

Я считаю, что в этом случае, исходя из вашего вопроса, ваш контекст - это /.

Первое, что нужно сделать, это изменить ваш url-mapping от:

<servlet-mapping> 
    <servlet-name>WeeklyPickemsServlet</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

в

<servlet-mapping> 
    <servlet-name>WeeklyPickemsServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

После этого вызова http://localhost:8080/greeting, как описано в контроллере.

+0

Когда я делаю это изменение, 'http: // localhost: 8080' даже не загружается (а также'/greeting', '/ greeting.html','/WeeklyPickems/greeting' или '/WeeklyPickems/greeting.html ') –

+0

У вас есть' 'тег mappend в вашем' web.xml'? – josivan

0

Я установил его, изменив добавление isELIgnored="false" на номер page. Это результирующий файл jsp:

<%@ page isELIgnored="false" contentType="text/html;charset=UTF-8" language="java" %> 
<html> 
    <head> 
     <title>Title</title> 
    </head> 
    <body> 
     <h1>${greeting}</h1> 
    </body> 
</html> 
Смежные вопросы