import gdhb.portal.util.ImageCode;
import gdhb.portal.util.RandomUtils;
import gdhb.portal.util.Uuid;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* MyEclipse Struts
* Creation date: 09-12-2006
*
* XDoclet definition:
* @struts.action validate="true"
*/
public class ImageAction extends Action {
// --------------------------------------------------------- Instance Variables
// --------------------------------------------------------- Methods
// private AutocodeImage autocode = new AutocodeImage();
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute (
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception{
// TODO Auto-generated method stub
HttpSession session = request.getSession(true);
String ustr = Uuid.create().toString();
StringBuffer rand = new StringBuffer();
for(int i=0;i<4;i++){
int randstr = RandomUtils.buildIntRandomBy(33);
//randstr为0的时候会出错,导致图片出不来,从新生产随机数
while(randstr==0){
randstr = RandomUtils.buildIntRandomBy(33);
}
rand.append(ustr.substring(randstr -1, randstr));
}
OutputStream out = response.getOutputStream();
ImageCode.WriteImage(rand.toString(),out);
session.setAttribute("rand",rand.toString());
return null;
}
}
页面:
sturts.confix:
提交后处理:
String verifyCode = this.getFormElementString(form, "verifyCode", "");
if(!verifyCode.equals(request.getSession().getAttribute("rand"))){
request.setAttribute(Constants.EXCEPTION_DEFAULT_KEY,"对不起,验证码有误,请重新填写!");
return actionMapping.findForward("loginforward");