云音乐实现注册功能

news2024/10/9 22:19:04

1. 新建web项目 Shop_SM

2. 复制Shop资源和相关代码,实现注册功能

回顾当前配置下的加载顺序

1.MyBatis的主配置文件mybatis-config.xml (在根目录下)和 工具类MyBatisUtil(注意总配置文件的路径)

2.实体类(User)

3.dao层(UserMapper.xml,UserDao接口)

3.1 Mapper文件

UserMapper.xml

<?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.nz.dao.UserDao">
<!--启用缓存-->
    <cache></cache>
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.nz.entity.User">
        <id column="uid" property="uid" />
        <result column="username" property="username" />
        <result column="password" property="password" />
        <result column="nickname" property="nickName" />
        <result column="create_time" property="createTime" />
    </resultMap>

    <!-- 查询list -->
    <select id="selectList" resultMap="BaseResultMap">
        select * from user
    </select>

    <!--添加-->
    <insert id="insertUser">
        insert into user(username,password,nickname)
                         values(#{username},#{password},#{nickName})
    </insert>
</mapper>

3.2 dao接口

UserDao

package com.nz.dao;

import com.nz.entity.User;

import java.util.List;

public interface UserDao {

    //查询
    public List<User> selectList();
    //添加
    public int insertUser(User user);
}

4.service层(UserService,UserServiceImpl)

4.1 Service接口

UserService

package com.nz.service;

import com.nz.entity.User;

import java.util.List;

public interface UserService {

    //查询
    public List<User> queryList();
    //注册
    public boolean addUser(User user);
}

4.2 Service实现

UserServiceImpl

package com.nz.service.impl;

import com.nz.dao.UserDao;
import com.nz.entity.User;
import com.nz.service.UserService;
import com.nz.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    //查询
    @Override
    public List<User> queryList() {
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        List<User> list = userDao.selectList();
        System.out.print("userDao:"+userDao);
        return list;
    }

    //增加
    @Override
    public boolean addUser(User user) {
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        int i = userDao.insertUser(user);
        sqlSession.commit();
        return true;
    }

}

5.测试端(TestJunit)

package com.nz.test;

import com.nz.entity.User;
import com.nz.service.UserService;
import com.nz.service.impl.UserServiceImpl;
import org.junit.Test;

import java.util.List;

/**
 * Created by 86185 on 2023/2/1.
 */
public class TestJunit {

    @Test
    public void method(){
        UserService userService = new UserServiceImpl();
        List<User> list = userService.queryList();
        User user = list.get(1);
        boolean b1 = userService.addUser(user);
        System.out.print(b1);
    }
}

实现注册

  1. 注册跳转的页面是

uri是 /user/register

2. servlet内建UserRegisterServlet,实现跳转

@WebServlet("/user/register")需要与userRegister内的 /user/register 保持一致(如上方图)若不一致,则跳转失败

UserRegisterServlet代码如下:

package com.nz.servlet;

import com.nz.entity.User;
import com.nz.service.UserService;
import com.nz.service.impl.UserServiceImpl;
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;

/**
 * Created by 86185 on 2023/2/1.
 */
@WebServlet("/user/register")
public class UserRegisterServlet extends HttpServlet {

        public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.print("this is user register");
            //处理请求乱码
            req.setCharacterEncoding("utf-8");
            //处理响应乱码
            resp.setContentType("text/html;charset=utf-8");
            //获得前台参数
            String username = req.getParameter("cliName");
            String nickName = req.getParameter("cliRealname");
            String password = req.getParameter("cliPassword1");
            User user = new User();
            user.setUsername(username);
            user.setNickName(nickName);
            user.setPassword(password);
            //逻辑
            UserService userService = new UserServiceImpl();
            boolean b1 = userService.addUser(user);
            //携带User参数
            req.setAttribute("user",user);
            //转发到registerOk页面
            req.getRequestDispatcher("/user/registerOk.jsp").forward(req,resp);
        }
    }

3.在实现跳转的UserRegisterServlet内打一个断点,可以看到注册的账号密码等

  1. 运行之后,进入云音乐登陆页面

http://127.0.0.1:6060/login.jsp

5.点注册跳转到用户注册页面userRegister

http://127.0.0.1:6060/user/userRegister.jsp

输入完成后点击注册即可注册成功

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

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

相关文章

docker篇---pycharm连接docker,使用docker环境

pycharm连接docker&#xff0c;使用docker环境一、生成镜像和容器1.1 创建容器&#xff0c;需要加端口映射1.2 进入容器1.3 设置root密码&#xff0c;后续登录会用到1.4 修改配置文件1.5 重启ssh服务1.5 本机连接ssh二、pycharm连接docker2.1 允许远程客户端连接2.2 pycharm配置…

线程互斥与同步--Linux

文章目录线程互斥的概念与意义互斥的原理--原子性关于售票模拟的互斥应用死锁问题线程同步的概念与意义条件变量实现同步生产者消费者模型--互斥与同步基于阻塞队列的生产者消费者模型基于环形队列的生产者消费者模型POSIX信号量线程池线程安全下的单例模式总结线程互斥的概念与…

OMS标准 第二卷 主要通讯

版本4.1.2/2016-12-16 发布 1 引言 1.1 概述 本部分描述了从设备&#xff08;仪表或执行器或断路器&#xff09;和&#xff08;固定的&#xff0c;通常由市电供电的&#xff09;主设备&#xff08;网关或其他通信单元&#xff09;之间有线和无线通信的最低开放式计量系统要…

1. Mybatis 入门

文章目录1. Mybatis 简介2. Mybatis 快速入门3. 使用 idea 写 SQL4. Mapper 代理开发5. MyBatis 核心配置文件1. Mybatis 简介 MyBatis 是一款优秀的持久层框架&#xff0c;用于简化 JDBC 开发。 官方文档&#xff1a;https://mybatis.org/mybatis-3/zh/index.html 持久层&am…

【自学Docker】Docker cp命令

Docker cp命令 大纲 docker cp命令教程 docker cp 命令用于在本地文件系统与 Dokcer容器 之间复制文件或者文件夹。该命令后面的 CONTAINER 可以是容器Id&#xff0c;或者是容器名。 docker cp命令语法 从容器复制到宿主机 haicoder(www.haicoder.net)# docker cp [OPTION…

第57篇-某日头条signature参数分析【2023-02-01】

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、网站分析三、signature参数四、完整代码一、前言 今天来看一下新闻网站,分析一下参数 二、网站分析 网…

WebDAV之葫芦儿·派盘+一叶日记

一叶日记 支持WebDAV方式连接葫芦儿派盘。 推荐一款操作方便、界面简洁,记录生活点滴与心情,具有诗情画意的日记软件。 一叶日记是一款记录日记的手机软件,在这款软件中它里面有着各种不同的工具,可以方便用户去随时随地的记录日记,同时里面还有着各种不同的主题背景&…

补充:论Unity_InputSystemPacakage如何使用

图1补充一下默认特殊值如何设定&#xff0c;点击ProjectingSettings——InputSystemPacakage——Create Settings Asset 即可设置默认特殊值&#xff0c;或者点击图1中的Open input settings也可以打开此界面。 创建后会在Project窗口出现一个配置文件&#xff0c;不需要时删除…

你说反射有点难追,我觉得应该知难而退。

文章目录问题源码解析溯源问题解决方案第一种&#xff1a;第二种&#xff1a;第三种&#xff1a;问题 今天小伙伴遇到一个问题&#xff0c;有关于反射的&#xff0c;写个demo&#xff0c;大家看一下。 如上&#xff0c;运行之后会报错&#xff1a;出现了非法参数。 Exception…

深度学习论文: YOLOv6 v3.0: A Full-Scale Reloading及其PyTorch实现

深度学习论文: YOLOv6 v3.0: A Full-Scale Reloading及其PyTorch实现 YOLOv6 v3.0: A Full-Scale Reloading PDF: https://arxiv.org/pdf/2301.05586.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/shanglianlm0525/PyTorch…

2023年IB考试该如何备考?

IB课程考试时间 考试时间&#xff1a;IBO官方近期公布了2023年的考试时间与计划&#xff0c;中国学生IB考试时间定在2023.5.1至5.19。 在世界各地&#xff0c;学生在IB体系中均按照相同的教学大纲进行&#xff0c;并且于毕业时参加全球统一考试。一年两次&#xff08;北半球于5…

拉伯证券|北向资金1月净买入超1400亿,啥信号?

2023年1月份&#xff0c;电视剧《狂飙》热播&#xff0c;被视为A股投资“风向标”的北向资金也敞开“狂飙”态势&#xff0c;月内五次净买入额超百亿&#xff0c;1月30日单日净买入额更是创2021年12月以来新高。 单月净买入超1400亿&#xff0c;刷新纪录&#xff01; 北向资金…

Ventoy安装教程

目录Ventoy五大优势Ventoy安装教程其他链接Ventoy是一款国人开发的新一代多ISO启动引导程序&#xff0c;用户只需要将所需的ISO镜像文件拷贝至优盘中即可在Ventoy界面中选择自己想要的ISO镜像文件。 Ventoy五大优势 广泛兼容&#xff1a;支持包括Windows 10、Windows 8.1、Wind…

【哈希表】leetcode15. 三数之和(C/C++/Java/Python/Js)--梦破碎的地方

leetcode15. 三数之和--梦破碎的地方1 题目2 思路2.1 哈希解法--含代码2.2 双指针2.3 去重逻辑的思考2.3.1 a的去重2.3.2 b与c的去重3 代码--双指针法3.1 C版本3.2 C版本3.3 Java版本3.4 Python3版本3.5 JavaScript版本4 总结用哈希表解决了两数之和 &#xff0c;那么三数之和呢…

[Lua实战]Skynet-2.如何启动(Win10-WSL环境Ubuntu18.04)[开箱可用]

Skynet-2.如何启动Win10-WSL环境Ubuntu18.04接上文,在linux运行skynet1.WIN10-WSL1.1 用Microsoft Store安装WSL(会遇到商店下载失败等问题...)1.1.1控制面板支持Linux配置1.1.2Microsoft Store 找到 Ubuntu18.041.1.3如果遇到安装问题如图请直接跳到1.21.2 使用PowerShell工具…

概论_第7章_参数估计_点估计之极大似然估计__性质

一 性质 极大似然估计 有一个简单有用的性质&#xff1a; 如果 θ^\hat\thetaθ^ 是 θ\thetaθ的极大似然估计&#xff0c; 则对任一 θ\thetaθ的函数g(θ)g(\theta)g(θ), 其极大似然估计为 g(θ^)g(\hat\theta)g(θ^) . 该性质称为极大似然估计的不变性&#xff0c;它使…

项目代码版本控制与维护

一、版本命名规则 1.1 需求开发分支命名规则 格式&#xff1a;dev_v版本号_需求名称 案例&#xff1a;dev_v01.31_TX202301141 dev_v01.31_数字产品平台订单查询优化 1.2 测试环境发布分支命名规则 格式&#xff1a;uat_deploy 1.3 预上环境分支命名规则 格式&#xff1a…

操作系统权限提升(六)之系统错误配置-不安全的服务提权

系列文章 操作系统权限提升(一)之操作系统权限介绍 操作系统权限提升(二)之常见提权的环境介绍 操作系统权限提升(三)之Windows系统内核溢出漏洞提权 操作系统权限提升(四)之系统错误配置-Tusted Service Paths提权 操作系统权限提升(五)之系统错误配置-PATH环境变量提权 注&…

九种查找算法-B树/B+树

B树/B树 在计算机科学中&#xff0c;B树&#xff08;B-tree&#xff09;是一种树状数据结构&#xff0c;它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。B树&#xff0c;概括来说是一个节点可以拥有多于2个子节点的二…

数学建模与数据分析 || 2. 结构化与非结构化数据的读取方法

结构化与非结构化数据的读取方法 文章目录结构化与非结构化数据的读取方法1. 结构化数据的读取1.1 pandas 读取 excel 文件1.2 pandas 读取 csv 文件1.3 pandas 读取 txt 文件1.4 利用 scipy 读取 mat 格式文件数据1.5 利用 numpy 存储和读取 npz 格式文件2. python 读取图像的…