登录界面:
<!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>
用户验证:
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); } }
验证码:
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); } }