JSTL问题(春季3)

时间:2011-12-30 22:56:42

标签: spring jstl

我正在努力让我的春季应用程序工作,跟随一个发布早期版本的例子的人。我的例子一直存在很多问题,所以我没有发布链接,以免引起别人误入歧途。通过解决问题,我能够达到事情正常进行的程度。有些。我无法弄清楚以下两件事:

  1. $(message)不打印消息,该消息是String类型的bean。
  2. <c:out value="${message}"打印邮件,但前提是我将<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>添加到jsp中。我认为将jtslview类添加到解析器就足够了。不是。这有什么不对?
  3. 设置

      Eclipse IDE for Java EE Developers    1.4.1.20110909-1818 epp.package.jee 
      Tomcat 7
      Spring 3 distribution (all jars in /lib)
      lib/jstl-1.2.jar
    

    问题jsp

    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ 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>Message View</title> 
    </head>
    <body>
        $(message)
        <br>
        message=$(message);
        <br>
        message=<c:out value="${message}" />
    </body>
    </html>
    

    这将打印以下内容。消息“bean”显然已传递到页面。

    $(message) 
    message=$(message); 
    message=Hello World from Spring MVC! 
    

    的web.xml     

    <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_2_5.xsd"    
            id="WebApp_ID" 
            version="2.5">    
    
            <display-name>Spring3MVC</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> 
    

    弹簧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="com.helloworldexample.controllers" />     
    
        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
            <property name="prefix" value="/WEB-INF/jsp/" />
            <property name="suffix" value=".jsp" />
        </bean>
    </beans>
    

    控制器(以防万一)

    package com.helloworldexample.controllers;
    
    import org.springframework.stereotype.Controller; 
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    
    @Controller
    public class MesssageController {
    
    
    @RequestMapping("/hello")
    public ModelAndView handleHello() {
        String message="Hello World from Spring MVC!";
    
        return new ModelAndView("messageView", "message", message);
    
    }
    
    @RequestMapping("/welcome.html")
    public ModelAndView handleWelcome() {
        String message="Welcome in Spring MVC!";
    
        return new ModelAndView("messageView", "message", message);
    
    }
    
    }
    

2 个答案:

答案 0 :(得分:3)

JSP表达式语言的语法是${some expression}。不是$(some expression)

每次使用JSP标记时,都必须在JSP中声明其标记库 。将Spring配置为使用JstlView的事实与使用<c>标记的可能性无关。它只是将Spring配置为在分派到视图之前执行适当的操作。

<c:out>应始终用于呈现字符串,除非您完全确定该字符串不包含任何必须进行HTML转义的字符。不使用它会打开攻击的大门,用户可以提交包含</html>的文本或一段会损害您网站的JavaScript代码。

阅读有关servlet和JSP的官方教程:http://docs.oracle.com/javaee/5/tutorial/doc/bnadp.html

答案 1 :(得分:1)

也许你需要更改你的import tagslib

  <%@ taglib prefix="c" uri="htttp://java.sun.com/jsp/jstl/core" %>
  <%@ taglib prefix="fmt" uri="htttp://java.sun.com/jsp/jstl/fmt" %>

  <%@ taglib prefix="c" uri="htttp://java.sun.com/jstl/core" %>
  <%@ taglib prefix="fmt" uri="htttp://java.sun.com/jstl/fmt" %>