SpringBoot+MyBatis实现登录和拦截器

Springboot +Mybatis+templates 登录验证拦截器 Spring boot +mybatis+templates实现增删改查和登录验证 好东西在下面 登录验证先创建好数据库 在idea 编辑器当中写好相对应的实体类 ```java public class User { private Integer id; private String username; private String password; public Integer getId() { return id; } p 阅读详情

前言

本章通过二种方式来实现登录,第一种:不连接数据库,用模拟登录的方式实现登录,并实现登录拦截。第二种:连接MySQL的方式实现登录与拦截。

1、 不连接数据库,进行一个模拟登录

判断是否符合登录条件是:用户名不为空和密码为String类型的123456

1、首先创建一个配置类MyMvcConfig ,写一个访问html页面的组件

@Configuration
public class MyMvcConfig {
    //配置视图组件
    @Bean
    public WebMvcConfigurerAdapter webMvcConfigurerAdapter(){
        WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                registry.addViewController("/").setViewName("login");
                registry.addViewController("/login.html").setViewName("login");
                registry.addViewController("/home.html").setViewName("home");
            }
        };
        return adapter;
    }
}

2、登录的具体方法

@Controller
public class LoginController {
    //登录的具体方法
    @RequestMapping("/Users/select")
    public String userLogin(@RequestParam("userName") String userName,
                            @RequestParam("userPass") String userPass,
                            Map map, HttpSession session){
        if (!StringUtils.isEmpty(userName) && "123456".equals(userPass)){
            session.setAttribute("loginUser",userName);
            //登录成功,为了防止表单重复提交,可以重定向到指定页面
            return "redirect:/home.html";
        }else{
            //返回错误的提示信息
            map.put("error","用户名或密码错误");
            return "login";
        }
    }
}

3、创建login的html页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
<form action="/Users/select" method="post">
    <div id="login">
        账户:<input type="text" name="userName"/>
        <br/>
        密码:<input type="text" name="userPass"/>
        <br/>
        <input type="submit" value="登录"/>
        <!--    错误信息展示    -->
        <div th:text="${error}"></div>
    </div>
</form>
</body>
</html>

4、创建一个拦截器的组件继承HandlerInterceptor重写里面的方法,如果不登录,不能访问别的页面

/**
 * 登录检查
 */
public class LoginHandlerInterceptor implements HandlerInterceptor {
    //目标方法执行之前,进行检查
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object user = request.getSession().getAttribute("loginUser");
        if (user == null){
            //没有登录,返回登录页面
            request.setAttribute("error","没有权限请先登录");
            request.getRequestDispatcher("/login.html").forward(request,response);
            return false;
        }else {
            return true;
        }
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

5、把这个组件放入MyMvcConfig配置类中,让他生效即可。

@Configuration
public class MyMvcConfig {
    //配置视图组件
    @Bean
    public WebMvcConfigurerAdapter webMvcConfigurerAdapter(){
        WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                registry.addViewController("/").setViewName("login");
                registry.addViewController("/login.html").setViewName("login");
                registry.addViewController("/home.html").setViewName("home");
            }
            //注册拦截器
            @Override
            public void addInterceptors(InterceptorRegistry registry) {
                /**
                 * addPathPatterns:拦截哪些请求
                 * excludePathPatterns:不拦截哪些请求
                 */
                registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**").
                        excludePathPatterns("/login.html","/","/Users/select");
            }
        };
        return adapter;
    }
}

6、创建一个登录成功的页面,并显示登录的用户信息

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
欢迎<a th:text="${session.loginUser}"></a>登录成功
</body>
</html>

2、 通过MyBatis连接MySQL数据库进行登录和校验拦截

-- 创建数据库
CREATE DATABASE IF NOT EXISTS zhao DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- 创建一个测试用的数据表
create table test_user(
  userId int auto_increment primary key,
  userName varchar(200),
  userPass varchar(200)
)

1、实体类(entity)

public class TestUser{
    private Integer userId;
    private String userName;
    private String userPass;
    //省略Getter和Setter方法
    }

2、接口(mapper)

@Mapper
public interface TestUserMapper{
    TestUser findUserLogin(@Param("userName") String userName, @Param("userPass") String userPass);
}

3、myBatis配置文件(xml)需要注意的是xml的位置,在resources下,但要与java文件夹下的接口的包名一致

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atgugui.springbootweb.mapper.TestUserMapper">
    <select id="findUserLogin" resultType="com.atgugui.springbootweb.entity.TestUser">
        select userName,userPass from test_user where userName=#{userName} and userPass=#{userPass}
    </select>
</mapper>

4、 业务层(service)

public interface TestUserService {
    TestUser findUserLogin(@Param("userName") String userName, @Param("userPass") String userPass);
}

5、 业务实现层(impl)

@Service
public class TestUserServiceImpl implements TestUserService {

    @Resource
    TestUserMapper testUserMapper;

    @Override
    public TestUser findUserLogin(String userName, String userPass) {
        return testUserMapper.findUserLogin(userName, userPass);
    }
}

6、 逻辑控制层(controller)

@Controller
public class LoginController {

    @Resource
    TestUserService testUserService;

    @RequestMapping("/Users/login")
    public String userLogin(@RequestParam("userName") String userName,
                            @RequestParam("userPass") String userPass,
                            Map map, HttpSession session){
//        if (!StringUtils.isEmpty(userName) && "123456".equals(userPass)){
//            session.setAttribute("loginUser",userName);
//            //登录成功,为了防止表单重复提交,可以重定向到指定页面
//            return "redirect:/home.html";
//        }else{
//            map.put("error","用户名或密码错误");
//            return "login";
//        }
        TestUser user = testUserService.findUserLogin(userName, userPass);
        if (user != null){
            session.setAttribute("loginUser",userName);
            //登录成功,为了防止表单重复提交,可以重定向到指定页面
            return "redirect:/home.html";
        }else {
            map.put("error","用户名或密码错误");
            return "login";
        }
    }
}

7、 html页面和拦截器与之前的没有连接数据库的一样,不需要做任何改动

8、项目结构如下
在这里插入图片描述

以上就是用户登录的一个简单实例,项目源码https://pan.baidu.com/s/1UxnLp4iDRi02FeALSfhBzg提取码:q795

SpringBoot整合Mybatis-Plus、Jwt实现登录token设置 首先,我们需要了解 JWT 的核心框架和使用规范,并通过代码实现 JWT 的生成和解析。在上述代码中,我们通过 addPathPatterns() 方法设置需要拦截的 URL 路径,并通过 excludePathPatterns() 方法排除不需要拦截的 URL 路径。在 Mybatis-plus 中使用 JWT 时,我们需要在登录成功之后生成 JWT,并将其返回给客户端。其中,“alg” 参数表示签名的算法(例如HS256),“typ” 参数表示令牌的类型(例如JWT)。 阅读详情

相关推荐

Springboot简单登录注册功能实现

仿猫眼电影网站登录注册功能实现: 博客园:https://www.cnblogs.com/djhzzl/p/14117459.html 使用Springboot实现登录注册功能 注册: 实质操作为,在数据库中做insert添加操作,同时判断输入密码和再次输入密码是否一致,一致进行注册,否则失败。 登录: 实质操作为,在数据库中做select,通过手机号和密码进行查找,如果查出不为空,则登录成功,否则失败。 实体类: 用户uid、用户名user_name、用户密码user_password、用

秃头不用洗发水的博客 2023

SpringBoot+MyBatisPlus(3)—— 登录验证(拦截)

登录验证(拦截)

Archer__13的博客 619

Springboot 整合JWT (token)+mybatis+自定义注解 实现简单的登录拦截模块

这个实例的登录模块大概简单包含以下三个小功能: 用户注册 用户输入帐号密码,后台使用Spring Security的BCryptPasswordEncoder 进行密码加密,存库。 用户登录 用户输入帐号密码,后台查库使用Spring Security的BCryptPasswordEncoder进行密码校验,若登录成功,则返回JWT生成的token,带有过期时间。 token校验 用户...

默默不代表沉默 3850

SpringBoot整合Mybatis完整详细版含注册、登录、拦截器配置

SpringBoot整合Mybatis完整详细版含注册、登录、拦截器配置

ZPHTTT的博客 1195

棋牌App逆向工程实战:透视风险分析与反作弊加固思路

在移动应用安全领域,逆向工程是一项关键的攻防技术,它通过静态分析、动态调试与协议抓包等手段,深入还原客户端真实逻辑。这项技术的核心原理,是从已编译的安装包中提取数据流,验证服务端下发的信息是否超出了客户端应有的可见范围。从技术价值看,安全测试人员可以借此定位协议层、内存层与缓存层的潜在风险,为反作弊体系提供精准的加固建议。在棋牌类App等实时对局场景中,逆向工程常被用于排查牌局信息泄露类隐患,而合规授权与测试环境是开展此类研究的必要前提。本文结合一次棋牌App的安全评估实践,梳理了从环境准备到数据流还原的完

weixin_29326909的博客 173

基于立创·天猛星MSPM0G3507的简易PID电机控制入门项目实战

本文详细介绍了基于立创·天猛星MSPM0G3507开发板的简易PID电机控制入门项目实战。从硬件选型、电路设计、PCB布局,到软件编程中的编码器读取、PID算法实现与调参,手把手教你完成一个带屏幕显示的电机定速与定距控制项目,是学习嵌入式开发和经典PID控制算法的绝佳实践。

weixin_42596011的博客 509

springboot整合mybatis-实现简单注册登录-体现拦截器

文章目录springboot整合mybatis-实现简单注册登录-体现拦截器思路步骤整体项目结构1.导入依赖application.yml 配置文件3.实体类 User4.持久层UserMappermapper配置文件(实现sql语句) UserMapper.xml5.服务层接口UserService接口实现类 UserServiceImpl控制层 UserControllerhtml页面主页面(登录页面):index.html注册页面:register.html登陆后可查看的页面(体现拦截器):welco

xiaoping__的博客 1625

【论文翻译】VIT:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

VIT摘要介绍相关工作模型VISION TRANSFORMER (VIT)微调和高分辨率实验结论 摘要 虽然Transformer架构在自然语言处理任务中已经成为事实标准,但是它在计算机视觉领域的应用仍然受限。在视觉领域,注意力要么和卷积网络结合使用,要么替换卷积网络中的某些部分,同时保持整体结构不变。本文表明对CNNs的依赖不是必要的,纯转换器(pure transformer)直接应用于图像块(image patches)序列在图像分类任务中能发挥很好的作用。当对大量数据进行预训练并把它转移到多个中型或

栗子菜菜 1846

springboot登录拦截器的实现_springboot使用拦截器Interceptor开发登录

自己尝试使用spring boot的Interceptor拦截器(Interceptor和WebMvcConfigurer)来制作一个完整的后台登录和未登录就引导到登录页的实例:目录结构:yml配置server: port: 8081spring: datasource: url: jdbc:mysql://localhost:3306/springboot?useUnicode=tru...

weixin_28221255的博客 398

10-Oracle 23 ai Vector Search 概述和参数

企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation :RAG)功能,RAG能够将LLM的生成能力与知识库的精准资料库进行检索结合,将大模型部署在内部同时将私有的数据进行LLM的检索避免泄露企业专用的数据同时提高的准确性。于是如何将数据存入向量数据库以及向量查询等这些基本功能变得必备和重要。

远方的专栏 1294

TBtools的序列提取步骤

本教程详细介绍了如何使用TBtools软件从原来的FASTA序列中提取特定的DNA序列。

weixin_47509995的博客 1万+

SpringBoot+MyBatis+MYSQL项目实战二(用户的注册和登录,添加拦截器)

接上一篇SpringBoot+MyBatis+MYSQL项目实战一(用户的注册和登录) 一:注册——前端页面

qq_51269815的博客 2190

手把手教你RK3568 MIPI屏驱动适配,纯干货!

RK3568 作为一款高性能的多媒体处理器,在嵌入式领域中备受瞩目。它采用了先进的 22nm 制程工艺,搭载四核 Cortex-A55 处理器,这种架构为芯片提供了高效的功耗比,使其在运行各种复杂任务时,既能保证性能,又能有效控制功耗。在实际应用中,无论是多任务处理还是运行大型应用程序,RK3568 都能凭借其四核 Cortex-A55 处理器,实现流畅的操作体验,满足智能设备对高性能和低功耗的需求。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4069

通过MyBatis拦截器实现数据权限控制

笔者这里是因为依赖的jar中自定义创建了SqlSessionFactory,创建SqlSessionFactory的代码中没有设置拦截器。如果项目使用的自定义的SqlSessionFactory,需要创建的时候把拦截器添加进去。可参考这篇文章:springboot配置多数据源后mybatis拦截器失效如果恰好读者的SqlSessionFactory也是在jar中创建的,或者不能直接修改,则需要另一种方式。

bzqwell的博客 1061

【日志】Prometheus/Loki+Alertmanager+Grafana监控告警

参考文章:匹配写法:https://blog.ossq.cn/2674.html。

CN_Eden 1320

【2025国赛A题】A题烟幕干扰弹的投放策略思路+代码+论文

【2025国赛A题】A题烟幕干扰弹的投放策略思路+代码+论文

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 866

SpringBoot整合MyBatis

SpringBoot+MyBatis整合,SpringBoot整合日期转换器,SpringBoot整合拦截器

qq_57570052的博客 787

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SpringBoot集成redis实现的用户登录和相关拦截器的实现

写controller、service、mapper,mapper.xml层代码根据username和password查询。原因是拦截器的加载在springcontext之前,所以自动注入redis工具类是null。但是在WebMvcConfigurer可以注入成功,然后通过构造器进行注入。实现拦截器的时候写的redis工具类一直报null,出现空指针异常如下。增加拦截器构造方法,将redis工具类当作属性注入。下一次写,异常处理,返回给前端的异常进行封装。拦截器注册器中注入,通过构造方法。

m0_46103359的博客 778

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

springboot简单实现单点登录思路

springboot简单实现单点登录思路

weixin_61307867的博客 2866

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java中利用框架传入相同的url实现crud操作_SpringBoot整合Mybatis实现简单的CRUD

作者:TyCoding发于Java知音:[加精] SpringBoot整合Mybatis实现简单的CRUD-Java知音继上篇文章:Spring-Boot入门之环境搭建。这次我们整合SpringBoot-Mybatis实现简单的CRUD业务。需求:详解SpringBoot工程的构建、与SSM项目在工程搭建上的不同。实现SpringBoot-Mybatis整合征服数据库。解决页面跳转,详解与SSM阶...

weixin_39576270的博客 151

SpringBoot整合MyBatis项目进行CRUD操作项目示例

SpringBoot整合MyBatis项目进行CRUD操作项目示例

相关项目可以查看https://gitee.com/fan-pl或https://github.com/fpl1116 1336

基于SpringBoot +Mybatis +Vue3 管理系统的登录功能实现

以上登陆页面的基本框架作为参考,如果有不满意的可以用ai进行渲染,不过多讲述,主要关注你的每一个表单行的prop的值必须和你表单文件对象的初始化的代表名(这个还要与后台对象的名字一致)相同,以及每个输入框的v-model的值,它代表的是你输入的东西的动态获取;css样式大家自行改变,主播只是个后端小白;然后当你打开页面时,钩子会自动调用刷新函数,(引进uuid包,pnpm install uuid),先为每个用户得到对应的uuid,然后存储进来CaptchaId.value();

2201_75368246的博客 1691

SpringBoot整合Mybatis完整详细版二:注册、登录、拦截器配置

接着上个章节来,上章节搭建好框架,并且测试也在页面取到数据。接下来实现web端,实现前后端交互,在前台进行注册登录以及后端拦截器配置。实现简单的未登录拦截跳转到登录页面 上一节传送门:SpringBoot整合Mybatis完整详细版 本章完整代码:SpringBoot整合Mybatis完整详细版含注册、登录、拦截器配置 天也不早了,开干 首先要实现w...

weixin_34161064的博客 202

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之用户登录

一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。

m0_74202856的博客 3066

【学习总结|DAY032】后端Web实战:登录认证

在Web后端开发中,登录认证是保障系统安全和用户数据隐私的关键环节。本文将结合实际开发案例,深入探讨登录功能与登录校验的实现思路和技术细节,希望能帮助读者更好地掌握这一重要知识点。

Fultter的博客 1511

SpringBoot实战——个人博客项目

springboot实战,从零开始搭建一个web个人博客项目(持续更新中)

日常学习记录、分享,愿我们都遇见更好的自己,与诸君共勉 2万+
上一篇: Java实体类中封装其他实体类并引用
下一篇: Shiro安全框架实现授权逻辑
与黑夜为伍
博客等级 码龄7年 19粉丝 80原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值