jsp 验证码怎样取值跟图片显示的值一样

QQ644486560 2010-11-26 09:39:26
我有2个jsp页面第一个是image.jsp


<%@ page import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" pageEncoding="gb2312" contentType="text/html;charset=gbk" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'MyJsp.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<%!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);
}%>
<%
//out.clear();//这句针对resin服务器(如果不加则图片显示不出来),如果是tomacat可以不要这句
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);

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

// 将验证码存入SESSION
session.setAttribute("code", sRand);
g.dispose();
ImageIO.write(image, "JPEG", response.getOutputStream());
out.clear();
%>
</body>
</html>




第二个页面我调用第一个页面它只是取的验证码图片 我想把图片显示的值取出来 不知道怎么取
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>登陆页面</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>


<body>

<img src="image.jsp" width="60" height="20" id="img"><a href="javascript:location.reload();">看不清,请换张</a>
<form method="post" action="img.jsp">
<input type="text" id="text"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
...全文
247 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
taoshengyijiuwu 2010-11-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 magong 的回复:]

引用楼主 xiaomingjsp 的回复:
<form method="post" action="img.jsp">
<input type="text" id="text"><br>
<input type="submit" value="提交">
</form>

提交到第三个页面,比方说validate.jsp,这样写
<form method="post" actio……
[/Quote]正解
QQ644486560 2010-11-27
  • 打赏
  • 举报
回复
嘿嘿 结贴
QQ644486560 2010-11-27
  • 打赏
  • 举报
回复
谢谢 2位了
QQ644486560 2010-11-27
  • 打赏
  • 举报
回复
好了 谢谢
Jlins 2010-11-27
  • 打赏
  • 举报
回复
对的[Quote=引用 3 楼 magong 的回复:]

引用 2 楼 xiaomingjsp 的回复:

开始的时候 我在img里面写取值 session.getAttribute("code") 他的值开始是空 跟图片对应不起来 再刷新它总是取图片前面的哪个值

是的,不能这样写。如果在生成图片的时候写session,则必须交第三个页面验证输入。
[/Quote]
magong 2010-11-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiaomingjsp 的回复:]

开始的时候 我在img里面写取值 session.getAttribute("code") 他的值开始是空 跟图片对应不起来 再刷新它总是取图片前面的哪个值
[/Quote]
是的,不能这样写。如果在生成图片的时候写session,则必须交第三个页面验证输入。
QQ644486560 2010-11-27
  • 打赏
  • 举报
回复
开始的时候 我在img里面写取值 session.getAttribute("code") 他的值开始是空 跟图片对应不起来 再刷新它总是取图片前面的哪个值
magong 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 xiaomingjsp 的回复:]
<form method="post" action="img.jsp">
<input type="text" id="text"><br>
<input type="submit" value="提交">
</form>
[/Quote]
提交到第三个页面,比方说validate.jsp,这样写
<form method="post" action="validate.jsp">
<input type="text" name="text"><br>
<input type="submit" value="提交">
</form>

然后在validate.jsp中,这样写:
<%
request.getParameter("text").trim(); //这是用户输入的验证码
session.getAttribute("code"); //这是正确的验证码
//用equals方法比较一下即可知道用户是否输入正确了。
%>

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧