public class ValidataCodeAction extends BaseAction {
@Override
public String execute(ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
Map<String,BufferedImage> imageMap = ImageUtil.getImage();
Set<Map.Entry<String,BufferedImage>> set = imageMap.entrySet();
BufferedImage image=null;
ValidataCodeForm validataCodeForm = (ValidataCodeForm)form;
for(Map.Entry<String, BufferedImage> entry:set){
String codeValue = entry.getKey();
image = entry.getValue();
validataCodeForm.setValidataStringcode(codeValue);
validataCodeForm.setValidataImagecode(image);
request.getSession().setAttribute("validataCodeForm", validataCodeForm);
}
ServletOutputStream out = response.getOutputStream();
ImageIO.write(image, "JPEG", out);
return null;
}
}
以上是action中的代码。验证码在另一个类中生成。经调试无错误。
jsp中通过以下方法调用:
<img class="yzm_img" id='imgVcode' src="${pageContext.request.contextPath}/user/validatacode.do" />
经过输出:${sessionScope.validataCodeForm.validataStringcode}
发现第一次打开页面时session中没有存储。然后每次刷新。session中存储的都是上次调用action中生成的验证码。请问一下各位大神。这是神马个情况!!!
------解决方案--------------------
这个建议你自己调试下,看看每次启动页面时怎么执行的代码,多调调就能发现原因了