各位大哥,问大家一个关于action的一个小问题

时间:2022-10-13 19:30:50
  	<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" />

#2


无论是图片还是什么都是一个请求的,所以在显示的时候就运行了。
其实我们通常一个页面是由N多个对服务器的请求组成的。

#3


<img src="imageCreate.do"  hspace="10" align="absmiddle"/> 
当浏览器打开时回解析对应的 html标签,当解吸到<img时,会查找src属性提供的路径,也就是imageCreate.do,浏览器会向这个路径提出一个访问请求,从对应的路径中获取一张图片,你要在你的imageCreate.do对应的Action中生成一张图片,并修改response.setContextType();这样你就看到图片
由于响应速度很快,所有你才感觉 "它走的很快,没等你!"

#4


引用 3 楼 woming66 的回复:
<img src="imageCreate.do"  hspace="10" align="absmiddle"/>
 当浏览器打开时回解析对应的 html标签,当解吸到 <img时,会查找src属性提供的路径,也就是imageCreate.do,浏览器会向这个路径提出一个访问请求,从对应的路径中获取一张图片,你要在你的imageCreate.do对应的Action中生成一张图片,并修改response.setContextType();这样你就看到图片
 由于响应速度很快,所有你才感觉 "它走的很快,没等你!"

up

#5


页面一请求就开始读取、加载信息了。你的imageCreate.do直接写在页面运行里面的,不需要额外的提交操作了,已经执行。
<button type="submit" class="ui-corner-all ui-state-default" onclick="imageCreate.do">确定</button>
这样就需要经过手动提交才执行

#6


当解析到图片的<img>标签的时候,会向src指向的地方发请求,这时候server端就响应了这个请求,执行了action

#7


修改response.setContextType();是什么意思呀

#8


引用 7 楼 xueac1 的回复:
修改response.setContextType();是什么意思呀


response.setContextType(“iamge/jpeg”); 

#9


引用 8 楼 woming66 的回复:
引用 7 楼 xueac1 的回复:
修改response.setContextType();是什么意思呀


response.setContextType(“iamge/jpeg”);
把流写成文件时指定的文件类别吧

#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();这样你就看到图片 
由于响应速度很快,所有你才感觉 "它走的很快,没等你!" 

#15


刷分可耻!

#1


浏览器打开这个页面的时候  <img src="imageCreate.do"  就会请求imageCreate.do ,
其实验证码没必要弄这么发杂,一个jsp页面就行了。<img src="imageCreate.jsp" />

#2


无论是图片还是什么都是一个请求的,所以在显示的时候就运行了。
其实我们通常一个页面是由N多个对服务器的请求组成的。

#3


<img src="imageCreate.do"  hspace="10" align="absmiddle"/> 
当浏览器打开时回解析对应的 html标签,当解吸到<img时,会查找src属性提供的路径,也就是imageCreate.do,浏览器会向这个路径提出一个访问请求,从对应的路径中获取一张图片,你要在你的imageCreate.do对应的Action中生成一张图片,并修改response.setContextType();这样你就看到图片
由于响应速度很快,所有你才感觉 "它走的很快,没等你!"

#4


引用 3 楼 woming66 的回复:
<img src="imageCreate.do"  hspace="10" align="absmiddle"/>
 当浏览器打开时回解析对应的 html标签,当解吸到 <img时,会查找src属性提供的路径,也就是imageCreate.do,浏览器会向这个路径提出一个访问请求,从对应的路径中获取一张图片,你要在你的imageCreate.do对应的Action中生成一张图片,并修改response.setContextType();这样你就看到图片
 由于响应速度很快,所有你才感觉 "它走的很快,没等你!"

up

#5


页面一请求就开始读取、加载信息了。你的imageCreate.do直接写在页面运行里面的,不需要额外的提交操作了,已经执行。
<button type="submit" class="ui-corner-all ui-state-default" onclick="imageCreate.do">确定</button>
这样就需要经过手动提交才执行

#6


当解析到图片的<img>标签的时候,会向src指向的地方发请求,这时候server端就响应了这个请求,执行了action

#7


修改response.setContextType();是什么意思呀

#8


引用 7 楼 xueac1 的回复:
修改response.setContextType();是什么意思呀


response.setContextType(“iamge/jpeg”); 

#9


引用 8 楼 woming66 的回复:
引用 7 楼 xueac1 的回复:
修改response.setContextType();是什么意思呀


response.setContextType(“iamge/jpeg”);
把流写成文件时指定的文件类别吧

#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();这样你就看到图片 
由于响应速度很快,所有你才感觉 "它走的很快,没等你!" 

#15


刷分可耻!