我是 JSP 新手并生成带有文本区域的表单。是否有一个库可以将文本从/到 HTML 的 FORM TEXTAREA 转换为实体,以便正确格式化/解析 URL?
例如:
文本区域(名为 ta):
simple test with ampersand & in textarea
网址:
http://.../myapp.jsp?ta=simple+test+with+ampersand+%26+in+textarea
我是 JSP 新手并生成带有文本区域的表单。是否有一个库可以将文本从/到 HTML 的 FORM TEXTAREA 转换为实体,以便正确格式化/解析 URL?
例如:
文本区域(名为 ta):
simple test with ampersand & in textarea
网址:
http://.../myapp.jsp?ta=simple+test+with+ampersand+%26+in+textarea
如果您使用的是 scriptlet,则可以使用URLEncoder.encode(String string, String encoding)对字符串进行安全编码,以便在 URL 中使用。它会抛出 UnsupportedEncodingException,因此请确保您抓住了它。这是一个示例 JSP,它对您的字符串进行编码并将其显示为文档的正文。
<%@ page language="java"
import="java.net.URLEncoder"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String encoded = null;
try {
encoded = URLEncoder.encode("simple test with ampersand & in textarea", "UTF-8");
} catch (Exception e) {
}
%>
<html>
<head>
<title>MyTitle</title>
</head>
<body>
<%=encoded%>
</body>
</html>
使用 JSTL 会是更好的做法,在这种情况下,特别是<c:url>
会自动对其内容进行编码的标签。例如,要获取您在问题中提到的编码字符串 URL,您可以这样做:
<c:url var="myEncodedURL" value="http://.../myapp.jsp">
<c:param name="ta" value="simple test with ampersand & in textarea"/>
</c:url>
然后您可以使用表达式访问它${myEncodedURL}
。如果您目前没有使用 JSTL,那么就会涉及到一个学习曲线——您需要设置 taglib,将其导入然后使用它。您可以在developerworks上查看有关如何使用此 JSTL 标记的更多信息。