servlet实现验证码登录

//用户登录HTML页面




    
    用户登录


    

登录界面


用户名: *

密   码: *

换一张
验证码: *

--------------------------------------------------------------------------------------- //获取验证码的servlet页面 package com.westos.web01.servlet; import org.apache.commons.lang3.RandomUtils; 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; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; @WebServlet(name = "YzmServlet") public class YzmServlet extends HttpServlet { String str=""; private static final int WIDTH = 100; private static final int HEIGHT = 40; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("image/jpg"); //产生一张图片 BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); //填充背景 g.fillRect(0, 0, WIDTH, HEIGHT); //设置背景色 g.setColor(Color.WHITE); //设置前景色 g.setColor(Color.RED); //设置字体 Font font = new Font("微软雅黑", Font.BOLD, 20); g.setFont(font); //获取随机字母 str= genRandomString(4); //验证码传 HttpSession session = request.getSession(); session.setAttribute("d",str); //绘制验证码 g.drawString(str, 10, 30); //绘制点 for (int i = 0; i < 200; i++) { int x = RandomUtils.nextInt(0, WIDTH); int y = 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(x, y, x, y); } //绘制直线 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()); // ImageIO.write(image,"jpg",new File("e:\\yzm.jpg")); } private String genRandomString(int len) { String result = ""; //获取len个验证码字母 for (int i = 0; i < len; i++) { char c = (char) RandomUtils.nextInt(65, 91); result = result + c ; } return result; } } ----------------------------------------------------------------------------------- //判断用户信息输入是否正确 package com.westos.web01.servlet; 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 java.io.IOException; @WebServlet(name = "JudgeServlet") public class JudgeServlet 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 myusername="用户"; String mypassword="666"; //获取输入框中的用户名、密码及验证码 String username=request.getParameter("username"); String password=request.getParameter("password"); String yzm=request.getParameter("yzm"); //验证码接收 HttpSession session = request.getSession(); String s=(String) session.getAttribute("d"); //判断登录是否正确 if((myusername.equals(username))&&(mypassword.equals(password))&&(yzm.equalsIgnoreCase(s))&&(yzm!=null)&&(s!=null)){ response.getWriter().println(" "); response.getWriter().println("

登录成功后的界面

"); }else if(username==""||password==""||yzm==""){ response.getWriter().println(" "); response.getWriter().println(""); }else if((myusername.equals(username))&&(mypassword.equals(password))&&(!yzm.equalsIgnoreCase(s))) { response.getWriter().println(" "); } else response.getWriter().println(" "); } } ---------------------------------------------------------------------------------- //配置servlet java web01 java web01 YzmServlet com.westos.web01.servlet.YzmServlet YzmServlet /login JudgeServlet com.westos.web01.servlet.JudgeServlet JudgeServlet /judge

 

你可能感兴趣的:(JavaWeb)