如何在 jsp 文件中打印 java 字符串
How to print a java String in a jsp file
我正在尝试通过我的 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>
输出:
有没有办法使用 JSTL 打印 test 或 test2 ?正如您在上面的代码中所看到的,我已经设法打印了变量 test1,但是变量 test 或 test2 的页面上没有出现任何内容。
PS: 为什么我要使用 JSTL?因为它提供了一种评估 html 标签而不是转义它们的方法
JSP EL "variables" 不是局部变量。当你写
${test}
JSP EL 在页面范围、请求范围或会话范围中查找名为 "test" 的 属性 ,或在应用范围内。
所以,它基本上等同于下面的Java代码:
<%= out.print(pageContext.findAttribute("test")); %>
您无法像您尝试使用 JSP EL 那样访问局部变量。并且没有理由想要这样做,因为无论如何您都不应该在 JSP 中包含 Java 代码(即 scriptlet)。用 Java 编写的控制器应该在请求中存储属性,JSP EL 应该显示存储在这些属性中的值。
是的 is.You 可以使用 pageContext 对象在 page
范围内设置变量 test
。
<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>
输出
bold and underlined underlined bold and underlined
JSTL
完全适用于范围变量,其中范围可以是 request
、session
或 page
。默认范围是 page
。
虽然 scriplet 是原始的 java,它被插入到 JSP 页面的 servlet 的服务方法中。
所以如果你想访问JSTL中的任何scriplet变量,你需要在范围内设置。
另请参阅
我正在尝试通过我的 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>
输出:
有没有办法使用 JSTL 打印 test 或 test2 ?正如您在上面的代码中所看到的,我已经设法打印了变量 test1,但是变量 test 或 test2 的页面上没有出现任何内容。
PS: 为什么我要使用 JSTL?因为它提供了一种评估 html 标签而不是转义它们的方法
JSP EL "variables" 不是局部变量。当你写
${test}
JSP EL 在页面范围、请求范围或会话范围中查找名为 "test" 的 属性 ,或在应用范围内。
所以,它基本上等同于下面的Java代码:
<%= out.print(pageContext.findAttribute("test")); %>
您无法像您尝试使用 JSP EL 那样访问局部变量。并且没有理由想要这样做,因为无论如何您都不应该在 JSP 中包含 Java 代码(即 scriptlet)。用 Java 编写的控制器应该在请求中存储属性,JSP EL 应该显示存储在这些属性中的值。
是的 is.You 可以使用 pageContext 对象在 page
范围内设置变量 test
。
<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>
输出
bold and underlined underlined bold and underlined
JSTL
完全适用于范围变量,其中范围可以是 request
、session
或 page
。默认范围是 page
。
虽然 scriplet 是原始的 java,它被插入到 JSP 页面的 servlet 的服务方法中。
所以如果你想访问JSTL中的任何scriplet变量,你需要在范围内设置。