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

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(,,BufferedImage.TYPE_INT_RGB);
ServletOutputStream out = response.getOutputStream();
// 2. 获取图片
Graphics pic = img.getGraphics();
// 3. 设置背景是白色
pic.setColor(Color.WHITE);
pic.fillRect(, , , );
// 4. 设置图片
pic.setColor(Color.RED);
pic.setFont(new Font(null,Font.BOLD,));
// 5. 添加数据
pic.drawString(makeString(), , );
// 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(); // A
out.write("<br/>");
// 调用打印方法
out.println(); //
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学习笔记—校验码的实现(15)的更多相关文章

  1. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  2. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  3. 20145316许心远《Java学习笔记》第三周总结

    20145316许心远<Java程序设计>第3周学习总结 教材学习内容总结 一.定义类: 类定义时使用class关键字 如果要将x绑定到新建的对象上,可以使用"="制定 ...

  4. 20145230《java学习笔记》第九周学习总结

    20145230 <Java程序设计>第9周学习总结 教材学习内容 JDBC JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作, ...

  5. Java学习笔记之---API的应用

    Java学习笔记之---API的应用 (一)Object类 java.lang.Object 类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个 ...

  6. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  7. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  8. 20145330第九周《Java学习笔记》

    20145330第九周<Java学习笔记> 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JD ...

  9. Java学习笔记——动态代理

    所谓动态,也就是说这个东西是可变的,或者说不是一生下来就有的.提到动态就不得不说静态,静态代理,个人觉得是指一个代理在程序中是事先写好的,不能变的,就像上一篇"Java学习笔记——RMI&q ...

随机推荐

  1. WordPress无法发送电子邮件,可能原因:您的主机禁用了mail()函数解决方案

    体验更优排版请移步原文:http://blog.kwin.wang/website/wp-cant-send-email-solution.html 最近折腾了下WordPress,给米表 搭了个论坛 ...

  2. VB指针操作和消息钩子

    二.VB怎么用指针       要想弄明白VB怎么使用指针,就必须要弄明白两件事,第一,如何取得数组的指针,第二,如何将指针所指向的数组取出来.       A.在讲解这两个问题之前,我们需要了解几个 ...

  3. cas增加验证码

    参考地址:https://blog.csdn.net/attackmind/article/details/52052502 参考地址:https://blog.csdn.net/jadyer/art ...

  4. 可用于nodejs的SuperAgent(ajax API)

    简单示例: import request from 'superagent';//引用声明 request.post(api) .withCredentials()//跨域 .end((err, re ...

  5. Win10 Notebook

    E:\Perl\site\bin;E:\Perl\bin;C:\Program Files\Microsoft MPI\Bin\;C:\ProgramData\Oracle\Java\javapath ...

  6. 通过curl模拟多线程抓取网页(curl_multi_*)

    curl请求多个url,以前都是使用循环来处理.最近发现可以通过curl_multi_*系列函数来模拟多线程.比对一下,发现如果请求的url只有几个,2种方案耗时差不多,但是url比较多,差距就非常明 ...

  7. ireport related

    http://blog.csdn.net/q326527970/article/details/7049047

  8. halcon的tuple算子功能总结

  9. 查看binlog的简单方法!

    今天学到一个牛逼的东西,不用打开binlog文件就可以查看binlog里的event事件. 命令为:show binlog events in 'mysql-bin.000001' from 4 li ...

  10. JVM 垃圾回收- 转载 知识碎片

    最近关注了一下垃圾回收的问题,想了解一下JVM 关于方法区的垃圾回收机制,找了几篇文章,不同的文章从不同角度讲述了一下,嗯... 拼凑起来 记录一下, 有些未验证正确性... JVM 方法区 当JVM ...