Если вы используете скриптлеты, вы можете использовать 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, импортировать его, а затем использовать. Подробнее о том, как использовать этот тег JSTL, можно узнать в developerworks .