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(,,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)的更多相关文章
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 20145316许心远《Java学习笔记》第三周总结
20145316许心远<Java程序设计>第3周学习总结 教材学习内容总结 一.定义类: 类定义时使用class关键字 如果要将x绑定到新建的对象上,可以使用"="制定 ...
- 20145230《java学习笔记》第九周学习总结
20145230 <Java程序设计>第9周学习总结 教材学习内容 JDBC JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作, ...
- Java学习笔记之---API的应用
Java学习笔记之---API的应用 (一)Object类 java.lang.Object 类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 20145330第九周《Java学习笔记》
20145330第九周<Java学习笔记> 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JD ...
- Java学习笔记——动态代理
所谓动态,也就是说这个东西是可变的,或者说不是一生下来就有的.提到动态就不得不说静态,静态代理,个人觉得是指一个代理在程序中是事先写好的,不能变的,就像上一篇"Java学习笔记——RMI&q ...
随机推荐
- RAD C++Builder xe7 std::map xtree BUG
c++Builder 6 下的std::map还能用,有代码提示. 换到xe7,代码提示出来就一个tt.operator [](),代码没法往下写了. 最后把Target Platforms切换到64 ...
- [jOOQ中文]3. 数据库版本管理工具Flyway
https://segmentfault.com/a/1190000010526452 在执行数据库迁移时,我们推荐使用jOOQ与Flyway - 数据库迁移轻松. 在本章中,我们将简单的来使用这两个 ...
- Visual Basic 函数速查
Calendar 常数 可在代码中的任何地方用下列常数代替实际值: 常数 值 描述 vbCalGreg 0 指出使用的是阳历. vbCalHijri 1 指出使用的是伊斯兰历法. Color 常数 可 ...
- 【320】Python 2.x 与 3.x 的区别
通过代码移植的报错进行梳理! 1. print 函数的区别 Python 2.x 中可以加空格或者括号,但是 Python 3.x 只能是括号的 # Python 2.x >>> p ...
- Redis Key操作
[Redis Key操作] 1.GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value). 当 key 存在但不是字符串类型时,返回一个错 ...
- redis在Web中的使用
redis是一个键值对数据库,用于缓存数据. redis是一个key-value存储系统.和Memcached数据库类似,它支持存储的value类型相对更多,包括string(字符串).list(链表 ...
- Element DatePicker日期范围选择
前7天后7天 <el-date-picker v-model="value1" type="date" :picker-options="pic ...
- 19-python 自己建立词库并实现文章汉语词频统计
首先在网上下载一个汉语词典的txt文件, 汉语词典 1.用正则去掉词语的解释,即提取出所有汉语词语: import re def getHanYuCi(st): p = re.compile(r'[. ...
- WebBrowser介绍——Javascript与C++互操作
WebBrowser控件是Microsoft提供的一个用于网页浏览的客户端控件,WebBrowser控件的使用相当广泛,例如很多邮件客户端都是使用可编辑的WebBrowser控件作为写邮件的工具,也有 ...
- Golang之strings包
只列举了部分函数方法的使用: 太多了....... package main import ( "fmt" "strings" ) func main() { ...