SSM框架+Layui框架基础业务逻辑(一)

news2024/10/3 2:20:21

1.获取验证码以及验证码变换

  // 改变验证码图片
   function chageImg(){
       document.getElementById("captchaPic").src="/captcha/getCode?time="+new Date().getTime()
   }
import cn.hutool.captcha.LineCaptcha;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;


@Controller
@RequestMapping("captcha")
public class CaptchaController {

    //获取验证码
    @RequestMapping("getCode")
    public void  getCode(HttpServletResponse response , HttpSession session){
        LineCaptcha lineCaptcha = new LineCaptcha(110, 50, 4, 3);

        String code = lineCaptcha.getCode();
        session.setAttribute("code", code);

        try {
            ServletOutputStream outputStream = response.getOutputStream();
            lineCaptcha.write(outputStream);
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

2.登录验证

在登陆页面填写账户,密码,验证码后  点击登录键获取填写的信息

判断用户名,密码,验证码不为空

通过ajax发送get请求 并携带填写信息data 给与后台 返回结果 res

根据后台返回结果 判断res.code是否为0   为0 跳转主页

  // 进行登录操作
        form.on('submit(login)', function (data) {
            data = data.field;
            if (data.username == '') {
                layer.msg('用户名不能为空');
                return false;
            }
            if (data.password == '') {
                layer.msg('密码不能为空');
                return false;
            }
            if (data.captcha == '') {
                layer.msg('验证码不能为空');
                return false;
            }

            //  发送ajax请求进行登录认证
            $.get('/user/login',data,function (res) {
                if(res.code==0){
                    layer.msg(res.msg,{icon:1},function () {
                        window.location.href="index.html"   // 通过后台请求进行页面跳转     /user/toIndex   转发到 主页面
                    })
                }else{
                    layer.msg(res.msg)
                }
            })
            return false;
        });

前端发送请求 后台接收信息  并向前端返回ResponseResult类型的结果

得到ResponseResult类型的结果步骤:

controller层

判断验证码是否正确

 @RequestMapping("login")
    public ResponseResult login(String username,String password, String captcha,@SessionAttribute("code") String code){
        ResponseResult responseResult = new ResponseResult();
        if(code.equals(captcha)){
            responseResult =  userService.login(username,password);
        }else{
            responseResult.setMsg("验证码不正确");
            responseResult.setCode(500);
        }

        return responseResult ;
    }

 service层

通过  userMapper.selectAll(username) 从数据库中查询数据

若users.size()>0 说明从数据库中查询到该账户  否则该用户不存在

密码匹配 

判断账户状态 status为0 需要联系管理员解封账号  为1 登陆成功

   @Override
    public ResponseResult login(String username, String password) {
        ResponseResult responseResult = new ResponseResult();

        List<User> users = userMapper.selectAll(username);
        if(users.size()>0){
            User user = users.get(0);
            String md5pwd = user.getPassword();
            if(md5pwd.equals(SecureUtil.md5(password))){
                if(user.getStatus()==0){
                    responseResult.setCode(500);
                    responseResult.setMsg("账号被锁定,请联系管理员");
                }else{
                    responseResult.setCode(0);
                    responseResult.setMsg("登录成功");
                }
            }else{
                responseResult.setCode(500);
                responseResult.setMsg("密码不正确");
            }

        }else{
            responseResult.setCode(500);
            responseResult.setMsg("用户名不存在");
        }
        return responseResult;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/95202.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HCIP-Cloud+Service+DevOps+Engineer+V2.0第二章持续规划与设计

学习总结&#xff0c;思维导图整理&#xff0c;免费分享。侵权删除 本博文为HCIP-Cloud Service DevOps Engineer V2.0培训系列内容&#xff0c;[完整学习路径](https://education.huaweicloud.com/programs/ff24fd88-c9f3-4045-9ecd-94afb7eac6ba/about)&#xff1b; 想进一…

[附源码]Python计算机毕业设计公立医院绩效考核系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

【Azure 架构师学习笔记】-Azure Logic Apps(1)-简介

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Logic Apps】系列。 前言 Azure Logic apps的学习也研究源自于最近项目的需要&#xff0c;对于新技术的学习&#xff0c;可以先了解What&#xff0c; why两部分&#xff0c; 也就是这是什么&#xff0c;为什么要用。另…

gin学习

文章目录零、知识补充GOPROXY地址一、准备工作1、安装gin包&#xff08;mod模式&#xff09;2、文档3、测试 hello gin二、GET POST PUT DELETE请求的使用1、修改端口号2、GET 查3、POST 增4、DELETE 删5、PUT 改6、如何取出参数6.1、GET6.2、POST DELETE PUT6.3、URI三、Bind模…

大二《web课程设计》网页制作HTML个人主题青春网站(带psd)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

什么是零拷贝, 从 Java 到 Netty

前言 零拷贝是老生常谈的话题了, 不管是Kafka还是Netty都用到了零拷贝的知识, 本篇着重讲解了什么是零拷贝, 同时在Java和Netty中分别是怎么实现零拷贝的 什么是零拷贝 零拷贝是指计算机在执行IO操作的时候, CPU不需要将数据从一个存储区复制到另一个存储区, 进而减少上下文切…

SDN网络中的转发数据和数据传输

数据驱动的网络 从数据驱动的角度来看网络&#xff0c;会发现一张现实中的网络存在着各种数据。设计和管理一张网络&#xff0c;主要是设计数据&#xff0c;存储数据&#xff0c;管理数据和分析数据。网络数据的规模、复杂度和变化速度&#xff0c;这3方面决定了数据处理的难度…

uni-app+uView实现多图上传功能。

最近使用uni-app开发一个多平台的小项目&#xff0c;项目需要多图上传&#xff0c;uni-app前端UI框架使用了uView UI。结合uView的Upload组件&#xff0c;实现了多图上传功能&#xff0c;多图上传可以限制上传的个数&#xff0c;以及选择设为封面功能。 目录效果图uView Upload…

html简洁漂亮的个人简历,个人主页,个人简介网页版(源码)

文章目录1.设计来源1.1 主界面1.2 基本资料1.3 专业技能1.4 教育经历1.5 工作经验2.效果和源码2.1 动态效果2.2 源代码源码下载作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/128349160 html简洁漂亮的个人简历,个人主页…

[深度学习基础]2.pycharm联合annaconda生成虚拟环境测试yoloV7

“戏过曼巴晃过神”1. 环境说明2. yoloV7的准备和说明2.1 yoloV7源码2.2 权重文件3. anaconda生成配套虚拟环境4. Pycharm联合conda虚拟环境1. 环境说明 承接上一篇&#xff0c;我们的软件如下&#xff08;我拿笔记本跑&#xff09;&#xff1a; python:3.9pycharm: 22.3GPU:…

【C语言进阶】参加面试怎能不会结构体?进来学,手把手教会你结构体的原理与使用

目录 &#x1f929;前言&#x1f929;&#xff1a; &#x1f92f;正文&#xff1a;结构体&#x1f92f;&#xff1a; 1.结构概述&#x1f357;&#xff1a; 2.结构的声明&#x1f354;&#xff1a; 3.特殊声明&#x1f35f;&#xff1a; 4.结构的自引用&#x1f363;&#xf…

32位处理器中,通过汇编指令实现64位数据的加减运算

32位处理器一次可以处理的数据是32bit&#xff0c;但如果是64bit的数据&#xff0c;依然可以运算&#xff0c;只是不能一步到位。下面以加法为例。 目录 1、基本思路 2、具体实现 (1) 将数据保存到寄存器 (2) 低32位相加 (3) 高32位相加 3、完整汇编代码 1、基本思路 一…

ODN 2006丨艾美捷CpG ODN系列说明书

艾美捷CpG ODN系列——ODN 2006&#xff1a;具有硫代磷酸酯骨架的CpG寡脱氧核苷酸&#xff08;B型&#xff09;。人和小鼠TLR9&#xff08;Toll样受体9&#xff09;的特异性配体。 艾美捷CpG ODN 丨ODN 2006化学性质&#xff1a; 序列&#xff1a;5-tcgtcttttgtcgttttgtgtcgtt…

非零基础自学Golang 第8章 包管理 8.8 Go语言命名规范 8.9 小结 8.10 知识拓展

非零基础自学Golang 文章目录非零基础自学Golang第8章 包管理8.8 Go语言命名规范8.8.1 驼峰式命名法8.8.2 导出标识符8.9 小结8.10 知识拓展8.10.1 标准包简介第8章 包管理 8.8 Go语言命名规范 对于Go语言命名规范&#xff0c;每一家公司根据自己的实际情况可能都有不同。 一…

仅仅上线一小时,下载量就破10W!阿里内部Java性能优化实战手册

当时看完这&#xff08;Java程序性能优化实战&#xff09;的时候&#xff0c;感到首先就Java的方方面面讲得比较全&#xff0c;但是不乱。而且每个点都讲得比较清楚&#xff0c;读下来也没有什么盲点。干货非常多。国内少有的能写得这么好的。我看了收获很多。所以这会推荐给朋…

HCIP-Cloud+Service+DevOps+Engineer+V2.0第一章华为端到端 DevOps 概览

HCIP-CloudServiceDevOpsEngineerV2.0第一章华为端到端 DevOps 概览 学习总结&#xff0c;思维导图整理&#xff0c;免费分享。侵权删除 本博文为HCIP-Cloud Service DevOps Engineer V2.0培训系列内容&#xff0c;[完整学习路径](https://education.huaweicloud.com/programs…

M.2、PCIe 和 NVMe 的定义和区别

资料来源&#xff1a;维基百科&#xff0c;电商平台等 文章目录结论M.2PCIeNVMe结论 基于阅读的资料&#xff0c;对三者之间的关系&#xff0c;总结为如下层次结构&#xff1a; M.2 M.2定义了计算机内部扩展卡的外观尺寸和电气接口规范。 外观尺寸&#xff1a; M.2模块的外…

艾美捷西妥昔单抗Cetuximab方案及相关研究

西妥昔单抗Cetuximab属于嵌合型IgG1单克隆抗体&#xff0c;分子靶点为表皮生长因子受体&#xff08;EGFR&#xff09;。EGFR信号途径参与控制细胞的存活&#xff0c;增殖、血管生成、细胞运动、细胞的入侵及转移等。 本品可以以高出内源配体约5到10倍的亲和力与EGFR特异结合&am…

BellmanFord算法与SPFA算法

​​​​​​ BellmanFord算法与SPFA算法 展开 Bellman-Ford Bellman-Ford 算法是一种用于计算带权有向图中单源最短路径&#xff08;SSSP&#xff1a;Single-Source Shortest Path&#xff09;的算法。该算法由 Richard Bellman 和 Lester Ford 分别发表于 1958 年和 1956 年…

nodejs+vue校园用车辆校车管理系统

本项目的应用场景描述如下&#xff1a;为减少学生等待校车的时间&#xff0c;合理安排校车调度&#xff0c;设计并开发一个校车预约系统&#xff0c;系统由手机端、服务器端、车载刷卡端三部分组成。学生通过手机应用&#xff08;或微信应用&#xff09;查看校车运行时段&#…