request.setCharacterEncoding(reqEnc);
这个方法要在获取参数之前调用才会有效,也就是说,如果在getParameter()或者 getReader ()之后调用,会失效。
jsp的动作指令<jsp: include page="relative.jsp">是在请求运行中执行,把编译之后生成的servlet代码嵌入原页面中。
每一个request请求访问一个jsp页面的时候,如果不手动设置request请求的编码字符,那么jsp容器都会自动设置默认的编码字符。
比如说当前服务器的默认编码为GBK,有一个页面common.jsp如下,想把对这个页面的请求参数转为UTF-8编码
<%@ page contentType="text/html;charset=GBK" errorPage="/common/errorPage.jsp" %><%@
page trimDirectiveWhitespaces="true" %>
<%@include file="/common/setCharset.jsp"%>
<jsp:include page="/common/config.jsp" /><%!
static boolean validate(HttpServletRequest request) {
if (!request.getMethod().equalsIgnoreCase("POST")) {
return false;//false; //TODO 正式使用时放开
}
return true;
}
%>
在/common/setCharset.jsp里面设置了 request.setCharacterEncoding("UTF-8");此时访问common.jsp的这个request请求的编码方式变成了UTF-8,
当执行到<jsp:include page="/common/config.jsp" />的时候,因为config.jsp里面没有手动设置编码方式,也没有进行getParameter()或者 getReader ()操作,所以,jsp容器又会把访问common.jsp的这个request请求在动态访问加载config.jsp生成的servlet代码之后,编码方式变成了GBK。
解决方案:
(1)在config.jsp文件的开头,手动设置请求编码为UTF-8
(2)在<%@include file="/common/setCharset.jsp"%>这句后面加一些getParameter()方法,让setCharacterEncoding()方法生效。
另外:
我们来总结一下两种include 两种用法的区别,主要有两个方面的不同:
一、执行时间上:
<%@ include file=”relativeURI”%> 是在翻译阶段执行
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行。
二、引入内容的不同:
<%@ include file=”relativeURI”%> 引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起。
<jsp:include page=”relativeURI” flush=”true” /> 引入执行页面或servlet所生成的应答文本。
一、执行时间上:
<%@ include file=”relativeURI”%> 是在翻译阶段执行
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行。
二、引入内容的不同:
<%@ include file=”relativeURI”%> 引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起。
<jsp:include page=”relativeURI” flush=”true” /> 引入执行页面或servlet所生成的应答文本。
相关推荐
JAVA过滤器filter request.setCharacterEncoding仅对POST提交起作用,对GET提交还是会出现乱码问题
首先,说说JSP/Servlet中的几个编码...charset=UTF-8"、request.setCharacterEncoding("UTF- 8")和response.setCharacterEncoding("UTF-8"),其中前两个只能用于JSP中,而后两个可以用于JSP和 Servlet中。 。。。。。
首先要知道这里的request为HttpServletRequest,如果我们打印request的话,发现打印出的类型为 RequestFacade(package org.apache.catalina.connector; public class RequestFacade implements HttpServletRequest )...
Django 中request.get和request.post的区别 POST和GET差异: POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。另外,还有PUT和DELETE方法。 POST和GET都...
request.setCharacterEncoding("gb18030"); HttpServletResponse response=(HttpServletResponse)res; response.setCharacterEncoding("gb18030"); chain.doFilter(req, res); } 2、Servlet代码:[只要doPost...
request.getParameter() 和request.getAttribute() 区别
request.setCharacterEncoding("GB18030"); //调用业务逻辑 UserDAO userDAO = new UserDAO(); // 返回的list值 ArrayList list=userDAO.queryAll(); //重点。。。HttpSession的用处??? HttpSession...
下午终于实现了jsp连接MySQL执行插入操作的功能。在index.jsp页面输入数据,提交到mysql——insert.jsp页面进行插入... request.setCharacterEncoding(“UTF-8”); response.setCharacterEncoding(“UTF-8”); respo
<% request.setCharacterEncoding("UTF-8");%> 您的姓名是:<%=request.getParameter("name")%> 您的密码是:<%=request.getParameter("pwd")%> 你的职业是:<%=request.getParameter("career")%> ...
charset=GB18030″、request.setCharacterEncoding(“GB18030”)和 response.setCharacterEncoding(“GB18030”),其中前两个只能用于JSP中,而后两个可以用于JSP和Servlet 中。 这里,我们只谈一
request.js request.js request.js request.js request.js request.js request.js
Request、Request.Form和Request.QueryString的区别
// request.setCharacterEncoding("utf-8"); // //接收method属性的值 // String methodName = request.getParameter("method"); // // //根据method属性的值调用相应的方法 // if("login".equals(methodName)){ // ...
request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); String canshu=request.getParameter("canshu"); YonghuService yhs=new YonghuServiceImpl(); if(canshu.equals(...
Request.QueryString 获取的中文变乱码了,解决方法如下 1、html中,可以用js的 encodeURI() 方法将要传的中文处理,例如 encodeURI("I am 乱码") ,处理之后,字符串中的中文 “乱码” 两字将会被被十六进制的转义...
jsp指令:... request.setCharacterEncoding("utf-8"); 获取页面数据: String name=request.getParameter(""); String[] names=request.getParameterValues(""); 转发,可以保留值:
2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 3、javascript脚本里用encodeURI(str)。 4、适当的时候,在jsp里用java.net.URLDecoder.decode(request.getParameter("str"),"UTF-8")。 5、最容易忽略的...
request.setCharacterEncoding(“UTF-8”);%>这个方法来保证中文的正确输出,下面举个例子吧, 我们要接住表单的值或者把数据库数据打印出来的之前,先把<%request.setCharacterEncoding(“UTF-8”);%>放在...
request.setCharacterEncoding("gbk"); if(request.getAttribute("err")!=null) { %> <h2><%=request.getAttribute("err")%> } %> <form method="post" action="login-conf.jsp"> 用户名:...
request.setCharacterEncoding(encoding); response.setContentType("text/html; charset="+encoding); } chain.doFilter(request, response); } public void destroy() { this.encoding = null; this....