HTTP协议包含请求和响应部分。HttpServletRequest就代表着请求部分,HttpServletResponse就代表着响应部分。
(一)HttpServletResponse详解
(1)中文乱码问题
产生乱码的原因:编码和解码的方式不一致导致产生乱码,英文不存在乱码问题。
解决方法:(1) 更改浏览器的查看编码(不可取)通知浏览器,使用的码表
(2)在响应头部设置编码格式,告诉浏览器用哪种方式来解析
response.setHeader("Content-Type", "text/html;charset=UTF-8");
或者response.setContentType("text/html;charset=UTF-8");
(2)输出随机验证码
//输出随机验证码图片
public class ResponseDemo3 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//通知浏览器不要缓存
response.setHeader("Expires", "-1");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
int width = 120;
int height = 25;
//创建一副内存图像:BufferedImage
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//得到属于该图片的画笔:Graphics
Graphics g = image.getGraphics();
//画边框
g.setColor(Color.BLUE);
g.drawRect(0, 0, width, height);
//填充背景色
g.setColor(Color.YELLOW);
g.fillRect(1, 1, width-2, height-2);
//画干扰线
g.setColor(Color.GRAY);
Random r = new Random();
for(int i=0;i<10;i++)
g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height));
//随机数字
g.setColor(Color.RED);
g.setFont(new Font("宋体", Font.BOL