<h2>欢迎登录网!</h2>
<h4>用户登录</h4>
<div class="entry"><label for="uid">用户名:</label><html:text property="loginname" style="width:135px;" styleId="uid"/></div>
<div class="entry"><label for="pwd">密 码:</label><html:password property="passwd" styleId="pwd" style="width:135px;" /></div>
<div class="entry"><label for="vcode">验证码:</label><html:text property="sn" styleId="vcode" style="width:56px;" maxlength="4" /><img src="imageCreate.do" hspace="10" align="absmiddle"/></div>
<div class="entry">
<button type="submit" class="ui-corner-all ui-state-default">确定</button>
<div id="errmsg"><html:errors/></div>
<img src="imageCreate.do" hspace="10" align="absmiddle"/></div>这个action是什么时候走的呀,当我进入这个页面的时候,他已经走了, 他是怎么走的呀
15 个解决方案
#1
浏览器打开这个页面的时候 <img src="imageCreate.do" 就会请求imageCreate.do ,
其实验证码没必要弄这么发杂,一个jsp页面就行了。<img src="imageCreate.jsp" />
其实验证码没必要弄这么发杂,一个jsp页面就行了。<img src="imageCreate.jsp" />
#2
无论是图片还是什么都是一个请求的,所以在显示的时候就运行了。
其实我们通常一个页面是由N多个对服务器的请求组成的。
其实我们通常一个页面是由N多个对服务器的请求组成的。
#3
<img src="imageCreate.do" hspace="10" align="absmiddle"/>
当浏览器打开时回解析对应的 html标签,当解吸到<img时,会查找src属性提供的路径,也就是imageCreate.do,浏览器会向这个路径提出一个访问请求,从对应的路径中获取一张图片,你要在你的imageCreate.do对应的Action中生成一张图片,并修改response.setContextType();这样你就看到图片
由于响应速度很快,所有你才感觉 "它走的很快,没等你!"
当浏览器打开时回解析对应的 html标签,当解吸到<img时,会查找src属性提供的路径,也就是imageCreate.do,浏览器会向这个路径提出一个访问请求,从对应的路径中获取一张图片,你要在你的imageCreate.do对应的Action中生成一张图片,并修改response.setContextType();这样你就看到图片
由于响应速度很快,所有你才感觉 "它走的很快,没等你!"
#4
up
#5
页面一请求就开始读取、加载信息了。你的imageCreate.do直接写在页面运行里面的,不需要额外的提交操作了,已经执行。
<button type="submit" class="ui-corner-all ui-state-default" onclick="imageCreate.do">确定</button>
这样就需要经过手动提交才执行
<button type="submit" class="ui-corner-all ui-state-default" onclick="imageCreate.do">确定</button>
这样就需要经过手动提交才执行
#6
当解析到图片的<img>标签的时候,会向src指向的地方发请求,这时候server端就响应了这个请求,执行了action
#7
修改response.setContextType();是什么意思呀
#8
response.setContextType(“iamge/jpeg”);
#9
把流写成文件时指定的文件类别吧
#10
什么意思,看不懂,大家看我的后台代码
response.setContentType("text/html;charset=UTF-8");
BufferedImage buffImg=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics2D g=buffImg.createGraphics();
// 创建一个随机数生成器类。
Random random=new Random();
g.setColor(Color.WHITE);
g.fillRect(0,0,width,height);
//创建字体,字体的大小应该根据图片的高度来定。
Font font=new Font("Times New Roman",Font.PLAIN,18);
//设置字体。
g.setFont(font);
//画边框。
g.setColor(Color.BLACK);
g.drawRect(0,0,width-1,height-1);
//随机产生15条干扰线,使图象中的认证码不易被其它程序探测到。
/*g.setColor(Color.GRAY);
for (int i=0;i<15;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(6);
int yl = random.nextInt(6);
g.drawLine(x,y,x+xl,y+yl);
} */
//randomCode用于保存随机产生的验证码,以便用户登录后进行验证。
StringBuffer randomCode=new StringBuffer();
//随机产生4位数字的验证码。
for (int i=0;i<4;i++)
{
//得到随机产生的验证码数字。
String strRand=String.valueOf(random.nextInt(10));
//产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。
//用随机产生的颜色将验证码绘制到图像中。
//g.setColor(new Color(red,green,blue));
g.setColor(getRandColor(0,200));
g.drawString(strRand,13*i+6,16);
//将产生的四个随机数组合在一起。
randomCode.append(strRand);
}
//将四位数字的验证码保存到Session中。
HttpSession session=request.getSession();
session.setAttribute("randomCode",randomCode.toString());
//禁止图像缓存。
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
//将图像输出到Servlet输出流中。
ServletOutputStream sos=response.getOutputStream();
ImageIO.write(buffImg, "jpeg",sos);
sos.close();
return mapping.findForward("corpIndex");
}
Color getRandColor(int fc,int bc){//给定范围获得随机颜色
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
return new Color(r,g,b);
#11
不懂,正在学习struts2中。。。
#12
经理写的,看不懂
#13
进入该页面后发送对应的.do请求,然后将相应页面作为src的值。
#14
<img src="imageCreate.do" hspace="10" align="absmiddle"/>
当浏览器打开时回解析对应的 html标签,当解吸到 <img时,会查找src属性提供的路径,也就是imageCreate.do,浏览器会向这个路径提出一个访问请求,从对应的路径中获取一张图片,你要在你的imageCreate.do对应的Action中生成一张图片,并修改response.setContextType();这样你就看到图片
由于响应速度很快,所有你才感觉 "它走的很快,没等你!"
当浏览器打开时回解析对应的 html标签,当解吸到 <img时,会查找src属性提供的路径,也就是imageCreate.do,浏览器会向这个路径提出一个访问请求,从对应的路径中获取一张图片,你要在你的imageCreate.do对应的Action中生成一张图片,并修改response.setContextType();这样你就看到图片
由于响应速度很快,所有你才感觉 "它走的很快,没等你!"
#15
刷分可耻!
#1
浏览器打开这个页面的时候 <img src="imageCreate.do" 就会请求imageCreate.do ,
其实验证码没必要弄这么发杂,一个jsp页面就行了。<img src="imageCreate.jsp" />
其实验证码没必要弄这么发杂,一个jsp页面就行了。<img src="imageCreate.jsp" />
#2
无论是图片还是什么都是一个请求的,所以在显示的时候就运行了。
其实我们通常一个页面是由N多个对服务器的请求组成的。
其实我们通常一个页面是由N多个对服务器的请求组成的。
#3
<img src="imageCreate.do" hspace="10" align="absmiddle"/>
当浏览器打开时回解析对应的 html标签,当解吸到<img时,会查找src属性提供的路径,也就是imageCreate.do,浏览器会向这个路径提出一个访问请求,从对应的路径中获取一张图片,你要在你的imageCreate.do对应的Action中生成一张图片,并修改response.setContextType();这样你就看到图片
由于响应速度很快,所有你才感觉 "它走的很快,没等你!"
当浏览器打开时回解析对应的 html标签,当解吸到<img时,会查找src属性提供的路径,也就是imageCreate.do,浏览器会向这个路径提出一个访问请求,从对应的路径中获取一张图片,你要在你的imageCreate.do对应的Action中生成一张图片,并修改response.setContextType();这样你就看到图片
由于响应速度很快,所有你才感觉 "它走的很快,没等你!"
#4
up
#5
页面一请求就开始读取、加载信息了。你的imageCreate.do直接写在页面运行里面的,不需要额外的提交操作了,已经执行。
<button type="submit" class="ui-corner-all ui-state-default" onclick="imageCreate.do">确定</button>
这样就需要经过手动提交才执行
<button type="submit" class="ui-corner-all ui-state-default" onclick="imageCreate.do">确定</button>
这样就需要经过手动提交才执行
#6
当解析到图片的<img>标签的时候,会向src指向的地方发请求,这时候server端就响应了这个请求,执行了action
#7
修改response.setContextType();是什么意思呀
#8
response.setContextType(“iamge/jpeg”);
#9
把流写成文件时指定的文件类别吧
#10
什么意思,看不懂,大家看我的后台代码
response.setContentType("text/html;charset=UTF-8");
BufferedImage buffImg=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics2D g=buffImg.createGraphics();
// 创建一个随机数生成器类。
Random random=new Random();
g.setColor(Color.WHITE);
g.fillRect(0,0,width,height);
//创建字体,字体的大小应该根据图片的高度来定。
Font font=new Font("Times New Roman",Font.PLAIN,18);
//设置字体。
g.setFont(font);
//画边框。
g.setColor(Color.BLACK);
g.drawRect(0,0,width-1,height-1);
//随机产生15条干扰线,使图象中的认证码不易被其它程序探测到。
/*g.setColor(Color.GRAY);
for (int i=0;i<15;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(6);
int yl = random.nextInt(6);
g.drawLine(x,y,x+xl,y+yl);
} */
//randomCode用于保存随机产生的验证码,以便用户登录后进行验证。
StringBuffer randomCode=new StringBuffer();
//随机产生4位数字的验证码。
for (int i=0;i<4;i++)
{
//得到随机产生的验证码数字。
String strRand=String.valueOf(random.nextInt(10));
//产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。
//用随机产生的颜色将验证码绘制到图像中。
//g.setColor(new Color(red,green,blue));
g.setColor(getRandColor(0,200));
g.drawString(strRand,13*i+6,16);
//将产生的四个随机数组合在一起。
randomCode.append(strRand);
}
//将四位数字的验证码保存到Session中。
HttpSession session=request.getSession();
session.setAttribute("randomCode",randomCode.toString());
//禁止图像缓存。
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
//将图像输出到Servlet输出流中。
ServletOutputStream sos=response.getOutputStream();
ImageIO.write(buffImg, "jpeg",sos);
sos.close();
return mapping.findForward("corpIndex");
}
Color getRandColor(int fc,int bc){//给定范围获得随机颜色
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
return new Color(r,g,b);
#11
不懂,正在学习struts2中。。。
#12
经理写的,看不懂
#13
进入该页面后发送对应的.do请求,然后将相应页面作为src的值。
#14
<img src="imageCreate.do" hspace="10" align="absmiddle"/>
当浏览器打开时回解析对应的 html标签,当解吸到 <img时,会查找src属性提供的路径,也就是imageCreate.do,浏览器会向这个路径提出一个访问请求,从对应的路径中获取一张图片,你要在你的imageCreate.do对应的Action中生成一张图片,并修改response.setContextType();这样你就看到图片
由于响应速度很快,所有你才感觉 "它走的很快,没等你!"
当浏览器打开时回解析对应的 html标签,当解吸到 <img时,会查找src属性提供的路径,也就是imageCreate.do,浏览器会向这个路径提出一个访问请求,从对应的路径中获取一张图片,你要在你的imageCreate.do对应的Action中生成一张图片,并修改response.setContextType();这样你就看到图片
由于响应速度很快,所有你才感觉 "它走的很快,没等你!"
#15
刷分可耻!