java学习笔记—校验码的实现(15)

校验码的出现主要的任务是解决表单的重复提交问题。

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
       // 0. 通知浏览器不能缓存图片数据
       response.setHeader("expires", "-1");
       response.setHeader("cache-control", "no-cache");
       response.setHeader("pragma", "no-cache");
       // 1. 在内存中创建一个图片对象
       BufferedImage img = new BufferedImage(80,20,BufferedImage.TYPE_INT_RGB);    
       ServletOutputStream out = response.getOutputStream();
       // 2. 获取图片
       Graphics pic = img.getGraphics();
       // 3. 设置背景是白色
       pic.setColor(Color.WHITE);
       pic.fillRect(0, 0, 80, 20);
       // 4. 设置图片
       pic.setColor(Color.RED);
       pic.setFont(new Font(null,Font.BOLD,12));
       // 5. 添加数据
       pic.drawString(makeString(4), 5, 15);
       // 6. 输出图片到浏览器
       ImageIO.write(img, "jpeg", out);  
    }

字符流做响应体的输出

public class Demo3 extends HttpServlet {
    String str = null;
    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        // 设置字符流的编码方式
        response.setCharacterEncoding("utf-8");
        // 通知浏览以指定的编码方式进行解码
        response.setContentType("text/html;charset=utf-8");
        // 获取响应对象的字符流对象
        PrintWriter out = response.getWriter();
        // 定义输出数据
        String data = "hello<br/>";
        // 输出字符串数据
        out.write(data);
        // 输出页面数据
        data = "<h2>this is a h2</h2>";
        out.write(data);
        // 输出中文数据
        data = "中国";
        out.write(data);
        out.write("<br/>");
        // 输出数字
        out.write(65);         // A
        out.write("<br/>");
        // 调用打印方法
        out.println(65);        // 65
        out.println(true);    // true
        out.println(34.567);    // 34.567
        
        out.write(str);       // 空指针异常
        out.println(str);        // 输出null
    }
}

write()和prinln()的区别?

输出数字不同: write()输出数字转换为字符,println原样输出。

输出null不同: write()输出引用类型的时候调用的toString转换为String数据,因此如果对象为null那么直接抛出空指针异常。Println直接输出null。

原文地址:https://www.cnblogs.com/zhenghongxin/p/4360819.html