亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

jsp實現簡單圖片驗證碼功能

瀏覽:168日期:2022-06-07 17:43:02

本文實例為大家分享了jsp實現簡單圖片驗證碼的具體代碼,供大家參考,具體內容如下

一、實現的功能分析

(1)在登陸頁面加驗證碼的功能,起到一定的安全性。在輸入正確的驗證碼,用戶名和密碼的情況下,才可以實現登錄。
(2)實現查詢數據庫的功能。在登陸后的頁面中,顯示用戶名和密碼,并且設置有一個超鏈接,實現查詢數據庫的功能。
(3)代碼核心是:隨機生成驗證碼,并且顯示在頁面上。同時要和輸入框中的輸入驗證碼進行校驗。
(4)主頁面使用img標簽的src屬性引入驗證頁面的jsp文件。
(5)驗證碼的實現頁面使用BufferedImage類的方法產生圖片。
(6)使用Graphics類的各種方法實現驗證碼的構成。

二、代碼實現

(1)登錄頁面:index.jsp文件。

<%@ page language="java" contentType="text/html; charset=utf-8"? ? pageEncoding="utf-8"%><!DOCTYPE html><html><head><meta charset="utf-8"><title>登錄頁面</title></head><body><form action="LoginServlet" method="post">? ? ? ?用戶名:<input name="username" type="text" value=""/><br/><br/>? ? ? ?密碼:<input name="password" type="password" value=""/><br/><br/>? ? ? ?? ? ? ?? ? ? ? 驗證碼: <input type="text" name="checkCode" height="20px " value=""/>? ? ? <img src="CodeServlet"/><span>${error_code}</span><br/>? ? ? ?<input type="submit" value="提交"></form></body></html>

(2)登錄后的頁面:user.jsp文件。

<%@ page language="java" contentType="text/html; charset=utf-8"? ? pageEncoding="utf-8"%><%@ ?page import = "com.entity.Author"%><!DOCTYPE html><html><head><meta charset="utf-8"><title>顯示登錄用戶的用戶名和密碼頁面</title></head><body><% ?? ? //內置對象? ? request.setCharacterEncoding("utf-8");? ? //獲取交互層放入session中的obj? ? Author obj = (Author)session.getAttribute("authorInfo");? ??? ? if(obj != null){? ? ?? ?out.print("<p>用戶名:"+obj.getName()+"</p>");? ? ?? ?out.print("<p>密碼:"+obj.getId()+"</p>");? ? }? ? else{? ? ?? ?response.sendRedirect("index.jsp");? ? }%><br/><a href="AuthorServlet">用戶信息查詢 </a></body></html>

(3)實現數據查詢頁面:ueslist.jsp文件。

<%@ page language="java" contentType="text/html; charset=utf-8"? ? pageEncoding="utf-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html><html><head><meta charset="utf-8"><title>查詢信息顯示頁面</title></head><body><table border="1">? <tr>? ? ? ? ?<td>編號</td>? ? ? ? ?<td>名稱</td>? ? ? ? ?<td>價格</td>? ? ? ? ?<td>數量</td>? ? ? ? ?<td>日期</td>? ? ? ? ?<td>風格</td>? </tr>??? ?<c:forEach items="${authorList}" var="author">? <tr>? ? <td>${author.id}</td>? ? <td>${author.name }</td>? ? <td>${author.price }</td>? ? <td>${author.num }</td>? ? <td>${author.dates}</td>? ? <td>${author.style}</td>? </tr>? </c:forEach></table></body></html>

(4)定義一個Author類,用于接收數據庫中的元素。

package com.entity;//用于獲取數據庫中的元素對象public class Author {?? ?private int id;?? ?private String name;?? ?private int price ;?? ?private int num;?? ?private String dates;?? ?private String style;?? ?public int getId() {?? ??? ?return id;?? ?}?? ?public void setId(int id) {?? ??? ?this.id = id;?? ?}?? ?public String getName() {?? ??? ?return name;?? ?}?? ?public void setName(String name) {?? ??? ?this.name = name;?? ?}?? ?public int getPrice() {?? ??? ?return price;?? ?}?? ?public void setPrice(int price) {?? ??? ?this.price = price;?? ?}?? ?public int getNum() {?? ??? ?return num;?? ?}?? ?public void setNum(int num) {?? ??? ?this.num = num;?? ?}?? ?public String getDates() {?? ??? ?return dates;?? ?}?? ?public void setDates(String dates) {?? ??? ?this.dates = dates;?? ?}?? ?public String getStyle() {?? ??? ?return style;?? ?}?? ?public void setStyle(String style) {?? ??? ?this.style = style;?? ?}}

(5)登錄頁面的交互層:LoginServlet.java文件。用于登錄檢驗和驗證碼匹配。

//交互層(客戶端和服務器的交互)package com.servlet;import java.io.IOException;import java.sql.SQLException;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 com.dao.AuthorDao;import com.entity.Author;/**?* Servlet implementation class LoginServlet?*/@WebServlet("/LoginServlet")public class LoginServlet extends HttpServlet {?? ?private static final long serialVersionUID = 1L;? ? ? ?? ? /**? ? ?* @see HttpServlet#HttpServlet()? ? ?*/? ? public LoginServlet() {? ? ? ? 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?? ??? ?//內置對象request,response?? ??? ?request.setCharacterEncoding("utf-8");?? ??? ??? ??? ?HttpSession session = request.getSession();?? ??? ??? ??? ?//獲取用戶輸入驗證碼?? ??? ?String checkCode = request.getParameter("checkCode");?? ??? ?//獲取session中的驗證碼,也就是CodeServlet中生成的四個字符?? ??? ?String sessionCode = (String)session.getAttribute("sCode");?? ??? ??? ??? ??? ??? ?//驗證碼正確?? ??? ?if(checkCode.equals(sessionCode)) {?? ??? ??? ?//獲取表單數據?? ??? ??? ?String username = request.getParameter("username");?? ??? ??? ?int password = Integer.valueOf(request.getParameter("password"));?? ??? ??? ??? ??? ??? ?//判斷用戶信息是否正確,查詢數據庫獲取用戶信息?? ??? ??? ? AuthorDao ad = new AuthorDao();?? ??? ? ? ? Author obj = ad.check(username, password);?? ??? ? ? ???? ??? ? ? ? //判斷?? ??? ? ? ? if(obj != null) {?? ??? ? ? ??? ???? ??? ? ? ??? ? //重新放入用戶信息?? ??? ? ? ?//?? ? HttpSession session = request.getSession();?? ??? ? ? ??? ? session.setAttribute("authorInfo", obj);?? ??? ? ? ??? ? //設置session的有效期為10秒?? ??? ? ? ??? ? session.setMaxInactiveInterval(10);?? ??? ? ? ??? ???? ??? ? ? ??? ? //頁面轉發?? ??? ? ? ??? ? response.sendRedirect("user.jsp");?? ??? ? ? ? }?? ??? ? ? ? else {?? ??? ? ? ??? ???? ??? ? ? ??? ? //頁面重定向到登錄頁面?? ??? ? ? ??? ? response.sendRedirect("index.jsp");?? ??? ? ? ? }?? ??? ?}?? ??? ?else {?? ??? ??? ?//驗證碼不正確?? ??? ??? ?request.setAttribute("error_code", "驗證碼不匹配");?? ??? ??? ?request.getRequestDispatcher("index.jsp").forward(request, response);?? ??? ?}?? ?}?? ??? ?/**?? ? * @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);?? ?}}

(6)數據庫查詢的交互層:AuthorServlet.java文件。

package com.servlet;import java.io.IOException;import java.util.List;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 com.dao.AuthorDao;import com.entity.Author;/**?* Servlet implementation class AuthorServlet?*/@WebServlet("/AuthorServlet")public class AuthorServlet extends HttpServlet {?? ?private static final long serialVersionUID = 1L;? ? ? ?? ? /**? ? ?* @see HttpServlet#HttpServlet()? ? ?*/? ? public AuthorServlet() {? ? ? ? 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?? ??? ?//設置編碼方式?? ??? ? request.setCharacterEncoding("utf-8");?? ??? ???? ??? ? //查詢用戶列表?? ??? ? AuthorDao ad = new AuthorDao();?? ??? ? //將Dao層中的結果放入list中?? ??? ? List<Author> list = ad.queryAuthorList();?? ??? ? request.setAttribute("authorList", list);?? ??? ???? ??? ? //請求轉發的方式將查詢結果放入request中,再將超鏈接直接訪問AuthorServlet就將信息顯示出來了。?? ??? ? request.getRequestDispatcher("uselist.jsp").forward(request, response);?? ??? ???? ??? ???? ?}?? ?/**?? ? * @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);?? ?}}

(7)定義一個AuthorDao類實現查詢數據庫和檢驗登錄的用戶名和密碼。

//用于檢驗登錄頁面所填入信息是否正確package com.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.entity.Author;public class AuthorDao {?? ??? ?public Author check(String username ,int password)?? ?{?? ??? ?Author obj = null ;?? ??? ?try {?? ??? ??? ??? ?DBConnection db = new DBConnection();?? ??? ??? ??? ?//獲取數據庫連接?? ??? ??? ??? ?Connection conn = db.getConn();?? ??? ??? ??? ?//設置要執行的數據庫語句?? ??? ??? ??? ?String sql = "select *from furnitures where name = ? and id = ?";?? ??? ??? ??? ??? ??? ??? ??? ?PreparedStatement ps = ?conn.prepareStatement(sql);?? ??? ??? ??? ?//設置用戶名和密碼放入sql語句?? ??? ??? ??? ?ps.setString(1, username);?? ??? ??? ??? ?ps.setInt(2, password);?? ??? ??? ??? ??? ??? ??? ??? ?//執行sql查詢語句 , 并將執行結果放入結果集中?? ??? ??? ? ? ?ResultSet rs = ps.executeQuery();?? ??? ??? ??? ??? ??? ??? ? ? ?//用戶名和密碼都正確?? ??? ??? ? ? ?if(rs.next()) {?? ??? ??? ? ? ??? ??? ??? ??? ? ? ??? ?//新創建一個obj 將查詢結果放入?? ??? ??? ? ? ??? ?obj = new Author();?? ??? ??? ? ? ??? ?obj.setId(rs.getInt(1));?? ??? ??? ? ? ??? ?obj.setName(rs.getString(2));?? ??? ??? ? ? ??? ?obj.setPrice(rs.getInt(3));?? ??? ??? ? ? ??? ?obj.setNum(rs.getInt(4));?? ??? ??? ? ? ??? ?obj.setDates(rs.getString(5));?? ??? ??? ? ? ??? ?obj.setStyle(rs.getString(6));?? ??? ??? ? ? ?}?? ? ???? ??? ?} catch (SQLException e) {?? ??? ??? ?// TODO Auto-generated catch block?? ??? ??? ?e.printStackTrace();?? ??? ?}?? ??? ??? ??? ?return obj;? }?? ??? ?public List<Author> queryAuthorList(){?? ??? ??? ??? ??? ??? ?Author obj = null;?? ??? ?//定義一個list集合,用于存放查詢結果?? ??? ?List<Author> list = new ArrayList<Author>() ;?? ??? ?try {?? ??? ??? ??? ??? ??? ??? ??? ??? ?DBConnection db = new DBConnection();?? ??? ??? ?//獲取數據庫連接?? ??? ??? ?Connection conn = db.getConn();?? ??? ??? ?//設置數據庫要查詢的語句?? ??? ??? ?String sql = "select *from furnitures ";?? ??? ??? ??? ??? ??? ?PreparedStatement ps = conn.prepareStatement(sql);?? ??? ??? ??? ??? ??? ?//執行數據庫查詢語句,并將查詢結果放入結果集?? ??? ??? ?ResultSet rs = ps.executeQuery();?? ??? ??? ??? ??? ??? ?//利用循環將obj放入list集合中?? ??? ??? ?while(rs.next()) {?? ??? ??? ??? ?obj = new Author();?? ??? ??? ??? ??? ??? ??? ??? ?obj.setId(rs.getInt(1));?? ??? ??? ??? ?obj.setName(rs.getNString(2));?? ??? ??? ??? ?obj.setPrice(rs.getInt(3));?? ??? ??? ??? ?obj.setNum(rs.getInt(4));?? ??? ??? ??? ?obj.setDates(rs.getString(5));?? ??? ??? ??? ?obj.setStyle(rs.getString(6));?? ??? ??? ??? ??? ??? ??? ??? ?//將obj加入到list?? ??? ??? ??? ??? ??? ??? ??? ?list.add(obj);?? ??? ??? ??? ??? ??? ??? ?}?? ??? ??? ??? ??? ??? ??? ??? ?} catch (SQLException e) {?? ??? ??? ?// TODO Auto-generated catch block?? ??? ??? ?e.printStackTrace();?? ??? ?}?? ??? ??? ??? ??? ??? ?return list;?? ?}?? ?}

(8)定義一個驗證碼生成CodeServlet類,用于生成驗證碼。

package com.servlet;import java.awt.Color;import java.awt.Font;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.ServletOutputStream;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;@WebServlet("/CodeServlet")public class CodeServlet extends HttpServlet{?? ??? ?//定義驗證碼的源碼?? ?private static final String str ="abcdefghijklmnopqrstuvwxyaABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";?? ??? ?//定義隨機數?? ?private Random random = new Random();?? ??? ?//隨機生成四個字符?? ?public String getStr()?? ?{?? ??? ?String s = "";?? ??? ?int len = str.length();?? ??? ?for(int i=0;i<4;i++) {?? ??? ??? ?s+=str.charAt(random.nextInt(len));?? ??? ?}?? ??? ?return s;?? ?}?? ??? ?//隨機顏色?? ?public Color getColor() {?? ??? ??? ??? ?int red = random.nextInt(256);?? ??? ?int green = random.nextInt(256);?? ??? ?int blue = random.nextInt(256);?? ??? ?Color color = new Color(red,green,blue);?? ??? ??? ??? ?return color;?? ?}?? ?@Override?? ?protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {?? ??? ?// TODO Auto-generated method stub?? ??? ??? ??? ??? ??? ?//生成驗證碼圖片?? ??? ?//畫板?? ??? ?BufferedImage image = new BufferedImage(70,20,BufferedImage.TYPE_INT_RGB );?? ??? ?//畫筆?? ??? ?Graphics pen = ?image.getGraphics();?? ??? ?//矩形?? ??? ?pen.fillRect(0, 0, 70, 20);?? ??? ?//字體?? ??? ?pen.setFont(new Font("微軟雅黑",Font.BOLD,20));?? ??? ??? ??? ?//獲取4個字符?? ??? ?String code = getStr();?? ??? ??? ??? ?//繪制圖片?? ??? ?for(int i=0;i<code.length();i++) {?? ??? ??? ?pen.setColor(getColor());?? ??? ??? ?pen.drawString(String.valueOf(code.charAt(i)), i*15+5, 20);;?? ??? ?}?? ??? ??? ??? ?//response對象繪制圖片到頁面,Servle輸出流進行圖片的輸出?? ??? ?ServletOutputStream sos = resp.getOutputStream();?? ??? ?ImageIO.write(image, "png", sos);?? ??? ??? ??? ?sos.flush();?? ??? ?sos.close();?? ??? ??? ??? ?//驗證碼放入session?? ??? ?HttpSession session = req.getSession();?? ??? ?session.setAttribute("sCode", code);?? ??? ??? ?}?? ?@Override?? ?protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {?? ??? ?// TODO Auto-generated method stub?? ??? ?doPost(req, resp);?? ?}}

(9)創建DBConnectoin.java類用戶獲取數據庫連接。(我用的是mysql)

//獲取數據庫連接package com.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DBConnection {?? ?private static String username="填入自己的數據庫名";?? ?private static String password="填入自己的數據庫密碼";?? ?private static String driver = "com.mysql.jdbc.Driver";?? ?private static String url="jdbc:mysql://localhost:3306/已經創建數據庫名";?? ??? ?private Connection conn;?? ??? ?static {?? ??? ?try {?? ??? ??? ?//加載驅動,捕獲異常?? ??? ??? ?Class.forName(driver);?? ??? ?} catch (ClassNotFoundException e) {?? ??? ??? ?// TODO Auto-generated catch block?? ??? ??? ?e.printStackTrace();?? ??? ?}?? ?}?? ??? ?public DBConnection () throws SQLException {?? ??? ?//連接數據庫?? ??? ?conn = DriverManager.getConnection(url,username,password);?? ?}?? ??? ?//用于獲取conn?? ?public Connection getConn() {?? ??? ?return conn;?? ?}?? ?public void setConn(Connection conn) {?? ??? ?this.conn = conn;?? ?}??? ?}

三、頁面

(1)登錄頁面

(2)數據查詢頁面

(3)查詢結果顯示頁面

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。

標簽: JSP
主站蜘蛛池模板: 国产一久久香蕉国产线看观看 | 亚洲情se| 麻豆国产在线观看一区二区 | 一级毛片国产真人永久在线 | 成人伊人青草久久综合网破解版 | 久久精品中文字幕有码日本 | 亚洲成人中文 | 亚洲成人福利在线观看 | 国产福利在线观看永久视频 | 新加坡毛片 | 亚洲人和日本人hd | freesexvideo性大全 | 草草视频在线观看 | 在线免费观看h片 | 黄色片视频在线 | 日本久久久久中文字幕 | 国产挤奶水在线视频播放 | 美国大黄一片免费看 | 日韩亚洲制服丝袜中文字幕 | 最新国产三级在线不卡视频 | 成人看片在线观看 | 日本在线观看免费看片 | 欧美综合色区 | 欧美特级黄色片 | 精品国产午夜久久久久九九 | 国产精品嫩草影院99av视频 | 91精品国产综合久久精品 | 毛片色| 国产精品视频一区二区三区不卡 | 免费一级欧美片片线观看 | 欧美国产在线一区 | 免费黄色国产视频 | 综合久久久久久久综合网 | 亚洲欧美一区二区三区在线观看 | 午夜色综合| 亚洲在线视频 | 免费看大片的 | 欧美亚洲国产日韩一区二区三区 | 国产日韩欧美在线视频免费观看 | 国产午夜人做人视频羞羞 | 国产亚洲高清在线精品99 |