用servlet生成了验证码图片,形成图片流输出到登陆页面

GTRfans 2015-09-18 05:01:23
结果发现了一个悖论,我系统没正确登录前,无权调用该servlet,验证码根本加载不出来,请问大神有解决的方法吗?
...全文
237 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwxia 2015-09-18
  • 打赏
  • 举报
回复
去掉servlet的登录访问权限,或可以开放或设置密码,但不用登录
Cx_轩 2015-09-18
  • 打赏
  • 举报
回复
或者也可以在前台直接访问servlet
<div>
  	验证码:<input type="text"  name="identified"   /> 
  		<img id="codeImg" alt="验证码" src = " <%= request.getContextPath()%>/servlet/IdentifiedServlet" />
  		<a href="javascript:toChange();" > 看不清 </a>
</div>
function toChange(){
  		var time = Math.random();
  		document.getElementById("codeImg").src="<%= request.getContextPath()%>/servlet/IdentifiedServlet?"+time;
  	}
servlet:
protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//创建一个图片缓存区
		BufferedImage bi = new BufferedImage(80,20,BufferedImage.TYPE_INT_RGB);
		//创建制图Graphics类对象
		Graphics gi = bi.getGraphics();
		Color c = new Color(225,250,250);
		gi.setColor(c);
		gi.fillRect(0, 0, 80, 20);
		char[] content = "ABCDEFGHI0123456789".toCharArray();
		Random r = new Random();
		int index;
		for(int i=0;i<4;i++){
			index = r.nextInt(content.length);
			gi.setColor(new Color(r.nextInt(100),r.nextInt(188),r.nextInt(255)));
			gi.drawString(content[index]+"",10+20*i,10+3*r.nextInt(4));
		}
		ImageIO.write(bi, "JPG", response.getOutputStream());
	} 
Cx_轩 2015-09-18
  • 打赏
  • 举报
回复
用ajax请求一个servlet,然后在里面生成一个验证码返回到前台页面就可以了
这个逗b 2015-09-18
  • 打赏
  • 举报
回复
验证码用ajax写不就行了

67,514

社区成员

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

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