问题描述
- 麻烦各位帮忙看看这个java代码,急急急急啊,有一部分不会
-
public class CheckCoderTool extends HttpServlet {public void doGet(HttpServletRequest request HttpServletResponse response)throws ServletException IOException { response.setContentType(""image/jpeg""); //客户端那边处理好的4位验证码字符串 String c = (String) request.getSession().getAttribute(""c""); int width = c.length() * 8 + 10; int height = 16; int startX = 5; int startY = 12; BufferedImage bi = new BufferedImage(width heightBufferedImage.TYPE_INT_RGB); Graphics2D g = bi.createGraphics(); g.setColor(Color.GREEN); g.setBackground(Color.black); g.clearRect(0 0 width height); g.drawString(c startX startY); JPEGImageEncoder encoder = null; JPEGEncodeParam param = null; try { encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream()); param = encoder.getDefaultJPEGEncodeParam(bi); param.setQuality(1ffalse); encoder.encode(bi); } catch (Exception e) { e.printStackTrace(); } finally { bi = null; g = null; c = null; encoder = null; param = null; } System.out.println(""试一试""); }}
以上是一段验证码的代码,我想问有几个问题
1、response.getOutputStream()不是指这个bi吗里面的东西吗
2、param.setQuality(1ffalse); 我知道这里是设置了图片的压缩的格式,1f就是无损了,但是false是什么参数,为什么是false不是true,我查看过api只找到这个接口方法,还没有实现的,看到参数的解释是力基准量化表,简直汗颜了。不明白啊
3、一般servlet返回到客户端如果是转发到另外的页面最后会写类似
RequestDispatcher rd=request.getRequestDispatcher(""/index.jsp"");
rd.forward(request response);
这个代码最后会转发带index.jsp的,而我写的这个servlet代码,虽然最后用作验证码的图片输出,代码最上面也写了返回的类型
response.setContentType(""image/jpeg"");
最后输出到图片的引用地址,是不是这样就可以了,不用写其他了吗?
4、而且当所有对象设置为空时,程序是没有结束的,最后还能运行下面的“试一试”的字眼,当程序结束时应该报空才对啊,为什么还在客户端看到图片的,还有这个类什么时候会结束返回到客户端
时间: 2024-10-27 08:46:36