在form表單中,如下
[html]
<form name="infof">
<font color="red">姓名:</font> <input name="name" type="text"></input><br>
<font color="red">密碼:</font> <input name="password" type="password"></input><br>
驗證碼:<input name="validate" type="text">
<img name="vali" border=0 src="validate.jsp" onclick="refresh()"/>
<a href="JavaScript:refresh()">看不清,換一張</a>
<br>
<input type="button" onclick="login()" value="登錄"> <input
type="reset">
</form>
在驗證碼圖片中,調用的是validate.jsp,用於生成驗證碼圖片。這個jsp中的內容如下:
[html]
<body>
<%
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
BufferedImage image = new BufferedImage(75, 30,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.gray);
g.fillRect(0, 0, 75, 30);
String randStr = String.valueOf(new Random().nextInt(8999) + 1000);
session.setAttribute("randStr", randStr);
g.setColor(Color.black);
g.setFont(new Font("", Font.PLAIN, 20));
g.drawString(randStr, 10, 20);
for (int i = 1; i <= 120; i++) {
int x = new Random().nextInt(75);
int y = new Random().nextInt(30);
g.setColor(Color.blue);
g.drawOval(x, y, 1, 1);
}
ImageIO.write(image, "JPEG", response.getOutputStream());
out.clear();
out = pageContext.pushBody();
%>
</body>
好了,現在大頭戲來了。
在
<img name="vali" border=0 src="validate.jsp" onclick="refresh()"/>
<a href="JavaScript:refresh()">看不清,換一張</a>
中,無論是鏈接還是onclick方法,都是指到js中的一個方法。
具體如下:
[javascript]
<script type="text/javascript">
function refresh(){
infof.vali.src="";
infof.vali.src="validate.jsp";
}
</script>
本來呢,infof.vali.src="";這條語句我是沒有的。當我點擊圖片,或者點擊鏈接的時候,我發現,validate.jsp都沒有被調用。無論我怎麼設置緩存設置(可能是我還沒有設置到點上)
干脆,我自己想了個辦法,我用這種方法 解決了刷新驗證碼無效的問題。
經過測試,鏈接和點擊圖片都可以~~~問題解決