JSP&BeanUtils

 

 

 页面验证码  JAVA GUI

 

登录JSP

<%--
  Created by IntelliJ IDEA.
  User: QuietHR
  Date: 2018/8/17
  Time: 23:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
    <script type="text/javascript">
        function  changeImg(img) {
            img.src="/jsp/checkcodeServlet?r=" + Math.random();
        }

    </script>
</head>

<body>

    <form action="/jsp/loginServlet" method="post">
        用户名<input type="text" name="username"><br/><br/>
        密&nbsp;&nbsp;&nbsp;码 <input type="password" name="password"><br/>
        验证码 <input type="text" name="code_name">&nbsp;&nbsp;&nbsp;
        <img src="/jsp/checkcodeServlet" onclick="changeImg(this)"><br/><br/>
        &nbsp;&nbsp;&nbsp;<input type="submit" value="登录">
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${message == null ? "" : message}

    </form>
</body>
</html>

验证码类



import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

public class CheckcodeServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");

        int width = 120;
        int height = 40;

        // 1 生成画布 类似于画纸
        BufferedImage bufi = new BufferedImage(width , height, BufferedImage.TYPE_INT_RGB);
        // 3 获取画笔
        Graphics g = bufi.getGraphics();
        // 4 填充背景色
        g.setColor(Color.white);
        g.fillRect(0, 0, width, height);
        // 5 绘制边框
        g.setColor(Color.red);
        g.drawRect(0, 0, width-1, height-1);
        // 6 填写随机字符
        // 6.1 准备数据
        String data = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
        // 6.2 准备随机对象
        Random r = new Random();
        // 6.3 绘制4个字符
        String code="";
        for(int i=0; i<4; i++) {
            // 6.3.2 设置字体
            g.setFont(new Font("楷体", Font.BOLD, 30));
            // 6.3.3 设置随机颜色
            g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
            // 6.3.1 绘制字符
            String str = data.charAt(r.nextInt(data.length())) + "";
            g.drawString(str, 10 + i*28, 30);

            code+=str;

        }

        Cookie cookie= new Cookie("code",code);
        cookie.setMaxAge(60);
        response.addCookie(cookie);


        // 7 绘制干扰线
        for(int i=0;i<5;i++) {
            // 7.1 设置随机颜色
            g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
            // 7.2 绘制干扰线
            g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height));
        }

        // 2 将画纸输出到浏览器
        ImageIO.write(bufi, "jpg", response.getOutputStream());





    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

}

 

登录类



import com.hrh.domain.User;
import com.hrh.service.UserService;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

public class LoginServlet 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 {
        //System.out.println("LoginServlet");
        response.setContentType("text/html;charset=utf-8");

        String code_name = request.getParameter("code_name");
        String code="";


        Cookie[] cookies = request.getCookies();

        for (Cookie cookie : cookies) {
            if(cookie.getName().equals("code")) {

                code = cookie.getValue();
                cookie.setMaxAge(0);

            }
        }


        if(!code.equalsIgnoreCase(code_name)){
            request.setAttribute("message","<font color='red'>验证码错误<font/>");
            request.getRequestDispatcher("/login.jsp").forward(request,response);

        }



        Map<String, String[]> parameterMap = request.getParameterMap();
        User user=new User();
        try {
            BeanUtils.populate(user,parameterMap);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        UserService userService = new UserService();
        boolean flag=userService.isLogin(user);


        if(flag){
            response.sendRedirect("/jsp/index.jsp");
        }else{
            request.setAttribute("message","<font color='red'>账号或密码错误<font/>");
            request.getRequestDispatcher("/login.jsp").forward(request,response);
        }



    }
}

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值