img标签的src属性等于servlet名,求详细的解释

龍的传人 2013-09-05 05:20:38
在用Ajax实现图片验证码时,都是<img src="servlet名"> ,这样就能访问到对应的servlet。不知道其中的原理。求助求助。。。。。。
...全文
540 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
s478853630 2013-09-10
  • 打赏
  • 举报
回复
servlet中输出一个流(java.io.InputStream )就可以了,
private char mapTable[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
	
	/**
	 * 生成随机的注册验证码图像
	 * @param request
	 * @param response
	 * */
	public void bringCode(HttpServletRequest request, HttpServletResponse response) {
		try {
			int width = 65, height = 24;
			BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
			Graphics graphics = image.getGraphics();// 获取图形上下文
			graphics.setColor(getRandColor(180, 250));// 设定背景色(最多色调255)
			graphics.fillRect(0, 0, width, height);
			graphics.setColor(Color.black);// 画边框
			graphics.drawRect(0, 0, width - 1, height - 1);
			String randCode = "";// 取随机产生的认证码
			for (int i = 0; i < 4; ++i) {// 4代表4位验证码,如果要生成更多位的认证码,则加大数值
				randCode += mapTable[(int) (mapTable.length * Math.random())];
			}
			graphics.setColor(Color.black);// 将认证码显示到图像中,如果要生成更多位的认证码,增加drawString语句
			graphics.setFont(new Font("Atlantic Inline", Font.PLAIN, 18));
			String str = randCode.substring(0, 1);
			graphics.drawString(str, 8, 17);
			str = randCode.substring(1, 2);
			graphics.drawString(str, 20, 15);
			str = randCode.substring(2, 3);
			graphics.drawString(str, 35, 18);
			str = randCode.substring(3, 4);
			graphics.drawString(str, 45, 15);
			Random rand = new Random();// 随机产生30个干扰点
			for (int i = 0; i < 30; i++) {
				int x = rand.nextInt(width);
				int y = rand.nextInt(height);
				graphics.drawOval(x, y, 1, 1);
			}
			graphics.dispose();// 释放图形上下文
			request.getSession().setAttribute(FrameConfig.checkCode, randCode);// 认证码保存在session中
			OutputStream output = response.getOutputStream();
			ImageIO.write(image, "JPEG", output);// 输出图像到页面
			image.flush();
			output.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
关键代码: ImageIO.write(image, "JPEG", output);// 输出图像到页面
龍的传人 2013-09-09
  • 打赏
  • 举报
回复
求大侠们指点迷津啊。。。。。
mimixiaoxin 2013-09-06
  • 打赏
  • 举报
回复
楼主想知道的有点深奥。。不懂哎
  • 打赏
  • 举报
回复
这要看你src="servlet名"里的servlet是给谁用的了。也就是给服务器,还是浏览器。
u010580980 2013-09-06
  • 打赏
  • 举报
回复
1.servlet生成一个图片 2.你直接输入servlet的连接看一下,就是一个图片,和我们自己发布到服务器的一样。 3.页面加载时,会访问这个servelt连接,自然就会生成一个图片
龍的传人 2013-09-06
  • 打赏
  • 举报
回复
引用 2 楼 litiebiao2012 的回复:
servlet使用java gui api生成图片,得到图片二进制字节流,返回浏览器渲染
<img src="servlet名">浏览器是如何解析的呢?
litiebiao2012 2013-09-05
  • 打赏
  • 举报
回复
servlet使用java gui api生成图片,得到图片二进制字节流,返回浏览器渲染
龍的传人 2013-09-05
  • 打赏
  • 举报
回复
引用 1 楼 xxhhbb1538 的回复:
servlet会返回一个图片的名字,浏览器根据图片名字再到服务器端取这个图片。 这样算来来回各跑了两趟?
确实是跑了两次,在IE7中就把那个servlet执行了两次,但是再firefox中就只执行了一次servlet。 但是这个过程浏览器是具体怎么执行的呢?
  • 打赏
  • 举报
回复
servlet会返回一个图片的名字,浏览器根据图片名字再到服务器端取这个图片。 这样算来来回各跑了两趟?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧