Servlet 基础知识(3)(利用 Servlet 实现验证码功能)

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+ 
request.getServerPort()+path+"/"; 
%> 
<html> 
<script type="text/javascript"> 
function reloadImage(t){ t.src="./ImageServlet?flag="+Math.random(); 
} 
</script> 
<head> <base href="<%=basePath%>"> </head> 
<body> <center> 
 <form action="checkUser.jsp" method="post"> 
 <table> 
 <tr><td colspan="2" ALIGN=“CENTER”>用户登录</td></tr> 
 <tr><td>登录名:</td><td><input type="text" name="user"></td></tr> 
 <tr><td>密码 </td> 
<td><input type="password" name="password"> </td></tr> 
 <tr><td>验证码</td> 
 <td><input type="text" name="checkcode"> 
 <img src="ImageServlet" align="middle" alt="看不清,点击这里!" 
onclick="reloadImage(this)"></td></tr> 
 <tr><td colspan="2" ALIGN=“CENTER”> 
<input type="submit" value="登录"></td></tr> 
 </table> 
</form></center> 
 </body> 
</html>

 

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

<html>
<head><title>登录验证页面[checkUser.jsp]</title></head> 
<body> 
<% 
 request.setCharacterEncoding("utf-8");//解决 post 提交的中文乱码 
 String username=request.getParameter("user"); 
 String password=request.getParameter("password"); 
 String checkcode=request.getParameter("checkcode"); 
 String piccode=request.getSession().getAttribute("piccode").toString(); 
 %> 
 你输入的验证码是:<%=checkcode %><br> 
 由 Servlet 生成的验证码是:<%=piccode%><br><br> 
 你输入的用户名是:<%=username %><br> 
 你输入的密码是:<%=password%><br><hr> 
<% 
 out.print("<font color=green>恭喜你,通过验证!</font><br><br>"); 
 out.print("<a href='main.jsp'>转向主页面<//a>"); 
 //response.sendRedirect("main.jsp"); //或直接转向主页面 
%>
</body> 
</html>

 

package one;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
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;
import javax.servlet.http.HttpSession;
import javax.swing.ImageIcon;

/**
 * Servlet implementation class ImageServlet
 */
@WebServlet("/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)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		int width = 78;
		int height = 20;
		
		BufferedImage bim = new BufferedImage(68, 20, BufferedImage.TYPE_INT_RGB);
	
		Graphics g = bim.getGraphics();
		Random rm = new Random();
		g.setColor(new Color(rm.nextInt(150), 200, rm.nextInt(150)));
		g.fillRect(0, 0, width, height);
		StringBuffer sbf = new StringBuffer("");  //string
	
		for (int i = 0; i < 4; i++) {
			g.setColor(Color.black);
			g.setFont(new Font("Arial Bold", Font.BOLD | Font.ITALIC, 22));
			int n = rm.nextInt(10);
			sbf.append(n);
			g.drawString("" + n, i * 15 + 5, 18); // drawString(String str,int x,int y)
		}
	
		 HttpSession session = request.getSession(true);
		 session.setAttribute("piccode", sbf.toString());
		response.setHeader("Prama", "no-cache");
		response.setHeader("Coche-Control", "no-cache");
		response.setDateHeader("Expires", 0);
		response.setContentType("image/jpeg");
		ImageIO.write(bim, "JPG", response.getOutputStream());
		response.getOutputStream().close();  
		  }

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

}

猜你喜欢

转载自blog.csdn.net/weixin_62190821/article/details/127610246