01 登录注册

文章目录

    • userMapper.java
    • User.java
    • DButil
    • LoginServlet.java
    • RegisterServlet.java
    • TestServlet.java
    • mybatis-config.xml
    • failure.html
    • success.html
    • regist.html
    • pom.xml

userMapper.java


package com.xd.web.mapper;import com.xd.web.pojo.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;import java.util.List;public interface UserMapper {@Select("select user_name from user1 limit 1")public String findUserName();//应该有一个查询全部//public List<Products> findAll();@Select("select * from user1 where user_name = #{name}")public List<User> ifExist(@Param("name") String userName);@Insert("insert into user1 (user_name,user_pwd) values(#{name},#{pwd})")public Integer register(@Param("name") String userName, @Param("pwd") String userPwd);@Select("select * from user1 where user_name = #{name} and user_pwd = #{pwd}")public List<User> login(@Param("name") String userName, @Param("pwd") String userPwd);
}

User.java


package com.xd.web.pojo;import java.io.Serializable;public class User implements Serializable {private String userName;private String userPwd;public User(String userName, String userPwd) {this.userName = userName;this.userPwd = userPwd;}public User() {}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPwd() {return userPwd;}public void setUserPwd(String userPwd) {this.userPwd = userPwd;}
}

DButil


package com.xd.web.utils;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 java.io.IOException;
import java.io.InputStream;public class DButil {private static SqlSessionFactory sqlSessionFactory = null;//测试环境下的工厂private static SqlSessionFactory sqlSessionFactoryTest = null;static {//1.builder  一旦创建了 SqlSessionFactory,就不再需要它了
//        SqlSessionFactoryBuilder sqlSessionFactoryBuilder =//2.获取工厂// 获取资源 org.apache.ibatis.io.Resources;try {InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");//根据资源文件创建工厂sqlSessionFactory  = new SqlSessionFactoryBuilder().build(inputStream);//测试环境的创建工厂
//            sqlSessionFactoryTest  = new SqlSessionFactoryBuilder().build(inputStream,"testdevelopment");} catch (IOException e) {throw new RuntimeException(e);}}public static SqlSession getSqlSession(){//获得Sqlsessionreturn sqlSessionFactory.openSession();}public static void close(SqlSession session){session.close();}}

LoginServlet.java


package com.xd.web;import com.xd.web.mapper.UserMapper;
import com.xd.web.pojo.User;
import com.xd.web.utils.DButil;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.List;
import java.util.Map;/** http://localhost:8080/项目别名/映射*                              get ? name =111&pwd=1111* 浏览器地址栏中默认是get* */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {//    @Override
//    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//
//        //获取请求部分
//        String requestURI = req.getRequestURI();
//
//        //获取参数
//        String param ;
//
//        if(req.getMethod().equals("get")){
//            //这是get的参数获取
//            param = req.getQueryString();
//            getDo();
//        }else {
//            //这是post的参数获取
//            param = req.getReader().readLine();
//            postDo();
//        }
//        //只有get常用
//        String getQueryString = req.getQueryString();//    name = 111&pwd =222
//
//        //post获取的是请求体中的数据流
//        BufferedReader reader = req.getReader();
//        //用io流去读
//        String postQueryString = reader.readLine();
//
//
//        System.out.println("get: "+getQueryString);
//        System.out.println("post: "+postQueryString);
//
//    }/****protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE html>");out.println("<html>");out.println("<head><title>Dynamic Content</title></head>");out.println("<body>");out.println("<h1>Welcome, " + request.getParameter("name") + "!</h1>");out.println("</body>");out.println("</html>");
}**** */@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//这三个函数是get和post通用的//获取所有参数的map集合
//        Map<String,String[]> getParameterMap()//获取的value类型是String数组类型//Map<String, String[]> parameterMap = req.getParameterMap();//等同于上面的map.get(s)//获得还是string数组//String[] likes = req.getParameterValues("like");//map.get(s)[0]//获取单一值//System.out.println("req.getParameter(\"like\") = " + req.getParameter("like"));//System.out.println("req.getParameter(\"name\") = " + req.getParameter("name"));//System.out.println("Arrays.toString(likes) = " + Arrays.toString(likes));//        for (String key : parameterMap.keySet()) {
//
//            String[] strings = parameterMap.get(key);
//
//            System.out.println(key+" : "+strings[0]);
//        }//获取usernameString username = req.getParameter("username");//获取passwordString password = req.getParameter("password");System.out.println(username+":"+password);//验证是否为admin admin
//UserMapper mapper = DButil.getSqlSession().getMapper(UserMapper.class);List<User> login = mapper.login(username, password);System.out.println(login);if (login!=null&&login.size()>0){System.out.println("走到succ");//成功了之后,我直接帮你跳转到一个资源的映射上去,我帮你找//帮你访问http://localhost:8080/webtom/login/failure.htmlreq.getRequestDispatcher("/login/success.html").forward(req,resp);} else {System.out.println("走到else");//返回对应结果req.getRequestDispatcher("/forwardtest").forward(req,resp);resp.getWriter().println("登录失败");}}
}

RegisterServlet.java


package com.xd.web;import com.xd.web.mapper.UserMapper;
import com.xd.web.pojo.User;
import com.xd.web.utils.DButil;
import org.apache.ibatis.session.SqlSession;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.List;@WebServlet("/regist")
public class RegisterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");String password = req.getParameter("password");//先去看看这个用户名是不是存在了SqlSession sqlSession = DButil.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);List<User> ifExist = mapper.ifExist(username);System.out.println(ifExist);if (ifExist !=null && ifExist.size()==0) {System.out.println("if");//如果返回值为0//执行函数,将这两个值放入数据库当中,insertInteger i = mapper.register(username,password);System.out.println(i);sqlSession.commit();//直接跳转到登录页面req.getRequestDispatcher("/login").forward(req,resp);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);}
}

TestServlet.java


package com.xd.web;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;@WebServlet("/forwardtest")
public class TestServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(req.getContextPath());//post,直接用utf-8解码即可//req.setCharacterEncoding("UTF-8");//对于get请求,中文在uri当中就以及乱码了//逆向解析即可,先用8859去读,转为字节码,然后再用utf-8读//String name = req.getParameter("name");//乱码//byte[] bytes = name.getBytes("ISO-8859-1");//String s = new String(bytes, "UTF-8");//System.out.println("get");//        req.getRequestDispatcher("login/index").forward(req,resp);resp.sendRedirect(req.getContextPath()+"/login/failure.html");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(req.getContextPath());System.out.println("post");}
}
user_id int  主键
user_name varchar 30
user_pwd varchar 50

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/dict"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><mappers><mapper class="com.xd.web.mapper.UserMapper"/></mappers>
</configuration>

failure.html


<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Login Failed</title>
</head>
<body>
<h1>Login fail</h1>
<p>Invalid username or password. Please try again.</p>
失败
</body>
</html>

success.html


<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Login success</title>
</head>
<body>
<h1>Login success</h1>
<p>Invalid username or password. Please try again.</p>
成功
</body>
</html>

regist.html


<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>注册页面</title><link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container"><h2>用户登录</h2><form action="registerServlet" method="post"><div class="form-group"><label for="username">用户名:</label><input type="text" id="username" name="username" required></div><div class="form-group"><label for="password">密码:</label><input type="password" id="password" name="password" required></div><div class="form-group"><label for="confirmPassword">确认密码:</label><input type="password" id="confirmPassword" name="confirmPassword" required></div><button type="submit">注册</button></form>
</div>
</body>
</html>

pom.xml


<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>login_register</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>login_register Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.15</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.31</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency></dependencies><build><finalName>login_register</finalName></build>
</project>

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

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

相关文章

Excel制作甘特图

使用Excel表格制作甘特图&#xff0c;可根据任务开始时间和结束时间自动计算工时&#xff0c;并自动用指定颜色填充横道图。 1.新建Excel文档&#xff0c;先设置项目基本信息&#xff0c;包括表格名称&#xff0c;这里设置为“**项目甘特图”&#xff1b;然后添加任务序号列&a…

Spark安全日志分析与事件调查:实战指南

摘要&#xff1a; 在当今数字化时代&#xff0c;安全日志分析和事件调查变得至关重要。本博客将介绍如何使用Spark进行安全日志分析和事件调查&#xff0c;展示了项目经验、详细的技术细节和提供了代码示例。通过深入理解和准备&#xff0c;您将能够展示您在Spark上的专业知识&…

【软件工程导论】——面向对象与UML(学习笔记)

&#x1f4d6; 前言&#xff1a;面向对象是以问题空间中出现的物体为中心进行模型化的一种技术。建立模型是软件工程中最常使用的技术之一。无论软件分析或软件设计&#xff0c;都需要建立模型。UML 就是OO 软件工程使用的统一建模语言。它是一种图形化的语言&#xff0c;主要用…

13、Lua table(表)

Lua table Lua table(表)table(表)的构造Table 操作Table 连接插入和移除Table 排序Table 最大值 Lua table(表) table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型&#xff0c;如&#xff1a;数字、字典等。 Luatable 使用关联型数组&#xff0c;你可以用任意类型的…

3D DRAM在2025年来袭

4月1日消息&#xff0c;据半导体工程报道&#xff0c;在行业大会Memcon 2024上&#xff0c;三星电子宣布其计划成为首家在2025年后步入3D DRAM内存时代的行业领军者。随着DRAM内存行业在本十年后期将线宽压缩至低于10纳米&#xff0c;现有的设计解决方案在如此精细的尺度上难以…

音视频技术应用方向概述

文章目录 应用方向概述具体的应用落地1.音视频压缩存储和管理2.编解码和格式转换3.数据容灾备份和恢复4.视频加密解密5.分类标签及检索6.用户权限和访问控制7.视频在线播放和多端兼容8.视频质量监测和优化9.信息安全防护及监测10.视频数据智能化扩展和赋能在现在的软件开发过程…

HarmonyOS 应用开发之Actor并发模型对比内存共享并发模型

内存共享并发模型指多线程同时执行复数任务&#xff0c;这些线程依赖同一内存并且都有权限访问&#xff0c;线程访问内存前需要抢占并锁定内存的使用权&#xff0c;没有抢占到内存的线程需要等待其他线程释放使用权再执行。 Actor并发模型每一个线程都是一个独立Actor&#xf…

Cisco交换机安全配置

Cisco交换机安全配置 前提 我们以下命令一般都要先进入Config模式 S1> enable S1# conf t S1(config)#端口安全保护 禁用未使用的端口 以关闭fa0/1到fa0/24的端口为例 S1(config)# interface range fa0/1-24 S1(config-if-range)# shutdown缓解MAC地址表攻击 防止CAM…

sql注入---Union注入

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 学习目标 了解union注入过程中用到的关键数据库&#xff0c;数据表&#xff0c;数据列sql查询中group_concat的作用使用union注入拿到靶机中数据库里的所有用户名和密码 一. 获得数据库表名和列…

酷开系统 | 酷开科技打造全流程全自动化运营链路

近日&#xff0c;QuestMobile发布的《2023年全景生态流量半年报告》数据显示&#xff0c;随着营销场景边界的拓展&#xff0c;越来越多的品牌方开始将阵地由移动端转移到大屏端。OTT及智能硬件营销占中国互联网营销市场规模比例已经从2020年的3.8%升至2022年的7.6%。随着人口红…

【JavaWeb】Day30.SpringBootWeb请求响应——响应

响应 HTTL协议的交互方式&#xff1a;请求响应模式&#xff08;有请求就有响应&#xff09;那么Controller程序&#xff0c;除了接收请求外&#xff0c;还可以进行响应。 1.ResponseBody 在我们前面所编写的controller方法中&#xff0c;都已经设置了响应数据。 controller方…

【C语言进阶】- 内存函数

内存函数 1.1 内存函数的使用1.2 memcpy函数的使用1.3 memcpy函数的模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现2.3 memcmp函数的使用2.4 memset函数的使用 1.1 内存函数的使用 内存函数就是对内存中的数据进行操作的函数 1.2 memcpy函数的使用 void* memcpy ( …

Docker容器与Serverless的融合:探索《2023腾讯云容器和函数计算技术实践精选集》中的云原生创新案例

Docker容器与Serverless的融合&#xff1a;探索《2023腾讯云容器和函数计算技术实践精选集》中的云原生创新案例 文章目录 Docker容器与Serverless的融合&#xff1a;探索《2023腾讯云容器和函数计算技术实践精选集》中的云原生创新案例一、引言二、《2023腾讯云容器和函数计算…

Java中的取余与取模运算:概念、区别与实例详解

Java中的取余与取模运算&#xff1a;概念、区别与实例详解 引言一、取余运算&#xff08;Remainder Operation&#xff09;二、取模运算&#xff08;True Modulo Operation&#xff09;三、区别比较四、实战应用 引言 在Java编程中&#xff0c;当我们提到“取余”和“取模”运算…

产品经理功法修炼(1)之自我管理

点击下载《产品经理功法修炼(1)之自我管理》 1. 前言 产品经理的能力修炼并非局限于某一技能的速成,而是需要全面参与到产品的整个生命周期中,通过不断的实践来逐步提升自己的各项能力。尽管在企业的日常运作中,我们不可能身兼数职去扮演每一个角色,但作为产品的核心负…

【DevOps工具篇】LDAP服务器(slapd)的冗余和扩展功能

【DevOps工具篇】LDAP服务器(slapd)的冗余和扩展功能 目录 【DevOps工具篇】LDAP服务器(slapd)的冗余和扩展功能负载均衡配置和冗余配置同步复制多主复制配置HA集群配置后端和覆盖层syncprov覆盖和syncrepl覆盖relay覆盖meta后端推荐超级课程: Docker快速入门到精通Kubern…

QT(19)-QCamera

QT(19&#xff09;-QCamera 1 公有类型1.1 帧速率1.2 捕获模式1.3 错误类型1.4 摄像头锁定状态改变的原因1.5 摄像头锁定的整体状态1.6 摄像头可以应用锁定的类型1.7 QCamera::Position1.8 QCamera::State1.9 QCamera::Status 2 公有函数2.1 构造函数:2.2 析构函数:2.3 成员函数…

交通标志识别项目 | 基于Tensorflow+SSD实现道路交通标志识别

项目应用场景 面向智能驾驶或自动驾驶场景道路道路交通标志的识别&#xff0c;在交通标志识别的基础上为下一步的智能决策提供前提 项目效果&#xff1a; 项目细节 > 具体参见项目 README.md (1) 安装依赖 Python3.5、TensorFlow v0.12.0、Pickle、OpenCV-Python、Matplotl…

论文笔记✍GS3D- An Efficient 3D Object Detection Framework for Autonomous Driving

论文笔记✍GS3D: An Efficient 3D Object Detection Framework for Autonomous Driving &#x1f4dc; Abstract &#x1f528; 主流做法限制 &#xff1a; 我们在自动驾驶场景中提出了一种基于单个 RGB 图像的高效 3D 物体检测框架。我们的工作重点是提取 2D 图像中的底层 3…

AIGC-Stable Diffusion发展及原理总结

目录 一. AIGC介绍 1. 介绍 2. AIGC商业化方向 3. AIGC是技术集合 4. AIGC发展三要素 4.1 数据 4.2 算力 4.3 算法 4.3.1 多模态模型CLIP 4.3.2 图像生成模型 二. Stable Diffusion 稳定扩散模型 1. 介绍 1.1 文生图功能&#xff08;Txt2Img) 1.2 图生图功能&…