登录界面:

<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>用户登录</title>

<link rel="stylesheet" type="text/css" href="css/style.css">

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/vector.js"></script>

</head>
<body>

<div id="container">
    <div id="output">
        <div class="containerT">
            <h1>用户登录</h1>
            <form class="form" id="entry_form" action="LoginServlet" method="post">
                <input type="text" placeholder="用户名" id="entry_name"  name="name">
                <input type="password" placeholder="密码" id="entry_password" name="password">
                <input type="text"  placeholder="验证码" name="checkCode" />
                <img src="CodeServlet"/><br/>
                <span>${error_code }</span><br/>
                <button type="submit" id="entry_btn">登录</button>
                <br>
                <input type="button" value="注册" onClick="location.href='register.jsp'">
                <div id="prompt" class="prompt"></div>
            </form>
        </div>
    </div>
</div>

<script type="text/javascript">
    $(function(){
        Victor("container", "output");   //登录背景函数
        $("#entry_name").focus();
        $(document).keydown(function(event){
            if(event.keyCode==13){
                $("#entry_btn").click();
            }
        });
    });
</script>
<div style="text-align:center;">
</div>
</body>
</html>
login

用户验证:

package com.servlet;

import java.io.IOException;
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.bean.Players_user;
import com.dao.usersDao;

/**
 * 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
        //response.getWriter().append("Served at: ").append(request.getContextPath());
        
        //内置对象request response 内置对象
        request.setCharacterEncoding("UTF-8");
        //获取session
        HttpSession session=request.getSession();
        

        //获取用户输入的验证码
        String checkCode=request.getParameter("checkCode");
        //获取session中的验证码
        String sessionCode=(String)session.getAttribute("sessionCode");
        System.out.println("session中"+sessionCode);
        System.out.println("checkCode中"+checkCode);
        //校验验证码是否正确
        if(checkCode.equals(sessionCode)) {
            

            //接受用户提交的表单数据
            //request对象只对当前数据请求有效,刷新之后,数据丢失
            String players_name=request.getParameter("name");
            String players_password=request.getParameter("password");
            
            
            //判断用户名和密码是否正确
            //查询数据库获取数据信息
            usersDao dao=new usersDao();
            Players_user players_user=dao.CheckLogin(players_name,players_password);
            
         if(players_user!=null) {
             
             
            session.setAttribute("players_user", players_user);
            session.setMaxInactiveInterval(10);//若里面的数值为零或者负值的时候,表示session里面的数值永远有效;
            //若里面的数值为正的时候表示session的有效时间,单位为秒
            
            if(players_name.equals("admin"))
            {
                 response.sendRedirect("teams.jsp");
                 return;
            }
            
            response.sendRedirect("players.jsp");
            }else {
                response.sendRedirect("login.jsp");
            }
            
        }else {
            //验证码不对
            request.setAttribute("error_code", "验证码不匹配");
            request.getRequestDispatcher("login.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);
    }

}
LoginServlet

验证码:

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

/**
 * Servlet implementation class CodeServlet
 */
@WebServlet("/CodeServlet")
public class CodeServlet extends HttpServlet {

    private static final Object code = null;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        //response.getWriter().append("Served at: ").append(request.getContextPath());
            int length=100;
            int height=20;

            //1.创建一对象,验证码图片对象
            BufferedImage image = new BufferedImage(length, height, BufferedImage.TYPE_INT_RGB);
            //2.美化图片,填充背景色
            Graphics gra = image.getGraphics();
            //设置背景填充颜色
            gra.setColor(Color.white);//设置填充颜色
            gra.fillRect(0,0,length,height);//设置填充范围
            //设置字体、加粗、斜体、大小
            gra.setFont(new Font("微软雅黑",Font.BOLD,20));
            //设置字体的随机颜色数组
            Color[] colors= new Color[]{Color.BLUE,Color.GREEN,Color.RED};
            //创建要出现的验证码字符串
            String str="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

            Random random = new Random();
            String code="";
            for (int i = 1; i <=4; i++) {
                //生成随机角标索引
                int index = random.nextInt(str.length());
                //获取随机字符
                char c = str.charAt(index);
                code+=c;
                //设置随机字符的字体随机颜色
                gra.setColor(colors[random.nextInt(colors.length)]);
                //写验证码,以及验证码应该出现的位置
                gra.drawString(c+" ",i*15+5,20);
                // code=code+c;//将生成的单个字符拼接成字符串
            }
            //System.out.println("code中"+code);
            //画2条干扰线,防止被别人破解
            for (int i = 1; i <=2 ; i++) {
                //随机生成x1点和x2点的横坐标位置
                int x1 = random.nextInt(length);
                int x2 = random.nextInt(length);
                //随机生成y1点和y2点的纵坐标位置
                int y1 = random.nextInt(height);
                int y2 = random.nextInt(height);

                //画干扰线,设置随机颜色
                gra.setColor(colors[random.nextInt(colors.length)]);
                gra.drawLine(x1,y1,x2,y2);
            }
            //将图片输出到页面展示
            ImageIO.write(image,"jpg",response.getOutputStream());
            
            response.getOutputStream().flush();
            response.getOutputStream().close();
            
            //把验证码放入session
            HttpSession session=request.getSession();
            session.setAttribute("sessionCode",code);
            
          //  System.out.println("session中"+code);

        }

    /**
     * @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);
    }

}
CodeServlet

 

posted on 2020-07-13 21:56  阡陌祁画  阅读(201)  评论(0编辑  收藏  举报