webwork验证码

 

< img  border =0  src ="imageAction.do" >

webwork自生成验证码图片ResultTyp 

ImageResult.class

package  com.test.randomimage;

import  java.io.OutputStream;

import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;
import  javax.servlet.http.HttpSession;

import  com.opensymphony.webwork.ServletActionContext;
import  com.opensymphony.webwork.dispatcher.WebWorkResultSupport;
import  com.opensymphony.xwork.ActionInvocation;


public   class  ImageResult  extends  WebWorkResultSupport
{
    
private  HttpSession session;

    @Override
    
protected   void  doExecute(String arg0, ActionInvocation invocation)  throws  Exception
    {
        
        
// 获得Request
        HttpServletRequest request  =  (HttpServletRequest) invocation.getInvocationContext().get(
                ServletActionContext.HTTP_REQUEST);
        
// 获得response
        HttpServletResponse response  =  (HttpServletResponse) invocation.getInvocationContext().get(
                ServletActionContext.HTTP_RESPONSE);
        
// 设置无缓存
        response.setHeader( " Pragma " " No-cache " );
        response.setHeader(
" Cache-Control " " no-cache " );
        response.setDateHeader(
" Expires " 0 );
        
        VerifyImage verify 
=   new  VerifyImage();
        OutputStream os 
=  response.getOutputStream();
        
// 获得随机验证码
        String str  =  verify.GetImage(os);
        
// 获得session
        session  =  request.getSession( true );
        
// 将验证码放入session
        session.setAttribute( " rand " , str);
    }

}

 

VerifyImage.class

 

package  com.test.randomimage;

import  java.awt.Color;
import  java.awt.Font;
import  java.awt.Graphics;
import  java.awt.image.BufferedImage;
import  java.io.IOException;
import  java.io.OutputStream;
import  java.util.Random;

import  javax.imageio.ImageIO;


public   class  VerifyImage
{
    
public  String GetImage(OutputStream outputStream)
    {
        
//  验证码宽和高
         int  width  =   60 , height  =   20 ;
        
//  创建图片对象
        BufferedImage image  =   new  BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        
        Graphics g 
=  image.getGraphics();
        
        Random random 
=   new  Random();
        
//  设置制图对象的颜色
        g.setColor(getRandColor( 200 250 ));
        
//  填充指定的矩形
        g.fillRect( 0 0 , width, height);
        
//  设置字体
        g.setFont( new  Font( " Times New Roman " , Font.PLAIN,  18 ));
        
//  设置随机颜色
        g.setColor(getRandColor( 160 200 ));

        
for  ( int  i  =   0 ; i  <   155 ; i ++ )
        {
            
int  x  =  random.nextInt(width);
            
int  y  =  random.nextInt(height);
            
int  xl  =  random.nextInt( 12 );
            
int  yl  =  random.nextInt( 12 );
            g.drawLine(x, y, x 
+  xl, y  +  yl);
        }

        String sRand 
=   "" ;

        
for  ( int  i  =   0 ; i  <   4 ; i ++ )
        {
            String rand 
=  String.valueOf(random.nextInt( 10 ));
            sRand 
+=  rand;
            g.setColor(
new  Color( 20   +  random.nextInt( 110 ),  20   +  random.nextInt( 110 ),  20   +  random
                    .nextInt(
110 )));
            g.drawString(rand, 
13   *  i  +   6 16 );
        }
        g.dispose();
        
try
        {
            ImageIO.write(image, 
" JPEG " , outputStream);
            outputStream.flush();
            
return  sRand;
        } 
catch  (IOException e)
        {
            e.printStackTrace();
            
return   " fail " ;
        }
    }

    
public  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);
    }

}

ImageAction.class

 

package  com.test.randomimage;

import  com.opensymphony.xwork.Action;

public   class  ImageAction  implements  Action
{
    
public String execute() throws Exception
    
{
        
return SUCCESS;
    }

}

 

xwork.xml

< result-types >
    
< result-type  name ="image"  class ="com.test.randomimage.ImageResult"   />
</ result-types >

< action  name ="imageAction"  class ="com.test.randomimage.ImageAction" >
    
< result  name ="success"  type ="image" />
</ action >

test.jsp

< img  border =0  src ="imageAction.do" >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值