你的位置:首页 > Java教程

[Java教程]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。