自己写了个验证码,简单来说就是用Graphics画出来,然后在jsp里设置contentType="img/jpeg"这样来实现
现在遇到个问题,有时候我访问这个带有验证码的页面时(该页面里用<img src="xxx.jsp">),它并没有重新加载一张新的验证码,而是从缓存里取,这样我在contentType="img/jpeg"的那个页面里放一个对象到session里的代码就不得执行,那么我访问action时,action那里就得到个空对象,怎么防止他从缓存里取这个图片的//action里的一个方法
public String enter() {
AuthCode ac = (AuthCode)request.getSession().getAttribute("authcode"); /*
* 检查用户,如果返回空值则表示登录不成功
*/
user = service.login(account.getAccount(), account.getPwd(), identity);
if(user == null) {
addMessage("account", "用户名或密码错误");
} else if(!ac.isSame(code)) {
addMessage("code", "验证码错误");
} else {
session.put(UserType.USER, user);//将帐号保存到session中
setDestination(SUCCESS_URL);
return SUCCESS;
}
return input();
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page contentType="img/jpeg" %>
<%@ page import="javax.imageio.ImageIO"%>
<%@ page import="com.freedom.scss.util.AuthCode" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<%
AuthCode ac = new AuthCode();
session.setAttribute("authcode", ac);
ImageIO.write(ac.getImage(), "JPEG", response.getOutputStream());
out.clear();
out = pageContext.pushBody();
%>
</body>
</html>
现在遇到个问题,有时候我访问这个带有验证码的页面时(该页面里用<img src="xxx.jsp">),它并没有重新加载一张新的验证码,而是从缓存里取,这样我在contentType="img/jpeg"的那个页面里放一个对象到session里的代码就不得执行,那么我访问action时,action那里就得到个空对象,怎么防止他从缓存里取这个图片的//action里的一个方法
public String enter() {
AuthCode ac = (AuthCode)request.getSession().getAttribute("authcode"); /*
* 检查用户,如果返回空值则表示登录不成功
*/
user = service.login(account.getAccount(), account.getPwd(), identity);
if(user == null) {
addMessage("account", "用户名或密码错误");
} else if(!ac.isSame(code)) {
addMessage("code", "验证码错误");
} else {
session.put(UserType.USER, user);//将帐号保存到session中
setDestination(SUCCESS_URL);
return SUCCESS;
}
return input();
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page contentType="img/jpeg" %>
<%@ page import="javax.imageio.ImageIO"%>
<%@ page import="com.freedom.scss.util.AuthCode" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<%
AuthCode ac = new AuthCode();
session.setAttribute("authcode", ac);
ImageIO.write(ac.getImage(), "JPEG", response.getOutputStream());
out.clear();
out = pageContext.pushBody();
%>
</body>
</html>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货