登录验证码由servlet实现
简单的登录验证码由servlet实现
- 创建包util,类ImageServlet

package util;import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;public class ImageServlet extends HttpServlet {public ImageServlet() {super();}@Overridepublic void destroy() {super.destroy();}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("text/html;charset=utf-8");int width=78;int height=20;//创建对象BufferedImage bim=new BufferedImage(68,20,BufferedImage.TYPE_INT_RGB);/*获取图片对象bim的图形上下文对象g,这个g的功能如同一支绘图笔,程序中使用这支笔来绘制、修改图片对象bim*/Graphics g=bim.getGraphics();Random rm=new Random();g.setColor(new Color(rm.nextInt(100),205,rm.nextInt(100)));g.fillRect(0,0,width,height);StringBuffer sbf=new StringBuffer();//输出数字for(int i=0;i<4;i++){g.setColor(Color.black);g.setFont(new Font("微软雅黑",Font.BOLD|Font.ITALIC,22));int n=rm.nextInt(10);sbf.append(n);g.drawString(""+n,i*15+5,18);}//生成的验证码保存到session中HttpSession sn=req.getSession();sn.setAttribute("piccode",sbf);//禁止缓存resp.addHeader("Prama","no-cache");resp.setHeader("Coche-Control","no-cache");resp.setDateHeader("Expires",0);resp.setContentType("image/jpeg");//将bim图片以"jpg"格式返回给浏览器ImageIO.write(bim,"JPG",resp.getOutputStream());resp.getOutputStream().close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}@Overridepublic void init() throws ServletException {super.init();}
}
2.配置web.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><servlet-name>ImageServletservlet-name><servlet-class>util.ImageServletservlet-class>servlet><servlet-mapping><servlet-name>ImageServletservlet-name><url-pattern>/ImageServleturl-pattern>servlet-mapping>
web-app>
3.创建登录界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录title><script>function reloadImage(t) {t.src="ImageServlet?flag="+Math.random();}script>
head>
<body><div align="center"><form action="checkUser.jsp" method="post"><table bgcolor="#e7daff"><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>div>
body>
html>
4.创建javabean,里面java代码用来连接数据库,与jsp部分相分离来
package bean;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class DBcon {private String str="com.mysql.cj.jdbc.Driver";private String root="root";private String password="2001223";private String url="jdbc:mysql://localhost:3306/users";public Connection getconnection() throws ClassNotFoundException, SQLException {Class.forName(str);return DriverManager.getConnection(url,root,password);}
}
5.创建登录验证的jsp文件
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="db" class="bean.DBcon" scope="request">jsp:useBean>
<html>
<head><title>登录验证title>
head>
<body><%request.setCharacterEncoding("utf-8");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>你输入的用户名是:<%=username%><br>你输入的密码是:<%=password%><br><hr><%Connection con=db.getconnection();Statement stmt=con.createStatement();String sql="select * from userinfo";sql+=" where loginname='"+username+"' and password='"+password+"'";ResultSet rs=stmt.executeQuery(sql);if(checkcode.equals(piccode)&&rs.next()){session.setAttribute("userName",username);out.print("<span style='color:green'>恭喜你,验证通过!span><br><br>");out.print("<a href='main.jsp'>转向主页面a>");}else {out.print("<span style='color:red'>验证错误或无此用户或密码错误,登录失败!span><br>");out.print("<a href='login.jsp'>重新登录a>");}%>
body>
html>
6.运行效果图



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
