Servlet开发(二)Response对象常见应用

本文是关于Servlet开发的学习笔记,主要讲解了如何使用Response对象向客户端输出中文数据,包括OutputStream和PrintWriter两种方式。接着讨论了文件下载的实现,包括普通文件和中文文件名的处理。此外,还介绍了如何利用Response生成随机图片,如验证码,并探讨了控制浏览器定时刷新的两种场景。
摘要由CSDN通过智能技术生成

(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文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值