验证码不显示

来源:2-2 验证码的代码实现

qq_柒分醉_03927370

2016-10-13 21:06

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>

<%

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 'index.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>

验证码:<input type="text" name = "checkcode"/>

             <img alt="验证码"    src="<%= request.getContextPath();%>/servlet/ImageServlet"/>

             <<a href="javascript:reloadCode();">看不清楚</a><br>

  </body>

</html>



package com.Servlet;


import java.awt.Color;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.util.Random;


import javax.imageio.ImageIO;

import javax.imageio.spi.ImageWriterSpi;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


public class ImageServlet extends HttpServlet {



public  void doGet( HttpServletRequest request,HttpServletResponse response){

BufferedImage bi = new BufferedImage(68, 26,BufferedImage.TYPE_INT_RGB);

Graphics g = bi.getGraphics();

Color c = new Color(200, 150, 255);

g.setColor(c);

g.fillRect(0, 0, 68, 26);

char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789".toCharArray();

Random r = new Random();

int len = ch.length,index;

StringBuffer sb = new StringBuffer();

for (int i = 0; i <4; i++) {

index = r.nextInt(len);

g.setColor(new Color(r.nextInt(88),r.nextInt(188),r.nextInt(255)));

g.drawString(ch[index]+" ", (i*15)+3,18 );

sb.append(ch[index]);

}

request.getSession().setAttribute("piccode",sb.toString() );

try {

ImageIO.write(bi, "JPG", response.getOutputStream());

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}


写回答 关注

5回答

  • qq_小二_9
    2016-10-18 09:22:09

    选择创建Servlet类 ,不要自己手敲,他会自动生成web配置  把那个访问servlet的路径直接复制在JSP页面上

    qq_梦想在... 回复weibo爱...

    把你做的这个项目直接删除,重新做。在建ImageServlet class文件时,直接建一个servlet文件,把ImageServlet的程序直接复制过去就好了,servlet文件会自动生成xml都不需要配置,就可以直接运行了。

    2016-11-27 12:39:25

    共 2 条回复 >

  • _犊子哥哥_
    2016-10-15 18:28:33

    貌似是imagecodeservlet那个servlet根本没有执行,我也遇到一样的问题了,还没有解决,楼主有解了不?

    浮生半夏1

    解决了吗?

    2018-01-17 23:22:07

    共 1 条回复 >

  • qq_柒分醉_03927370
    2016-10-14 14:49:00

    web.xml里的字母大小写问题。找出来原因了

  • 七夕海堂
    2016-10-14 14:29:43

    图片地址中的 src="<%= request.getContextPath();%>/servlet/ImageServlet"去掉里面的分号再试试

  • han911223
    2016-10-14 14:26:25

    你的Web.xml文件配置了吗?贴出来看看

Java实现验证码制作

本教程就会带大家学习使用java实现各种验证码的方法

59909 学习 · 128 问题

查看课程

相似问题