实现简单的登录界面(用户,密码,验证码)
生活随笔
收集整理的這篇文章主要介紹了
实现简单的登录界面(用户,密码,验证码)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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;} }運行后在瀏覽器打開結果如下圖:
登陸成功會出現如下圖:
賬號或密碼錯誤會出現如下圖:
驗證碼輸入錯誤會出現如下圖:
總結
以上是生活随笔為你收集整理的实现简单的登录界面(用户,密码,验证码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国古代地方官制------地方行政机构
- 下一篇: SI和DI寄存器