response 两种在网页显示的方式:
//通过 response 获得输出流 OutputStream out = response.getOutputStream(); // 向ie发送数据 out.write("hello".getBytes()); // tomcat 会在请求结束时,检查response的流是否关闭 如没关会帮我们关闭 // getWriter 和 getOutputStream 不能同时调用 // PrintWriter writer = response.getWriter(); // writer.write("hello");
// response 实现请求重定向
// 发送 302 状态码 + location头
// response.setStatus(302);
// response.setHeader("location","/day06/index.jsp");
// response 对请求重定向进行了功能的封装
response.sendRedirect("/day06/index.jsp");// 相当于 302 + location
解决response输出中文乱码问题
// 指定response的编码 //response.setCharacterEncoding("utf-8"); // 通知浏览器用什么码表来解码 //response.setHeader("content-type", "text/html;charset=utf-8"); response.setContentType("text/html;charset=utf-8");// 解决response输出中文乱码问题 最终方案 PrintWriter writer = response.getWriter(); writer.write("中国");
解决request中文乱码问题(在doGet方法下) // 设置request编码 request.setCharacterEncoding("utf-8"); String username = request.getParameter("username"); System.out.println("username=" + username); byte[] bytes = username.getBytes("iso-8859-1"); username = new String(bytes, "utf-8"); System.out.println("username=" + username);
解决request中文乱码问题(在doPost方法下) // 设置request编码 request.setCharacterEncoding("utf-8");// 只对post方式下提交的参数有效 String username = request.getParameter("username"); System.out.println("username=" + username);
文件下载 response.setContentType("text/html;charset=utf-8");// 设置消息体的编码 // 通过 http 协议 发送的http响应消息头 不能出现中文 中文必须要经过url编码 String filename = URLEncoder.encode("美女.jpg", "utf-8"); // 通知浏览器以下载的方式读取资源 response.setHeader("content-disposition", "attachment;filename="+filename); // 读取图片数据 发给ie浏览器 String webPath = "/download/美女.jpg";// 相当于当前web应用的path ServletContext servletContext = super.getServletContext(); InputStream in = servletContext.getResourceAsStream(webPath); OutputStream out = response.getOutputStream(); int len; byte[] buffer = new byte[1024]; while((len=in.read(buffer))!=-1) out.write(buffer, 0, len); url 编码 * url地址中不允许出现中文,需要传输要进行url编码 * 规则 将字符进行编码 编码成字节 将每个字节都转为16进制,前面加%
String str = "中国"; String result = URLEncoder.encode(str, "utf-8"); System.out.println(result); byte[] bytes = str.getBytes("utf-8"); for(byte b : bytes) System.out.println(b);
防盗链