针对web项目
在web.xml中配置
<context-param>
<param-name>encode</param-name>
<param-value>utf-8</param-value>
</context-param>
在servlet中调用
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String encode = this.getServletContext().getInitParameter("encode");
resp.setContentType("text/html;charset="+encode);
req.setCharacterEncoding(encode);
}
resp应答编码可通过上面两行进行编码
req请求:编码需要先编写为iso-8859-1 在通过String(字节数组,编码格式) 转换
String username = req.getParameter("username");
byte[] bt = username.getBytes("iso-8859-1");
username = new String(bt,encode);
这样就不会出现乱码情况
在转换为需要的编码格式,因为编码get方式提交的信息参数 2K url?name=value 形式传输 (空格用+代替) 浏览器会自动缓存,如果不需要缓存,需要代码实现
resp.setHeader("cache", "no-cache");应该是这样
post请求提交的参数信息是通过request body 大小不受限制
小插曲:好久没用自己电脑,创建项目发现MyEclipse提示信息,看了之后是因为jdk版本太高,修改jdk版本为myeclipse自带的就可以
Multiple markers at this line
- The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced
from required .class files
- The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced
from required .class files