我在HTML页面中有一个带有textarea的表单,我正在尝试通过POST将其内容发送到servlet。问题是,如果我在textarea中编写类似unenclosed <enclosed>
的内容,那么当我调用request.getParameter("textareaId")
(其中请求是 HttpServletRequest 对象)时servlet的 service()方法(扩展 HttpServlet ),我只得到“未关闭”作为参数值。有没有办法获得textarea的完整内容?
Html代码:
<form action="MyServlet" method="post">
<textarea name="MyTextarea" rows="5" cols="50"></textarea>
</form>
Servlet代码:
public class MyServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String contents = request.getParameter("MyTextarea");
System.out.println(contents);
}
}
谢谢!
编辑:我通过在将JavaScript函数发送到servlet之前转义textarea内容来解决它。答案 0 :(得分:1)
这个index.jsp
适用于Tomcat 6.0.35。我看到<
和>
已打印到控制台。
<%
String contents = request.getParameter("MyTextarea");
System.out.println(contents);
%>
<form method="post">
<textarea name="MyTextarea" rows="5" cols="50"></textarea>
<input type=submit>
</form>
您使用的是什么servlet容器?
默认情况下,容器是否启用了任何参数转义?
什么是默认字符编码(不能真正看出问题是<
而>
是常规ASCII)?
答案 1 :(得分:0)
在<textarea name="MyTextarea">...</textarea>
内,应使用<
和>
。
这可以通过apache common的 EscapeUtils.escapeHTML (我认为)来完成。这也适用于<input value="...">
或<a href="... .jsp?a=1&b=2">
:& < > " '
。