mybatis+thymeleaf登录

news2024/12/23 12:32:53

目录

一.将页面显示在浏览器中

1.新建项目并导入页面

2.使用th标签

3.新建控制层

4.显示结果

二.将两个页面进行关联

1.提交表单

2.跳转页面

3.结果

三.登录账号名动态改变

1.获取登录表单数据

2.给页面传值

3.页面显示

4.结果

四.连接数据库

1.新建数据库

2.分别建立访问层,实体类,实现类和数据库配置文件

3.连接数据

4.登录判断

5.结果


一.将页面显示在浏览器中

1.新建项目并导入页面

2.使用th标签

首先在html标签中引入th标签

<html xmlns:th="http://www.thymeleaf.org">

将页面中部分修改为th标签

th:href="@{css/public.css} -----css使用

th:src="@{/img/clock.jpg}" -----图片使用

th:src="@{/js/time.js}" -----js引用

th:action="@{/}" -----表单提交

th:href="@{/login}" -----页面跳转

此时需指向服务器路径login

3.新建控制层

在Controller包中新建文件,控制页面

@Controller
public class UserController {

    @RequestMapping("/")
    public String goindex(){
        return "index";
    }

    @RequestMapping("/login")
    public String gologin(){
        return "login";
    }

}

4.显示结果

二.将两个页面进行关联

1.提交表单

将登录时的表单提交到首页(默认页面)。

其中, 是提交from表单,提交到th:action="@{/}",/为首页路径。

<section class="loginCont">
            <form class="loginForm" th:action="@{/}">
                <div class="inputbox">
                    <label for="user">用户名:</label>
                    <input id="user" type="text" name="username" placeholder="请输入用户名" />
                </div>
                <div class="inputbox">
                    <label for="mima">密码:</label>
                    <input id="mima" type="password" name="password" placeholder="请输入密码" />
                </div>
                <div class="subBtn">
                    <input type="submit" value="登录" />
                    <input type="reset" value="重置"/>
                </div>
            </form>
        </section>

2.跳转页面

此时,href标签找到控制层的服务器路径,通过路径,找到其中的页面。

<a th:href="@{/login}">退出</a>

 

@RequestMapping("/login")
    public String gologin(){
        return "login";
    }

3.结果

此时点击登录即可进入首页,首页也可退出返回登录页。

三.登录账号名动态改变

1.获取登录表单数据

页面中可知,表单将提交到首页页面,所以在首页获取

@RequestMapping("/")
    public String goindex(User user){
        System.out.println(user.getUsername()+"  "+user.getPassword());
        return "index";
    }

2.给页面传值

获取到后,将名字传值给页面

@RequestMapping("/")
    public ModelAndView goindex(User user){
        System.out.println(user.getUsername()+"  "+user.getPassword());
        ModelAndView mav =new ModelAndView();
        mav.addObject("name",user.getUsername());
        mav.setViewName("index");
        return mav;
    }

3.页面显示

页面即可获取数据,并以文字显示

<h2 th:text="${name}">Admin</h2>

4.结果

四.连接数据库

1.新建数据库

create database if not exists my_sql;
use my_sql;
create table if not exists User
(
    userID   int primary key auto_increment,
    username varchar(20)     not null,
    password varchar(20)     not null
);

insert into User value
    (1,  'sean', '123456'),
    (2,  '李四', '123456'),
    (3, '王五', '123456'),
    (4, 'sean1', '111111');

2.分别建立访问层,实体类,实现类和数据库配置文件

方法一:按照之前方法,自行建包、接口、类和xml文件

方法二:安装EasyCode插件

使用插件生成

生成所有需要文件

3.连接数据

实体类

/**
 * (User)实体类
 *
 * @author makejava
 * @since 2024-03-11 15:39:45
 */
@Data
public class User implements Serializable {
    private static final long serialVersionUID = 157892786167003600L;
   
    private Integer userid;
   
    private String username;
   
    private String password;

}

接口

/**
 * (User)表数据库访问层
 *
 * @author makejava
 * @since 2024-03-11 15:39:44
 */

@Mapper
public interface UserDao {
    public List<User> getUser();
}

对外暴露接口

/**
 * (User)表服务接口
 *
 * @author makejava
 * @since 2024-03-11 15:39:45
 */

@Mapper
public interface UserService {
    public List<User> getUser();
}

接口实现类

/**
 * (User)表服务实现类
 *
 * @author makejava
 * @since 2024-03-11 15:39:46
 */
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserDao userDao;

    @Override
    public List<User> getUser() {
        return userDao.getUser();
    }
}

myBaits配置

<?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.example.lianxi.dao.UserDao">

    <!--查询单个-->
    <select id="getUser" resultType="list">
        select
          userID, username, password
        from user
    </select>
</mapper>

控制层

/**
 * (User)表控制层
 *
 * @author makejava
 * @since 2024-03-11 15:39:43
 */
@Controller
public class UserController {
    @Autowired
    UserServiceImpl userService;

    @RequestMapping("/")
    public ModelAndView goindex(User user){
        System.out.println(user.getUsername()+"  "+user.getPassword());
        ModelAndView mav =new ModelAndView();
        mav.addObject("name",user.getUsername());
        mav.setViewName("index");
        return mav;
    }

    @RequestMapping("/login")
    public String gologin(){
        return "login";
    }

}

4.登录判断

根据输入的名字和密码查询,如果列表为空,则登录失败,否则,登录成功

@RequestMapping("/")
    public ModelAndView goindex(User user){
        System.out.println(user.getUsername()+"  "+user.getPassword());
        ModelAndView mav =new ModelAndView();
        User login = userService.login(user);
        if (login!=null){
            mav.addObject("name",user.getUsername());
            mav.setViewName("index");
        }else {
            mav.addObject("error","用户名和密码错误");
            mav.setViewName("login");
        }
        return mav;
    }

5.结果

失败:

成功:

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

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

相关文章

tcp/ip协议2实现的插图,数据结构8 (30 - 32章)

(201) 201 三十0 中断优先级补充 (202) 202 三十1 TCP的用户需求 函tcp_usrreq一 (203) 203 三十2 TCP的用户需求 函tcp_usrreq二 (204) 204 三十3 TCP的用户需求 函tcp_usrreq三 (205) 205 三十4 TCP的用户需求 函tcp_usrreq四 (206) 206 三十5 TCP的用户需求 函tcp_usrreq五 …

C语言 内存函数

目录 前言 一、memcpy()函数 二、memmove()函数 三、memset函数 四、memcmp()函数 总结 前言 在C语言中内存是我们用来存储数据的地址&#xff0c;今天我们来讲一下C语言中常用的内存函数。 一、memcpy()函数 memcpy()函数与我们之前讲的strcpy()函数类似&#xff0c;只…

[SAP ABAP] 创建事务码T-CODE

如何让用户通过输入事务码T-CODE跳转到Z437_TEST_2024程序输出界面&#xff1f; 1.输入事务码SE39&#xff0c;进入到维护事务的界面 2.输入需要创建的事务码名称(一般情况下用Y或者Z开头)&#xff0c;点击【创建】 这里我们创建一个名为ZTEST437的事务代码 3.在创建事务的窗口…

springboot爱看漫画小程序的设计与实现

摘 要 相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低爱看漫画的运营人员成本&#xff0c;实现了爱看漫画的标准化、制度化、程序化的管理&#xff0c;有效地防止了爱看漫画的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够及时、…

leetcode代码记录(子集

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的 子集 &#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 …

MySQL MHA故障切换

目录 一、案例分析 1.1、案例概述 1.2、案例前置知识点 1&#xff09;什么是 MHA 2&#xff09;MHA 的组成 3&#xff09;MHA 的优势 4&#xff09;MHA 现状 1.3、案例环境 1&#xff09;本案例环境 ​编辑 2&#xff09;案例需求 3&#xff09;案例实现思路…

解读如何打造超高商楼宇智慧公厕

智慧楼宇大厦智慧公厕是近年来兴起的一个创新方案&#xff0c;旨在为现代城市的楼宇建筑提供一种全新的管理与服务模式。这种智慧公厕的最大特点就是将智能化技术与传统楼宇公厕结合&#xff0c;通过各种高科技设备与系统&#xff0c;实现对公厕的全新管理与监控&#xff0c;为…

java serlvet 高校学生画像平台系统Myeclipse开发mysql数据库web结构java编程计算机网页项目echarts图形展现

一、源码特点 java serlvet 高校学生画像平台系统是一套完善的java web信息管理系统 系统采用serlvetdaobean 模式开发本系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCA…

Jmeter+Ant 接口自动化环境配置指南

一 、Jmeter安装与配置 https://blog.csdn.net/tester_sc/article/details/80746405 注&#xff1a;Jmeter5.0的环境变量配置与4.0或历往老版本有部分小差异&#xff0c;笔者用的Jmeter 5.0 二 、Ant的安装与配置 # Ant下载地址(下载到指定目录后&#xff0c;进行解压到当前…

Spark-Transformation以及Action开发实战

文章目录 创建RDDTransformation以及ActionTransformation开发Action开发RDD持久化共享变量创建RDD RDD是Spark的编程核心,在进行Spark编程是,首要任务就是创建一个初始的RDDSpark提供三种创建RDD方式:集合、本地文件、HDFS文件 集合:主要用于本地测试,在实际部署到集群运…

电路方案分析(十八)四开关buck-boost双向同步DC/DC变换器方案

tip是&#xff1a;资料来自网络&#xff0c;仅供学习交流使用&#xff01; 1.概述 4开关降压升压双向DC-DC电源转换器在很多应用中都有使用。作为一个同步降压或同步升压转换器&#xff0c;其中只有两个开关切换&#xff0c;开关损耗减少到一半。只有当直流母线和电池电压彼此…

【MMDetection3D实战5】Dataset 和 model配置文件解析

文章目录 1. Dataset 配置文件解析1. 1 定义全局变量1. 1 数据处理pipeline(1) train_pipeline(2) test_pipeline(3) eval_pipeline1. 2 data 字典的定义2. model 配置文件解析2. 1 体素化voxel_layer2. 2 voxel_encoder2. 3 middle_encoder2. 4 2D 检测网络(backbone + neck …

C++实验 面向对象编程

一、实验目的&#xff1a; 掌握类中静态成员的定义方法&#xff0c;初始化方法&#xff0c;使用方法&#xff1b; 掌握类的友元说明方法&#xff0c;理解友元的使用特点 二、实验内容&#xff1a; 1、编写程序&#xff0c;统计某旅馆住宿客人的总数&#xff0c;要求输入客人…

hot100 -- 矩阵

&#x1f442; Peter Pan - kidult. - 单曲 - 网易云音乐 &#x1f442; Bibliothque&#xff08;图书馆&#xff09; - Jasing Rye - 单曲 - 网易云音乐 目录 &#x1f33c;前言 &#x1f33c;二分模板 &#x1f382;矩阵置零 AC 标记数组 AC 标记变量 &#x1f6a9;…

AI成就画质冠军!海信电视U8N Pro的“硬参数”和“软实力”

不得不说&#xff0c;这几年AI落地大有摧枯拉朽之势&#xff0c;也离普通人的生活越来越近了。 如果说&#xff0c;曾经1997年“深蓝”计算机赢下国际象棋世界冠军&#xff0c;还没那么让人印象深刻&#xff0c;2016年Alpha Go战胜围棋世界冠军&#xff0c;即使广泛关注&#…

replace和replaceAll的区别

replace和replaceAll的区别 replaceAll有些浏览器不兼容,如下图所示 replace的使用1>若只替换一个字符串abc.replace(b,1)//a1cabcaaa.replace(a,1)//1bcaaa2>若替换所有字符串abcaaa.replace(/\a/g,1)//1bc111replaceAll的使用1>若只替换一个字符串abc.replace(b,…

AI智慧校园电子班牌云平台源码

目录 家长端 学校端 电子围栏 亲情通话 课堂答题 移动化管理模式 统一资源管理平台 模板内容智能更换 家校互联 家长端 多场景通话:上学放学联系、紧急遇险求助联系、日常亲情通话关注孩子人身安全:到校离校情况、进入危险区域预警等。 学校端 课堂秩序管理:提高教…

服务器数据恢复—服务器硬盘灯显示红色的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 一台服务器中有一组由多块硬盘组建的raid阵列&#xff0c;在运行过程中服务器突然崩溃&#xff0c;管理员检查服务器发现该服务器raid阵列中有两块硬盘的指示灯显示红色。于是&#xff0c;管理员重启服务器&#xff0c;服务器重启后&a…

基于Python django的人脸识别门禁系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、Python技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&…

mac redis启动,redis哨兵模式,redis集群的相关命令

Homebrew安装的软件会默认在/usr/local/Cellar/路径下 redis的配置文件redis.conf存放在/usr/local/etc路径下 cd /usr/local/Cellar/redis/7.0.10. 存在 cd /usr/local/opt/redis/bin/redis-server. 目录存在 cd /usr/local/etc/redis.conf 存在。配置文件 复制文件 cp …