为了账号安全,请及时绑定邮箱和手机立即绑定

验证码出不来

<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>checkCode</title>
	<script type="text/javascript">
		function reloadCode(){
			var time = new Date().getTime();
			document.getElementById("imagecode").src="<%request.getContextPath();%>/yanzheng/ImageServlet?d="+time;
		}
	</script>
</head>
<body>
	验证码:<input type="text" name="checkcode"/>
		<img alt="验证码" id="imagecode" src="<%request.getContextPath();%>/yanzheng/ImageServlet" />
		<a href="javascript:reloadCode();">看不清楚</a><br>

</body>
</html>




package com.imooc.yanzheng;

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.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ImageServlet
 */
@WebServlet(name="ImageServlet",urlPatterns={"/yanzheng/ImageServlet"})
public class ImageServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ImageServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)  {

		BufferedImage bi = new BufferedImage(66,22,BufferedImage.TYPE_INT_RGB);
		Graphics g = bi.getGraphics();
		Color c = new Color(200,150,255);
		g.setColor(c);
		g.fillRect(0, 0, 68, 22);
		
		char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456798".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();
		}
	
	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

http://img1.sycdn.imooc.com//57a137f500013a4b04880514.jpg

正在回答

3 回答

http://img1.sycdn.imooc.com//57a1525700016bac06670023.jpg


这里路径写错了吧,首先<% 后边缺少一个等号,其次访问路径好像也不太对,建议你看一下你点击获取的时候路径的变化以及报错信息。

0 回复 有任何疑惑可以回复我~
#1

大咪 提问者

我试试好像你说的是对的。
2016-08-03 回复 有任何疑惑可以回复我~
#2

大咪 提问者

非常感谢!
2016-08-03 回复 有任何疑惑可以回复我~
#3

大咪 提问者

你说的那个是对的,可是还有一个问题啊,老师视频里我记得貌似他前面的根目录路径打的时候就是<%request.getContextPath();%>这样的吧。。。
2016-08-03 回复 有任何疑惑可以回复我~
#4

大咪 提问者

。。我又看了一遍,我的问题。。。老师最后补上了。。谢谢了
2016-08-03 回复 有任何疑惑可以回复我~
查看1条回复

不是的,jsp表达式使用的就是<%= %>这样的方式,你应该是看错了。

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

path是获取的根目录,你也可以写<%=path>/......路径/.

0 回复 有任何疑惑可以回复我~
#1

大咪 提问者

OK,我懂了谢谢啦
2016-08-04 回复 有任何疑惑可以回复我~
#2

大咪 提问者

你的头像是敌法!。。 你也打dota2吗
2016-08-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

验证码出不来

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信