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 2020/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 2020/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 2020-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;}
}

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

登陆成功会出现如下图:

账号或密码错误会出现如下图:
验证码输入错误会出现如下图:

实现简单的登录界面(用户,密码,验证码)相关推荐

  1. swing和MySQL登录注册_JavaSwing+Mysql实现简单的登录界面+用户是否存在验证

    原生Java+mysql登录验证 client login.java 功能:实现登录页面,与服务端传来的数据验证 package LoginRegister; import java.awt.Cont ...

  2. ASP .NET登录界面用户验证码代码

    //ASP .NET用户登录界面经常用到验证码代码如下 private void Page_Load(object sender, System.EventArgs e)   {    // 在此处放 ...

  3. ubuntu卡在用户登录界面,密码正确进不去主界面。问题解决。

    进入ubuntu时,卡在用户登录界面,密码输入正确,却无法进入主界面,网上查找原因,主要有三方面. 环境变量问题.回忆一下自己最近有没有在 .bashrc, .profile , /etc/profi ...

  4. PyQt5制作一个简单的登录界面

    最近在学习GUI设计,分享做的一些小项目. 这篇文我们讲一下如何制作一个简单的登录界面. 目录 一.效果图 二.简述制作过程: 三.源码及材料: 1.源码: 2.图片素材: 一.效果图 如下: 二.简 ...

  5. 通过LabVIEW设计简单的登录界面

    设计思路: 当密码等于所写定的字符串后,显示登录成功:密码错误时,显示用户名或密码错误,请重新输入. 点击登录或取消便可停止循环,通过条件结构实现. 前面板设计: 登录背景可直接将图片复制粘贴,通过重 ...

  6. java qq登录成功界面_java实现简单QQ登录界面

    本文实例为大家分享了java实现简单QQ登录界面的具体代码,供大家参考,具体内容如下 java在图形界面,不是太强项,但不是不可以做,它的开源是very nice! 实现代码如下(想实现完美的界面,可 ...

  7. 【Swing 2】布局管理器与简单的登录界面

    很苦逼的是,每次想记录一个小程序,发现,要给别人讲清楚,总是得分很多模块讲解. 所以今天来讲下Swing组件的三大布局管理器. 参考:<Head First Java>第十三章 1. Bo ...

  8. 一对一直播源码,实现一个简单的登录界面

    一对一直播源码,实现一个简单的登录界面 1.html <!DOCTYPE html> <html lang="en"> <head><me ...

  9. JAVA实现简单的登录界面

    我本来是学C++的,然后课程上老师要求做一个登陆界面,用C++实现不限时,然后就选择了JAVA,从零开始自学JAVA.好在网上很多大佬都写了如何用JAVA编写登陆界面的博客,写得很详细,使得我第一次接 ...

  10. C#实现登录界面,密码星号显示(隐藏输入密码)

    C#实现登录界面,密码星号显示(隐藏输入密码) 属性解释 代码 效果 工程 在软件设计时,往往需要设置用户的登录权限.用户在填写密码时,如何实现输入隐藏,或者以"*"号进行隐藏显示 ...

最新文章

  1. python导入模块时的路径疑惑
  2. navicat for mysql 显示中文乱码解决办法
  3. 封送处理您的数据:利用 COM 和 Windows 2000 的高效传输数据的技术
  4. 视频测试序列的下载地址
  5. 年薪40W+还招不到人!人工智能到底有多火?(附人工智能+Python 自学视频资料)...
  6. vue 组件根元素显示优化
  7. 1614. 括号的最大嵌套深度
  8. [js]js设计模式-构造函数模式
  9. 安装python报错
  10. 展示全面快速响应能力 华为全线解决方案亮相北京国际通信展
  11. C语言社区水电费管理系统,C语言水电费管理系统.doc
  12. linux看caj文件格式,CAJ 文件扩展名: 它是什么以及如何打开它?
  13. 海康摄像头忘记密码,自己如何快速重置密码
  14. 花园多层住宅设计CAD施工图教程分享
  15. Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting的简单介绍
  16. c语言程序编写字体,c语言程序设计练习题
  17. 钽电容的作用,钽电容滤波好的原因
  18. python中字典的键是唯一的吗_python 零散记录(四) 强调字典中的键值唯一性 字典的一些常用方法...
  19. 机器学习文章引用参考
  20. 工信部:深入推进制造和网络强国建设

热门文章

  1. 直流电机反接制动调速 基于双向PWM变换器的直流电机反接制动调速 直流电机双闭环调速
  2. gif动画怎么加文字?如何在线添加gif文字
  3. 如何写好一份在线TOB的产品说明文档,这六点很重要
  4. UC3843 PWM控制芯片详解及其应用电路
  5. 看过的觉得好的TED演讲(Update@21/04/18)
  6. 3.3 设银行定期存款的年利率rate为2.25%,已知存款期为n年,存款本金为capital元,试编程计算并输出n年后的本利之和deposit
  7. 如何设置flash builder 4.5语言为英文
  8. mybatis_高级
  9. IOS 苹果推送 APNS(三)
  10. 人到70古来稀,身体的哪些变化属于正常健康范围?如何做有益长寿?