简易的Web登录功能(Servlet,mybatis,MySQL)

效果

在这里插入图片描述

介绍

javaEE项目,见123

JDK8,JavaEE8

项目结构(下面没写的文件就是空的,或者系统自动生成的)
在这里插入图片描述
mysql中的表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步骤

  1. 创建Web页面
  2. 引入mybatis,MySQL依赖
  3. 写后端程序()

1 创建Web页面

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link href="style.css" rel="stylesheet"><script src="test.js"></script>
</head><body>
<h1>登录</h1>
<form method="post" action="login"><!--    method="post"表示表单数据将以POST方式提交到服务器。--><!--    action="login"指定表单数据提交的目标地址为"login"。前面不要加"/"--><label for="input-username">账号:</label><input type="text" id="input-username" placeholder="账号" name="username"/><br><label for="input-password">密码:</label><input type="password" id="input-password" placeholder="密码" name="password"/><br><div><button onclick="http()">登录</button></div>
</form>
</body>
</html>

style.css

body {background-color: #ffffff;margin: 0;text-align: center;
}input {border: 0;background: #e0e0e0;line-height: 40px;border-radius: 20px;padding: 0 20px 0 20px;width: 200px;font-size: 16px;margin-top: 20px;
}input:focus {outline: 0;
}button {margin-top: 20px;background: #6600CC;border-radius: 30px;border: 0;width: 200px;height: 50px;color: white;font-size: 16px;box-shadow: 0px 2px 10px blueviolet;/*按键四周的阴影*/
}button:focus {outline: 0;background: #6666CC;
}#input-remember {width: auto;
}

2 引入mybatis,MySQL依赖

引入maven依赖

<!--        lombok插件-->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.32</version>
</dependency>
<!--        mybatis-->
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version>
</dependency>
<!--        MySQL-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version>
</dependency>

3 写后端程序

3.1 mybatis相关

mybatis-config.xml

mybatis-config.xml(从官网复制,再自己加配置)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/study"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><!--    mapper文件,在这注册--><mappers><mapper class="com.example.mapper.UserMapper"/></mappers>
</configuration>

User.java

package com.example.entity;
import lombok.Data;
@Data
public class User {int id;String username;String password;
}

UserMapper.Java

package com.example.mapper;import com.example.entity.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;public interface UserMapper {//用注解,不用xml@Select("select * from users where username = #{username} and password = #{password}")User getUser(@Param("username") String username, @Param("password") String password);
}

3.2 Servlet相关

LoginServlet

package com.example.servlet;import com.example.entity.User;
import com.example.mapper.UserMapper;
import lombok.SneakyThrows;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;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.util.Arrays;
import java.util.Map;@WebServlet(value = "/login", loadOnStartup = 1)
public class LoginServlet extends HttpServlet {SqlSessionFactory factory;@SneakyThrows@Overridepublic void init() throws ServletException {factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {{//查看前端发来的账号和密码,debug// 遍历并打印请求参数映射表req.getParameterMap().forEach((k, v) -> {// 输出参数键值对,其中值以数组形式显示System.out.println(k + ": " + Arrays.toString(v));});}{// 设置响应内容类型为HTML,编码方式为UTF-8resp.setContentType("text/html;charset=UTF-8");// 获取请求中的表单参数Map<String, String[]> map = req.getParameterMap();// 检查表单中是否包含了用户名和密码字段if (map.containsKey("username") && map.containsKey("password")) {// 获取用户名和密码String username = req.getParameter("username");String password = req.getParameter("password");// 使用try-with-resources确保SqlSession正确关闭try (SqlSession sqlSession = factory.openSession(true)) {// 获取UserMapper接口的实现UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 尝试根据用户名和密码从数据库中获取用户信息User user = userMapper.getUser(username, password);// 根据用户信息的存在与否返回不同的响应if (user != null) {resp.getWriter().write("用户" + username + "登录成功");} else {resp.getWriter().write("账号/密码错误 或 用户不存在");}}// TODO: 进行权限校验} else {// 如果表单信息不完整,则返回错误信息resp.getWriter().write("错误,表单信息不完整!");}}}
}

参考

https://www.itbaima.cn/document/ycpagby2v7j4p728

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进程间通信(一)

IPC 在之前我们也有涉及到进程间通信的知识点&#xff0c;比如fork或exec或父进程读取子进程的退出码等&#xff0c;但是这种通信方式很有限&#xff0c;今天来学习进程间通信的其他技术——IPC&#xff08;InterProcess Communication&#xff09;。 IPC的方式通常有管道&…

SMART700西门子触摸屏维修6AV6 648-0CC11-3AX0

西门子工控机触摸屏维修系列型号&#xff1a;PС477,PC677,TD200,TD400,KTP178,TP170A,TP170B,TP177A,TP177B,TP270,TP277,TP27,MP370,MP277,OP27,OP177B等。 触摸屏故障有&#xff1a;上电黑屏, 花屏,暗屏,触摸失灵,按键损坏,电源板,高压板故障,液晶,主板坏等,内容错乱、进不了…

基础I/O:文件系统调用接口

文章目录 文件系统调用接口open系统调用接口和C语言封装文件描述符fd重定向 文件系统调用接口 open NAME//打开、创建 - 打开并可能创建文件或设备open, creat - open and possibly create a file or deviceSYNOPSIS#include <sys/types.h>#include <sys/stat.h>…

【负载均衡式在线OJ项目day6】源文件路由功能及文件版题库构建

一.前言 前文讲到了OJ模块的设计思路&#xff0c;毫无疑问这是一个网络服务&#xff0c;我们先使用httplib&#xff0c;将源文件的路由功能实现&#xff0c;先把框架写好&#xff0c;后续再更改回调方法。 随后计划编写Modify模块&#xff0c;提供增删查改题库的功能(主要是查…

zblog中用户中心-邀请码注册插件的导出功能补充

自己加了一个导出未使用的邀请码功能&#xff0c;可惜我不是入驻作者&#xff0c;没有权限发布&#xff0c;之前被一条大河拒了&#xff0c;他说我抄他代码&#xff0c;不给我过审还冷嘲热讽&#xff0c;我一气之下&#xff0c;就没继续申请了&#xff0c;话说我是专业搞java开…

MVC:一种设计模式而非软件架构

在软件开发领域&#xff0c;MVC&#xff08;Model-View-Controller&#xff09;经常被提及&#xff0c;但很多人对其定位存在误解。本文将澄清一个常见的误区&#xff1a;MVC是一种设计模式&#xff0c;而非软件架构。 一、MVC简介 MVC&#xff0c;即模型&#xff08;Model&a…

数组二叉树-华为OD

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、java代码五、测试用例 前言 本人最近再练习算法&#xff0c;所以会发布一些解题思路&#xff0c;希望大家多指教 一、题目描述 二叉树也可以用数组来存储&#xff0c;给定一个数组&#xff…

医院如何做好漏费管理?什么是控费系统?控费系统现在成熟吗?

在中国深厚的人情土壤之中&#xff0c;某些医院里的医技科室&#xff0c;宛如隐秘的灰色地带&#xff0c;悄然滋生着利用职务之便谋取私利的暗流。这些科室的医务人员&#xff0c;以低于医院明文规定的收费标准&#xff0c;私下里为熟识的患者提供检查服务&#xff0c;仿佛形成…

安装SQL Server详细教程_sql server安装教程

一&#xff0c;SQL Server数据库安装 1.首先&#xff0c;下载安装程序 &#xff08;1&#xff09;从网盘下载安装exe 点击此处直接下载 &#xff08;2&#xff09;从官网下载安装exe文件 在官网选择Developer进行下载 2.开始安装 双击安装程序&#xff0c;开始安装 这里直…

每日10亿数据的日志分析系统OOM

背景 一个每日10亿数据的日志清洗系统&#xff0c;主要工作就是从消息队列中消费各种各样的日志&#xff0c;然后对日志进行清洗&#xff0c;例如&#xff1a;用户敏感信息(姓名、手机号、身份证)进行脱敏处理,然后把清理完的数据交付给其他系统使用。 我们项目中&#xff0c;…

Unity基础

概述 基础知识 3D教学 数学计算公共类Mathf 练习: 三角函数 练习&#xff1a; Unity中的坐标系 Vector3向量 向量模长和单位向量 向量加减乘除 练习&#xff1a; 向量点乘 向量叉乘 向量插值运算 Quaternion四元数 为何要使用四元数 四元数是什么 四元数常用方法 四元数计算 练…

【Java】/*方法的使用-快速总结*/

目录 一、什么是方法 二、方法的定义 三、实参和形参的关系 四、方法重载 五、方法签名 一、什么是方法 Java中的方法可以理解为C语言中的函数&#xff0c;只是换了个名称而已。 二、方法的定义 1. 语法格式&#xff1a; public static 返回类型 方法名 (形参列表) { //方…