如何在jsp文件中打印java String

时间:2015-10-17 05:25:19

标签: jsp jstl

我正在尝试通过我的jsp文件打印字符串变量,这是我的代码:

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.lang.*;"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


<!DOCTYPE html>

<html>
<head>
<title>why are you not working</title>
<meta charset="utf-8" />
</head>

<body>
    <%
        String test = "<b><u>bold and underlined</u></b>";
     %>

    <c:set var="test1" value="<u>underlined</u>" />
    <c:set var="test2" value="${test}" />

    <c:out value="${test}" escapeXml="false" />
    <c:out value="${test1}" escapeXml="false" />
    <c:out value="${test2}" escapeXml="false" />

</body>
</html>

输出:

enter image description here

有没有办法使用JSTL打印 test test2 ?正如您在上面的代码中所看到的,我已经设法打印变量test1但页面上没有出现变量test或test2。

PS:为什么我要使用JSTL?因为它提供了一种评估html标签而不是逃避它们的方法

2 个答案:

答案 0 :(得分:8)

是的。您可以使用pageContext对象在test范围内设置变量page

<body>
    <%
        String test = "<b><u>bold and underlined</u></b>";
        pageContext.setAttribute("test", test);
     %>

    <c:set var="test1" value="<u>underlined</u>" />
    <c:set var="test2" value="${test}" />

    <c:out value="${test}" escapeXml="false" />
    <c:out value="${test1}" escapeXml="false" />
    <c:out value="${test2}" escapeXml="false" />

</body>


输出
  

粗体和带下划线的下划线粗体和带下划线的

JSTL完全适用范围变量,范围可以是requestsessionpage。默认范围是page。 而scriplet是原始java,它插入到JSP页面的servlet的服务方法中。 因此,如果要在JSTL中访问任何scriplet变量,则需要在范围内进行设置。

另见

答案 1 :(得分:2)

JSP EL&#34;变量&#34;不是局部变量。当你写

${test}

JSP EL在页面范围,请求范围,会话范围或应用程序范围中查找名为&#34; test&#34;的属性

因此,它基本上等同于以下Java代码:

<%= out.print(pageContext.findAttribute("test")); %>

当您尝试使用JSP EL时,您无法访问本地变量。并且没有任何意义,因为你无论如何都不应该在JSP中拥有Java代码(即scriptlet)。用Java编写的控制器应该在请求中存储属性,JSP EL应该显示存储在这些属性中的值。