javaEE Servlet规范中文乱码问题

来源:互联网 发布:如何自学sql server 编辑:程序博客网 时间:2024/05/01 21:25

一、Servlet规范中核心接口类图
二、HttpServletResponse
1、以字节流输出中文数据
data.getBytes():默认编码输出字节,浏览器也是采用默认编码解码,所以没有乱码问题
data.getBytes("UTF-8"):通知客户端,输出数据时采用的编码
方式一:用户更改浏览器的查看编码(不建议使用)
方式二:response.setHeader("Content-Type","text/html;charset=UTF-8");
方式三:response.setContentType("text/html;charset=UTF-8");效果与方式二一样的
方式四:sos.write("".getBytes("UTF-8"));
2、以字符流输出中文数据
PrintWriter out = response.getWriter();
  out.write(data);//ISO-8859-1 默认码表查ISO-8859-1(Servlet规范规定的)

response.setCharacterEncoding(String charsetName):更改默认的编码
不要忘记通知客户端解码码表
方式一:
response.setCharacterEncoding("UTF-8");
response.setHead("Context-type","text/html;charset=UTF-8");
方式二:(等同于方式一的两条语句)
response.setContentType("text/html;charset=UTF-8");
  
三、response案例
1、Servlet作为默认主页

   ResponseDemo7
   /servlet/ResponseDemo7
 
 
   servlet/ResponseDemo7
 
四、response的以下细节
1、response中的字节流和字符流互斥。
2、response对象内部是有缓存的,所有的输出代码都是把内容写到了response对象中。
容器从response对象中取出写的数据,然后组织成HTTP协议响应的格式传递给客户端。
3、容器会检测response的输出流有没有关闭,如果没有关闭,替你关闭

Tips:反射做框架用。

五、HttpServletRequest
六、request常用的方法
七、获取请求参数
 7.1获取一个参数
 7.2获取重名的请求参数
 7.3使用BeanUtils框架封装数据到JavaBean中
 7.4常用form表单数据的获取
 表单数据总结:
 intputtype类型是radio或者是checkbox,如果用户一个都没有选,那么就不会向服务器传递数据。
 如果用户选择了,则把选中的value的值传递给服务器。
 checkbox作为一个开关(比如婚否):如果用户没有选,什么都不传;如果用户选择了,看有没有value属性,有value,传递给服务器value的值,没有传递是on
Tips:用户输入的请求参数乱码问题
客户端提交的请求参数:客户端当前使用什么编码,就以什么编码给你的程序传递数据。
客户用的页面用的编码,可以通过meta去指定。(建议使用UTF-8)

程序中打印的乱码问题:程序不知道你传递的数据编码方式。
request.setCharacterEncoding("UTF-8")通知服务器程序,客户端提交的数据查询的是UTF-8码表。只能解决POST请求方式提交的数据


get提交方式,查ISO-8859-1
解决办法:得到字符的原始字节序列,用UTF-8重新编码。newString(name.getBytes("ISO-8859-1","UTF-8"));
八、ServletRequest域对象
九、请求转发和重定向的区别
十、RequestDispatcher:包含

原创粉丝点击