问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jsp页面该如何刷新验证码

发布网友 发布时间:2022-04-23 19:58

我来回答

6个回答

热心网友 时间:2022-04-23 10:49

(1)jsp代码:
<img id = "img_authcode" src="${ctx}/account/authcode" /><a href="javascript:;" onclick="javascript:document.getElementById('img_authcode').setAttribute('src', '${ctx}/account/authcode?' + Math.random())">换一换</a>

(2)java代码(该代码为我自己框架代码,跟servlet写法不一样的我都给你注释了):
public View authcode() throws IOException {
HttpServletResponse response = PuffContext.getResponse();//获取response
response.setContentType("image/jpeg");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
String authCode = AuthCodeUtil.getRandom(4); //获取验证码,代码在下面(3)
System.out.println("生成随机码:" + authCode);
PuffContext.getSession().setAttribute("session_authcode", authCode);//把该验证码存储在session
ServletOutputStream output = response.getOutputStream();
AuthCodeUtil.draw(output, authCode);
output.flush();
output.close();
return ViewFactory.nullView();//返回null
}

(3)///////////////////////////下面为生成验证码类////////////////////////////////////

public class AuthCodeUtil {
private final static Random random = new Random();
// 随机字体样式
private final static int[] fontStyle = { Font.HANGING_BASELINE, Font.ITALIC, Font.LAYOUT_LEFT_TO_RIGHT, Font.LAYOUT_NO_LIMIT_CONTEXT,
Font.LAYOUT_NO_START_CONTEXT, Font.LAYOUT_RIGHT_TO_LEFT };

/**
* 画随机码图
*
* @param out
* @param width
* @param height
* @throws IOException
*/
public static void draw(OutputStream out, String value) throws IOException {
int width = 80, height = 30;
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D) bi.getGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
g.drawRect(1, 1, width - 2, height - 2);
for (int i = 0; i < 10; i++) {
g.setColor(randColor(150, 250));
g.drawOval(random.nextInt(110), random.nextInt(24), 5 + random.nextInt(10), 5 + random.nextInt(10));
}
int n = (int) (Math.random() * 6);
Font mFont = new Font("Arial", fontStyle[n], 23);
g.setFont(mFont);
g.setColor(randColor(10, 240));
g.drawString(value, 10, 21);// 随机数,水平距离,垂直距离
ImageIO.write(bi, "png", out);
}

private static Color randColor(int fc, int bc) {// 给定范围获得随机颜色
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);
}

public static void main(String[] args) throws IOException {
FileOutputStream out = new FileOutputStream("d:\\aa.png");
draw(out, getRandom(4));
}

public static String getRandom(int size) {// 随机字符串
char[] c = { '1', '3', '5', '6', '7', '8', '9' };
StringBuffer sb = new StringBuffer();
for (int i = 0; i < size; i++)
sb.append(c[Math.abs(random.nextInt()) % c.length]);
return sb.toString();
}

}

热心网友 时间:2022-04-23 12:07

我从头到尾说一遍吧

通过一个serlet绘制验证码,如DispCodeServlet

public class DispCodeServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  response.setHeader("Pragma", "No-cache");
  response.setHeader("Cache-Control", "no-cache");
  response.setDateHeader("Expires", 0);
  Random random=new Random();
  int length =5;
  String checkcode="";
  char code;
  int number;
  for(int i=0; i<length;i++){
   number=random.nextInt(26);
   if(number%2==0)
    code=(char)('0'+(char)(number%10));
   else
    code=(char)('A'+(char)(number%26));
   checkcode+=code+"";
  }
  int width=(int)Math.ceil(length*12.5),height=22;
  BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
  Graphics g=image.getGraphics();
  g.setColor(Color.WHITE);
  g.fillRect(0, 0, width, height);
  g.setColor(Color.GRAY);
  g.drawRect(0,0,width-1,height-1);
  for(int i=0;i<25;i++){
   int x1=random.nextInt(width);
   int y1=random.nextInt(height);
   int x2=random.nextInt(width);
   int y2=random.nextInt(height);
   g.setColor(Color.GRAY);
   g.drawLine(x1,y1,x2,y2);
  }
  g.setColor(Color.BLUE);
  g.setFont(new Font("Arial",Font.BOLD|Font.ITALIC,16));
  g.drawString(checkcode,5,18);
  HttpSession session=request.getSession();
  session.setAttribute("rand", checkcode);
  g.dispose();
  ImageIO.write(image, "JPEG", response.getOutputStream());
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  doGet(request,response);
 }
 }

在jsp页面中使用画验证码,如下

<input type=text name=checkcode><img id="cc"
     src="DispCodeServlet"><input type=button name=btn1 value="刷新"
     onclick="refresh()">

然后在javascript中写入refresh()方法

function refresh() {
  document.getElementById("cc").src = "DispCodeServlet?a="
    + Math.random();
 }

热心网友 时间:2022-04-23 13:42

<label>验证码</label><input id="code" type="text"/ maxlength="4" tabindex="3"><img id="checkCode" src="imgcode.jsp?random_mark=1111" width="83" height="24" onclick="javascript:changeCode();"/>

imgcode.jsp就是输出的一个验证码, 然后changeCode是个js函数, 点一下就更换random_mark=1111 这个的值, 从而达到刷新的效果。希望采纳

热心网友 时间:2022-04-23 15:33

this.src=你能访问到serlvet的路径;最好在这个路径的后面放一个随机数Math.random();不需要接收这个参数,这只是告诉后台,这个路径跟你原来的是不一样的。

热心网友 时间:2022-04-23 17:41

连接后面加编号,每次刷新编号+1

热心网友 时间:2022-04-23 20:06

this.src='yzmServlet'

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
cpa改分电话可信吗 有人今年收到这样的短信吗? 温馨提示 通知:你此次报考的湖南中级会 ...会计从业资格证,今天有陌生号码打电话说我没过,是真的吗?我都考三... 坠入星河的温柔仙句 惊艳所有人的优美文案 坠入星河的温柔仙句 温柔很仙的宝藏文案 温柔到心坎里的文案句子(温柔且治愈的短句子) 实习期劳务合同简易版 ...企业受伤,如果辞职是否还有补偿?医疗费谁出? 毛晓彤十大经典电视剧 这个锦尚天舞舞蹈里面的音乐是什么?急求 http://m.iqiyi.com/w_19rr... ASP程序验证码刷新的问题,请有经验的高手回答! 各个格式文件的作用?用什么软件打开? 使用火狐浏览器页面后退后如何使验证码刷新 php中如何刷新验证码 葫芦侠下载的hpk文件怎么安装 php如何在进入页面的时候自动刷新一次验证码 各位大大,我在电脑上用葫芦侠三楼下载了两个hpk的游戏,结果无法安装到手机上。我试过汉卓网安装器和 asp.net中怎么实现刷新验证码? 我用手机下载了一个游戏是hpk文件,用re管理器解压之后把obb里的数据包放到了Android-o 验证刷新不出来怎么办 手机上怎么使hpk格式变成apk格式 怎么刷新验证码啊 解开包的HPK文件怎么再打成HPK包 如何点击验证码刷新验证码的问题解决方法 请问hpk格式的游戏文件怎么打开?用了汉卓直装不管用,把他解压是zip格式,打开之后还是hpk格式 想玩一些比较大型的游戏,但是hpk文件到底怎么打开,下了专门的模拟器也没用,改成zip格式也解压错 为什么进阿里巴巴网页总是要验证,验证后又出现请刷新重新验证 hpk文件怎么安装到手机 下载的 hpk 格式的游戏怎么安装? ___ ①改成zip格式查看的内 hpk格式的安装包怎么安装??好像要解压,不知道怎么弄,有谁可以告诉我?? 验证码刷新怎么做? QQ飞车怎样刷新验证码 java web 项目验证码的刷新问题 ASP中 让验证码自动刷新该怎么做 在C#中怎么去刷新验证码(控制台); 网站验证码oncick刷新事件如何自动刷新一次 QQ浏览器刷新时总是出现验证 关于javascript 页面局部刷新更换验证码! JavaScript 刷新验证码失败 网易邮箱里验证如何刷新啊?如图 lnmp中nginx启动报错 LNMP上传网站后无法访问? 安完lnmp环境,gd库都安装成功,重启nginx,里面放了商城程序,在商城注册用户时,验证码不能正常显示? LNMP nginx配置伪静态规则 在虚拟机上用nginx怎么搭建lnmp lnmp问题 CPU跑满 lnmp安装中怎么配置nginx 如何在lnmp上部署Thinkphp linux VPS 安装了lnmp,nginx的伪静态规则应该放在那个目录,我绑定了几个域名到VPS,有好几个伪静态。 ubuntu怎样安装lnmp