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。

你可能感兴趣的:(Java学习)