Я не вижу $ {message} в моем первом весеннем примере mvc - PullRequest
0 голосов
/ 08 февраля 2012

Я прочитал это учебное пособие по написанию моего приложения hello world с помощью Spring mvc.Но я не вижу $ {message} в hello.jsp, когда нажимаю ссылку «Say Hello» в index.jsp.Мой код фактически совпадает с кодом в учебнике.Я новичок весной, и я не могу найти, где я допустил ошибку, пожалуйста, помогите мне.

HelloWorldController.java

package controller;

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

@Controller
public class HelloWorldController {

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

        String message = "Hello World, Spring 3.0!";
        return new ModelAndView("hello", "message", message);
    }
}

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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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>springmvcben</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>
</web-app>

spring-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-3.0.xsd

http://www.springframework.org/schema/context

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

    <context:component-scan base-package="controller" />
    <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/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

hello.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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
This is message:
 ${message}
</body>
</html>

index.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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<a href="hello.jsp">Say Hello</a>
</body>
</html>

Эта структура моего проекта: enter image description here

И это мой вывод

?ub 09, 2012 1:37:21 AM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;c:\program files\common files\microsoft shared\windows live;c:\program files\nvidia corporation\physx\common;C:\Windows\system32;C:\Windows;C:\Windows\system32\wbem;C:\Windows\system32\windowspowershell\v1.0\;c:\program files\microsoft sql server\100\tools\binn\;c:\program files\microsoft sql server\100\dts\binn\;c:\program files\windows live\shared;c:\program files\ibm\gsk8\lib;C:\db2\BIN;C:\db2\FUNCTION;C:\db2\SAMPLES\REPL;C:\Program Files\QuickTime\QTSystem\;C:\Users\Ferid\Desktop\eclipse-jee-indigo-SR1-win32\eclipse;;. ?ub 09, 2012 1:37:22 AM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:springmvcben' did not find a matching property. ?ub 09, 2012 1:37:22 AM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["http-bio-8080"] ?ub 09, 2012 1:37:22 AM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] ?ub 09, 2012 1:37:22 AM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 520 ms ?ub 09, 2012 1:37:22 AM org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina ?ub 09, 2012 1:37:22 AM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.25 ?ub 09, 2012 1:37:26 AM org.apache.catalina.core.StandardContext checkUnusualURLPattern INFO: Suspicious url pattern: "*.*" in context [/springmvcben] - see section SRV.11.2 of the Servlet specification log4j:WARN No appenders could be found for logger (org.springframework.web.servlet.DispatcherServlet). log4j:WARN Please initialize the log4j system properly. ?ub 09, 2012 1:37:26 AM org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring FrameworkServlet 'spring' ?ub 09, 2012 1:37:27 AM org.apache.catalina.startup.HostConfig deployWAR INFO: Deploying web application archive C:\tomcat\apache-tomcat-7.0.25-windows-x86\apache-tomcat-7.0.25\webapps\MerhabaDunya.war ?ub 09, 2012 1:37:27 AM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory C:\tomcat\apache-tomcat-7.0.25-windows-x86\apache-tomcat-7.0.25\webapps\docs ?ub 09, 2012 1:37:27 AM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory C:\tomcat\apache-tomcat-7.0.25-windows-x86\apache-tomcat-7.0.25\webapps\examples ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/sql is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/xml is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined ?ub 09, 2012 1:37:28 AM org.apache.catalina.core.ApplicationContext log INFO: ContextListener: contextInitialized() ?ub 09, 2012 1:37:28 AM org.apache.catalina.core.ApplicationContext log INFO: SessionListener: contextInitialized() ?ub 09, 2012 1:37:28 AM org.apache.catalina.core.ApplicationContext log INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@1be0de') ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory C:\tomcat\apache-tomcat-7.0.25-windows-x86\apache-tomcat-7.0.25\webapps\host-manager ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory C:\tomcat\apache-tomcat-7.0.25-windows-x86\apache-tomcat-7.0.25\webapps\manager ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory C:\tomcat\apache-tomcat-7.0.25-windows-x86\apache-tomcat-7.0.25\webapps\ROOT ?ub 09, 2012 1:37:28 AM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] ?ub 09, 2012 1:37:28 AM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] ?ub 09, 2012 1:37:28 AM org.apache.catalina.startup.Catalina start INFO: Server startup in 6007 ms

Пожалуйста, помогите мне решить эту проблему.

enter image description here

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Возможно, я ошибаюсь, но отображение DispatcherServlet указывает на другое место - оно фактически отображается на * .html, а вы запрашиваете hello.jsp - это пропускает сервлет диспетчера и переходит прямо на страницу JSP. Кроме того, ваш JstlView настроен на выборку JSP из папки WEB-INF.

Попробуйте переместить hello.jsp в папку WEB-INF и затем вместо этого вызвать /hello.html.

1 голос
/ 09 февраля 2012

Я не могу продублировать проблему. Что нужно проверить:

  • Этот красный вывод журнала - что он говорит?
  • Поверните уровни журнала до DEBUG и перезапустите Tomcat - какие-нибудь исключения?
  • Убедитесь, что у вас есть все необходимые библиотеки.
  • Убедитесь, что в вашем каталоге $ TOMCAT_HOME / lib есть реализация JSTL.

Для последнего вы можете использовать JSTL 1.2, загруженный с Glassfish . Tomcat / Spring не запустится, если эти библиотеки отсутствуют в каталоге lib Tomcat из-за конфигурации Spring.

FWIW, я использую Maven и определяю одну зависимость Spring (и Log4J):

<dependencies>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.0.1.RELEASE</version>
  </dependency>

  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.16</version>
  </dependency>
</dependencies>

Это создает следующее дерево зависимостей:

[INFO] +- org.springframework:spring-webmvc:jar:3.0.1.RELEASE:compile
[INFO] |  +- org.springframework:spring-asm:jar:3.0.1.RELEASE:compile
[INFO] |  +- org.springframework:spring-beans:jar:3.0.1.RELEASE:compile
[INFO] |  +- org.springframework:spring-context:jar:3.0.1.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-aop:jar:3.0.1.RELEASE:compile
[INFO] |  +- org.springframework:spring-core:jar:3.0.1.RELEASE:compile
[INFO] |  |  \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] |  +- org.springframework:spring-expression:jar:3.0.1.RELEASE:compile
[INFO] |  \- org.springframework:spring-web:jar:3.0.1.RELEASE:compile
[INFO] |     \- aopalliance:aopalliance:jar:1.0:compile
[INFO] \- log4j:log4j:jar:1.2.16:compile

Вы должны убедиться, что у вас развернуты все эти файлы (не только на пути сборки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...