網頁登陸註冊(jsp實現)驗證碼

這是一個登陸頁面,有登陸驗證和驗證碼的功能
(1)生成驗證碼的servlet:
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 java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class YzmServlet extends HttpServlet {
//設置驗證碼圖片的寬度
private static final int WIDTH = 100;
//設置驗證碼的高度
private static final int HEIGHT = 80;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                    //產生一張圖片
        BufferedImage image=new BufferedImage(Width,Height,BufferedImage.TYPE_INT_RGB);
    response.setHeader("Pragram","no-cache");
    response.setHeader("Cache-Control","no-catch");
    response.setDateHeader("Exprires",0);
    Graphics g=image.getGraphics();
            //設置背景顏色
    g.setColor(Color.WHITE);
            //填充圖片
    g.fillRect(0,0,Width,Height);
            //設置驗證碼顏色
    g.setColor(Color.RED);
            //設置驗證碼字體及大小
    Font font=new Font("微軟雅黑",Font.BOLD,20);
            //獲取驗證碼
    String str=getRandomString(4);
            //獲取session
   HttpSession session=request.getSession();
         //給str做標記
   session.setAttribute("str",str);
         //在圖片中畫出驗證碼
    g.drawString(str,50,50);
            //在圖片中隨機劃線
    for (int i=0;i<15;i++){
        int x1= RandomUtils.nextInt(0,Width);
        int x2=RandomUtils.nextInt(0,Width);
        int y1=RandomUtils.nextInt(0,Height);
        int y2=RandomUtils.nextInt(0,Height);
                            Color color=new Color(RandomUtils.nextInt(0,255),RandomUtils.nextInt(0,255),RandomUtils.nextInt(0,255));
        g.setColor(color);
        g.drawLine(x1,y1,x2,y2);
    }
            //輸出圖片
    ImageIO.write(image,"jpg",response.getOutputStream());
}

}

(2)登陸驗證的servlet:
import org.apache.commons.lang3.RandomUtils;

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.io.IOException;

public class LoginServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    request.setCharacterEncoding("utf-8");
            //獲取輸入的驗證碼的值
    String yzm=request.getParameter("yzm");
            //獲取輸入的用戶名
    String username=request.getParameter("username");
            //獲取輸入的密碼
    String userpassword=request.getParameter("userpassword");
            //獲取session
    HttpSession session=request.getSession();
            //獲取session標記的值,即服務端生成的驗證碼的值
    String yzm2=(String) session.getAttribute("str");
   //比較驗證碼
         if (yzm.equals(yzm2)){
       if(username.equals("zhangsan")&&userpassword.equals("123456")){
           response.getWriter().print("登陸成功");
       }else{
           response.getWriter().print("用戶名或密碼錯誤");
       }

    }else{
        response.getWriter().print("驗證碼錯誤");
    }

}

}
(3)登陸界面(比較簡陋)
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登陸</title>
</head>
<script type="text/javascript">
function refreshImg() {
document.getElementById("y").src="./Yzm";
}

</script>

<body>
<table width="760px" height="100%" align="center" style="background-color: azure">
<tr>
<td>
<div align="center"></div>
<table width="200" height="300">
<tr>
<td>
<form action="./Login" name="form1" method="post">
用戶名:<input type="text" name="username">
密   碼:<input type="password" name="userpassword">
<a>
<img id="y" name="y" src="./Yzm" height="100" onclick="refreshImg()">
</a>
<button type="submit" value="看不清?" style="background-color: red" onclick="refreshImg()">看不清?</button><br>
驗證碼:<input type="text" name="yzm" id="yzm" style="width: 30px" onclick="refreshImg()"><br>

                     <button type="submit" onclick="check()">提交</button>
                     <button type="reset">重置</button>
                 </form>
             </td>
         </tr>
        </table>
        </div>
    </td>
</tr>

</table>

</body>
</html>
(4)配置web.xml
<?xml version="1.0" encoding="utf-8"?>

Welcome to Tomcat Welcome to Tomcat LoginServlet servlet.LoginServlet LoginServlet /Login YzmServlet servlet.YzmServlet YzmServlet /Yzm **界面還有一些問題,不能更換驗證碼.**
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章