我在netbeans项目上正常工作。我将post参数从html表单发送到servlet,然后使用request.getParameter捕获它们......一切正常。但几个小时前,我不知道netbeans发生了什么,因为我创建的所有新servlet,请求的post参数编码都不好。我的意思是,如果我发送“tílde”或“ñ”,它将被收到“tÃlde”或“Ô。旧的servlet仍然正常工作,很好地接收了post参数。
使用GET参数工作正常,但POST参数始终与新servlet相同。旧的servlet工作得很好。
我测试了使用php接收参数并且它们被正确格式化,所以我放弃了作为jsp编码的可能性。
我认为可能是netbeans错误,但我真的不知道。
这里有一些代码和图片:
servlet
public class TestParameters extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
System.out.println("> Ñ,ñ, tílde. Parámetros: " + request.getParameter("name"));
}
JSP:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form method="post" action="/TestParameters">
<input type="text" name="name">
<button type="submit">Enviar</button>
</form>
</body>
</html>
Html输入:
使用POSTparámeters的NetBeans控制台:
带有GETparámeters的Netbeans控制台:
使用php接收,效果很好:
echo $_POST['name'];
Php html echo:
答案 0 :(得分:0)
最后我解决了我的问题。我已经实现了一个编码所有请求的过滤器。但这仅适用于我需要的POST参数。那是因为对于POST参数,Tomcat的默认编码是iso-8859-1而我忽略了这一点。对于GET参数,方式是