校验码实现
多学一招:如果一个网站中既有图片又有文本,那么请问需要使用什么流?
Repsonse不可能同时获取字节流和字符流,对于以上的问题是由于HTTP通信原理没有掌握清楚才导致。浏览器发送请求处理的一定是页面,但是页面中的图片表现的形式不是字节流的方式而是<img serc=”url”/>直接发送给浏览器即可,浏览器会检索该src指定的路径继续发送请求以字节流的方式获取图片。
校验码的实现
校验码的出现主要的任务是解决表单的重复提交问题。
1 public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { 2 // 0. 通知浏览器不能缓存图片数据 3 response.setHeader("expires", "-1"); 4 response.setHeader("cache-control", "no-cache"); 5 response.setHeader("pragma", "no-cache"); 6 // 1. 在内存中创建一个图片对象 7 BufferedImage img = new BufferedImage(80,20,BufferedImage.TYPE_INT_RGB); 8 ServletOutputStream out = response.getOutputStream(); 9 // 2. 获取图片 10 Graphics pic = img.getGraphics(); 11 // 3. 设置背景是白色 12 pic.setColor(Color.WHITE); 13 pic.fillRect(0, 0, 80, 20); 14 // 4. 设置图片 15 pic.setColor(Color.RED); 16 pic.setFont(new Font(null,Font.BOLD,12)); 17 // 5. 添加数据 18 pic.drawString(makeString(4), 5, 15); 19 // 6. 输出图片到浏览器 20 ImageIO.write(img, "jpeg", out); 21 }