1

我是 JSP 新手并生成带有文本区域的表单。是否有一个库可以将文本从/到 HTML 的 FORM TEXTAREA 转换为实体,以便正确格式化/解析 URL?

例如:

文本区域(名为 ta):

simple test with ampersand & in textarea

网址:

http://.../myapp.jsp?ta=simple+test+with+ampersand+%26+in+textarea
4

1 回答 1

4

如果您使用的是 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 标记的更多信息。

于 2010-02-28T18:03:41.647 回答