900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 实现简单的登录界面(用户 密码 验证码)

实现简单的登录界面(用户 密码 验证码)

时间:2020-04-15 21:44:05

相关推荐

实现简单的登录界面(用户 密码 验证码)

LoginController类,登录界面

package cn.edu.mju.project1.project1.controller;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.io.IOException;import java.io.PrintWriter;/*** servlet 网页登录功能* @author hll* @date /4/11 13:00 下午*/@WebServlet("/login")public class LoginController extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {StringBuilder stringBuilder =new StringBuilder();stringBuilder.append("<form action='' name='submit' method='post'>");stringBuilder.append("登录名称:<input type='text' name='loginName' /><br>");stringBuilder.append("登录密码:<input type='password' name='loginPwd' /><br>");stringBuilder.append("验证码:<input type='text' name='validCode'/><img src='../captche' width=100 height=80 /><br>");stringBuilder.append("<input type='submit' name='btnLogin' value='登录' /><br>");stringBuilder.append("<form>");showMsg(resp,stringBuilder.toString());//stringBuilder.toString()生成一个字符串对象}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String loginName = req.getParameter("loginName");String loginPwd = req.getParameter("loginPwd");String validCode = req.getParameter("validCode");String saveCode = (String)req.getSession().getAttribute("code");String str=null;if(saveCode != null){if(saveCode.equals(validCode)){if("02".equals(loginName) && "1234".equals(loginPwd)){str = "你好," +loginName;}else{str="账号或密码错误";}}else{str = "验证码输入错误,请重新输入";}}else{str = "请输入验证码";}showMsg(resp, str);}private void showMsg(HttpServletResponse resp,String msg){resp.setCharacterEncoding("utf-8");try {PrintWriter out = resp.getWriter();out.println("<html>");out.println("<header>");out.println("<meta charset=\"utf-8\">");out.println("<title>Login</title>");out.println("</header>");out.println("<body>");out.println(msg);out.println("</body>");out.println("</html>");out.close();}catch (Exception ex){System.out.println(ex.getMessage());}}}

CaptcheController类,验证码的生成

package cn.edu.mju.project1.project1.controller;import cn.edu.mju.project1.project1.util.StrUtil;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;import java.awt.*;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;/*** servlet 用来随机生成多个字符验证码* @author hll* @date /4/11 14:00 下午*/@WebServlet("/captche")public class CaptcheController extends HttpServlet{private final int WIDTH = 100;private final int HEIGTH = 80;private Random rd = new Random();//定义随机数对象private static final int Lines = 18;//干扰线数private static final int Ovals = 150;//噪点数@Override// 重写service方法protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//创建空白图片BufferedImage img = new BufferedImage(WIDTH,HEIGTH,BufferedImage.TYPE_INT_RGB);Graphics g = img.getGraphics(); //获取图片画笔g.setColor(Color.white);//设置画笔颜色g.fillRect(0,0,WIDTH,HEIGTH);//绘制矩形背景g.setColor(StrUtil.getRandomColor());g.setFont(new Font("Times New Roman" , Font.BOLD, 30));String code = StrUtil.randString(4);HttpSession session = req.getSession();//获取session对象session.setAttribute("code" , code);//获取值g.drawString(code,25,45);//画干扰线for(int i = 0; i < Lines; i++){g.setColor(StrUtil.getRandomColor());int x1 = rd.nextInt(WIDTH);int y1 = rd.nextInt(HEIGTH);int x2 = rd.nextInt(WIDTH);int y2 = rd.nextInt(HEIGTH);//随机画线g.drawLine(x1 , y1 , x2 , y2);}//添加噪点for(int i = 0;i < Ovals; i++){g.setColor(StrUtil.getRandomColor());int x = rd.nextInt(WIDTH);int y = rd.nextInt(HEIGTH);g.drawOval(x , y , 1, 1);//随机画噪点}g.dispose();ServletOutputStream out = resp.getOutputStream();//输出图片ImageIO.write(img,"jpg",out);try {out.flush();}finally {out.close();}}}

StrUtil类,实现生成随机字符串,随机取色功能

package cn.edu.mju.project1.project1.util;import java.awt.*;import java.util.Random;/*** @author hll* @date -04-11 15:04*/public class StrUtil {// 生成随机字符串public static String randString(int count){StringBuilder builder = new StringBuilder();String str = "abcdefghijklmnopqrstuvwxyz0123456789";Random rnd = new Random();//生成随机数for (int i=0; i<count ; i++){int pos = rnd.nextInt(str.length());//随机生成字符索引String s = str.substring(pos,pos+1);builder.append(s);}return builder.toString();}//随机取色public static Color getRandomColor() {Random ran = new Random();Color color = new Color(ran.nextInt(256),ran.nextInt(256), ran.nextInt(256));return color;}}

运行后在浏览器打开结果如下图:

登陆成功会出现如下图:

账号或密码错误会出现如下图:

验证码输入错误会出现如下图:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。