回顾基础的GUI 。实现三秒刷新一个随机的七位数字
package com.Li.Servlet;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageInputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
public class ImageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//让浏览器3秒刷新一次
resp.setHeader("refresh", "3");
//在内存中创建一个图片
BufferedImage bufferedImage = new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB);//这里有个疑惑?这个配置应该是在左上角显示,为什么实际是在正中间?可能默认是居中吗?
//得到图片(下面是GUI的内容)
Graphics2D graphics = (Graphics2D) bufferedImage.getGraphics();//制作2D的一只笔
graphics.setColor(Color.white);//设置图片的背景颜色
graphics.fillRect(0, 0, 80, 20);//x与y的值为背景颜色是否切割。切割就会用默认背景黑色。x是左至右,y是上至下。
//给图片写数据
graphics.setColor(Color.BLUE);//设置字体样式
graphics.setFont(new Font(null, Font.BOLD, 20));//设置字体样式
graphics.drawString(makeNum(),0,20);//x是从右边开始切割的距离,y是图片的高度。有什么疑惑可以去看帮助文档,理解里面的参数是干什么
//告诉浏览器,这个请求用图片的方式打开
resp.setContentType("image/jpeg");
//网站存在缓存,不让浏览器缓存
resp.setDateHeader("expires", -1);
resp.setHeader("Cache-Control", "no-cache");
resp.setHeader("Pragma", "no-cache");
//把图片写给浏览器
ImageIO.write(bufferedImage, "jpg", resp.getOutputStream());
}
//生成随机数
private String makeNum(){
Random random = new Random();
String num = random.nextInt(9999999) + "";//设置7位内的数,用字符来保存
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 7-num.length(); i++) {
sb.append(0);//数字位数不够七位,自动填充0
}
num = sb.toString() + num;//输出7位数
return num;
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
web配置这里不写了,前面都了解了。