(WEB学习笔记 一)
1、向客户端输出中文数据
(如何解决向客户端输出中文数据乱码问题,分别以OutputStream和PrintWriter输出
)
1)以OutputStream输出
有两种方式解决向客户端输出中文数据乱码问题:如代码中 test1(); 和 test2(); 方法所示
public class ResponseDemo1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
test2(response);
}
//方式一: 解决乱码问题,保证输出编码和浏览器的编码保持一致
public void test1(HttpServletResponse response) throws IOException{
String data ="中国";
OutputStream out = response.getOutputStream();
// 程序以码表输出 ,一定要控制输出的格式相同.控制浏览器输出同样的格式
response.setHeader("Content-type", "text/html;charset=gbk");
// out.write(data.getBytes()); //可能这样输出的就是乱码
//out.write(data.getBytes("UTF-8")); //乱码
//out.write(data.getBytes("GB2312"));
out.write(data.getBytes("GBK"));
}
//方式二:模拟一个http相应头
public void test2(HttpServletResponse response) throws IOException{
String data ="中国2";
//模拟一个html:<meta>标签 (类似于index.jsp里面的)模拟http响应头
OutputStream out = response.getOutputStream();
out.write("<meta http-equiv = 'content-type' content='text/html;charset = gbk'>".getBytes());
out.write(data.getBytes("gbk"));
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
2)以PrintWriter输出
三种方式解决:如下代码,使用时采用其中一种方式即可
private void test1(HttpServletResponse response) throws IOException {
String data = "中国";
// 设置 Response相应的码表 以控制Response以什么码表向浏览器输出 默认IOS-8859-1 编码集
// 默认输出的编码集
// response.setHeader("Content-type", "text/html;charset=ISO-8859-1");
// 第一种方式 改变默认的响应头 把默认的编码集改成我们所需要的
// response.setHeader("Content-type", "text/html;charset = GB2312");
// 第二种方式设置CharacterEncoding编码集
//response.setCharacterEncoding("GB2312");
//第三种方式 设置contentType等价于 第一种方式和第二种方式的累加
response.setContentType("text/html;charset = GB2312");
PrintWriter out = response.getWriter();
out.write(data); //直接这样,乱码
}
2、文件下载(通过设置相应头信息即可完成下载功能)
首先在新建的Web工程的webRoot下新建download文