jsp中“<%= TITLE%>”和“$ {TITLE}”之间的区别是什么?

时间:2015-10-19 01:24:42

标签: java jsp

在我的JSP页面中,我使用<%=TITLE %>来显示页面标题,有时它是正常的。但有时页面显示无法识别代码<%=TITLE %>。 所以我将代码更改为${TITLE},并且没关系。在jsp中,<%=TITLE %>${TITLE}之间有什么不同?

这是我的页面代码:

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
        + request.getServerName() + ":" + request.getServerPort()
        + path + "/"; 
%>

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<base href="<%=basePath%>">
<title><%=TITLE %></title>
<meta name="description" content="${DESCRIPTION}">
<meta name="keyword" content="${KEYWORD}">
</head>

我在控制器中定义它们:

    ModelAndView mv = this.getModelAndView();
     mv.addObject("DESCRIPTION","MYDESCRIPTION"));
        mv.addObject("KEYWORD","MYKEYWORD");
        mv.addObject("TITLE","MYTITLE");
       return mv;

1 个答案:

答案 0 :(得分:2)

  

根据您的问题的上下文回答

     

“&lt;%= TITLE%&gt;之间有什么不同? “和”$ {TITLE}“在jsp?

由于大多数时候我们使用out.print()方法在JSP页面中打印动态数据,因此有一个快捷方式可以通过JSP表达式来完成。 JSP表达式以&lt;%=开头,以%&gt;结尾。

<% out.print(TITLE); %> 

上面的语句称为scriptlet,可以使用JSP Expression编写为

<%= TITLE %>

我们可以使用scriptlet和JSP表达式在JSP中使用java代码检索属性和参数,并将其用于查看目的。但对于网页设计师来说,Java代码很难理解,这就是为什么JSP Specs 2.0引入了表达式语言(EL),通过它我们可以轻松地使用像标签这样的HTML来获取属性和参数。

表达式语言语法是

 ${TITLE} 

我们可以使用EL隐式对象和EL运算符来检索不同范围的属性,并在JSP页面中使用它们。

更新

  

根据您的控制器相关查询

我说是这样写的

<title><%=request.getAttribute("TITLE"); %></title>

因为它存储为请求属性。

  

注意

     

自从JSP 2.0发布近十年(!)以来,不鼓励使用Scriptlet。所以请使用表达语言(EL)。