第一次自己实现注册功能SpringMVC参考了一些视频教程

该博客介绍了如何使用Spring MVC和MyBatis框架实现用户注册和登录功能。从Controller到DAO层,详细展示了代码实现过程,包括UserMapper接口和XML配置,以及前端注册页面的JavaScript验证。同时,还涉及了登录拦截器的实现,确保只有已登录用户才能访问特定页面。
摘要由CSDN通过智能技术生成

第一次自己实现注册功能

注册和登陆(登陆还有一点没写完)

controller层

package com.chen.controller;

import com.chen.pojo.User;
import com.chen.service.UserServiceInfo;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * @author JJ Chen
 * @Description TODO
 * @Version 1.0
 */
@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    @Qualifier("userServiceInfo")
    private UserServiceInfo userServiceInfo;

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

    @RequestMapping("/login")
    public String login(HttpSession session, String name, String password){
        User user = userServiceInfo.getUserById(1);
        if (user.getName().equals(name)){
            if (user.getPwd().equals(password)){
                System.out.println("====>通过验证");
                session.setAttribute("userLoginInfo",name);
                return "main";
            }
        }
        return "login";
//        System.out.println(name+"::"+password);
//        session.setAttribute("userLoginInfo",name);
//        return "main";
    }

    @RequestMapping("/allUser")
    public String list(Model model){
        List<User> list = userServiceInfo.getAllUsers();
        model.addAttribute("list",list);
        return "allUser";
    }

    @RequestMapping("/toRegisterUser")
    public String register(){
        return "register";
    }

    @RequestMapping("/register")
    public String dealRegister(HttpSession session, String name, String pwd){
        User user = new User(3,name,pwd);

        userServiceInfo.registerUser(user);
        session.setAttribute("userLoginInfo",name);
        return "redirect:/user/allUser";
    }
}

pojo层

package com.chen.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author JJ Chen
 * @Description TODO
 * @Version 1.0
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private String pwd;
}

dao层

package com.chen.dao;

import com.chen.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserMapper {

    List<User> getAllUsers();

    User getUserById(@Param("userId") int id);

    int registerUser(User user);
}
<?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.chen.dao.UserMapper">

    <select id="getAllUsers" resultType="User">
        select * from ssmbuild.user;
    </select>

    <select id="getUserById" resultType="User">
        select * from ssmbuild.user where id=#{userId};
    </select>

    <insert id="registerUser" parameterType="User">
        insert into ssmbuild.user(name, pwd)
        VALUES (#{name},#{pwd});
    </insert>

</mapper>

拦截器

package com.chen.config;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @author JJ Chen
 * @Description TODO
 * @Version 1.0
 */
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        if(request.getRequestURI().contains("register")){
            System.out.println("注册---》");
            return true;
        }else if (request.getRequestURI().contains("toRegisterUser")){
            System.out.println("--------》去注册页面");
            return true;
        }

        if (request.getRequestURI().contains("login")){
            System.out.println("1===>过了");
            return true;
        }
        if (session.getAttribute("userLoginInfo") != null){
            System.out.println("2===>过了");
            return true;
        }

        request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request,response);
        return false;
    }

    @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 {

    }
}

register.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        span {
            font-size:12px;
            color:red;

        }
    </style>
</head>
<body>

<script type="text/javascript">
    //给username标签绑定onblur事件
    window.onload = function () {
        let usernameElt = document.getElementById("username");
        let nameNull = document.getElementById("nameNull");
        usernameElt.onblur = function () {
            //得到用户名
            let username = usernameElt.value;
            //去除前后空白
            username = username.trim();

            //用户名不能为空
            if (username === ""){
                nameNull.innerHTML = "用户名不能为空";
            }else{
                if (username < 6 || username >14){
                    nameNull.innerHTML = "用户名长度在6-14位";
                }else{
                    let reg = /^[a-zA-Z0-9]+$/
                    let ok = reg.test(username);
                    if (ok){
                        nameNull.innerHTML = "";
                    }else{
                        nameNull.innerHTML = "用户名不合法";
                    }
                }

            }

        }
        //onfocus
        usernameElt.onfocus = function () {
            nameNull.innerHTML = "";
        }

        //确认密码
        let pwdElt = document.getElementById("confirmed");
        let pwdError = document.getElementById("pwdError");
        pwdElt.onblur = function () {
            let pwd = document.getElementById("password").value;
            if (pwd !== pwdElt.value || pwd === ""){
                pwdError.innerHTML = "密码不一致或没填";
            }else{
                pwdError.innerHTML = "";

            }

        }

        pwdElt.onfocus = function () {
            pwdError.innerHTML = "";
        }


        document.getElementById("register").onclick = function () {
            usernameElt.focus();
            usernameElt.blur();

            document.getElementById("confirmed").focus();
            document.getElementById("confirmed").blur();

            if (pwdError.innerHTML === "" && nameNull.innerHTML === "") {
                let regform = document.getElementById("regForm");
                regform.submit();
            }

        }


    }

</script>

<form action="${pageContext.request.contextPath}/user/register" method="post" id="regForm">
    注册用户名:<input type="text" name="name" id="username"><span id="nameNull"></span>
    <br>
    注册密码:<input type="password" name="pwd" id="password">
    <br>
    确认密码:<input type="password"  id="confirmed"><span id="pwdError"></span>

    <!--   表单所有项目均合法才能提交     -->
    <!--        <input type="submit" value="提交" name="submit">-->
    <!--   button不能提交     -->
    <input type="button" value="注册" id="register">
</form>

</body>
</html>

此处整合出自狂神说java评论区大佬整理,本人只是做mark而已
整合:
dao:1、编写mybatis配置文件将:
1、写入要扫描的实体类包
2、写入mapper
3、写好dao层的接口和xml
2、编写database文件:driver,url,user,password
3、编写连接mybatis的spring-dao.xml配置文件:
1、关联数据库配置文件
2、写入数据库连接池:c3p0,jdbc
3、运用SqlSessionFactoryBean加入连接池和mybatis配置文件创建SqlSessionFactory
4、运用MapperScannerConfigurer 加入SqlSessionFactory,和dao层的接口配置dao扫描包
service:1、编写spring-service.xml配置文件:
1、创建service层的包和类
2、引入要扫描service层的包
3、注入service的实现类
4、写入业务管理器
controller:1、对项目添加web模块并写入jsp目录,对web.xml配置DispatcherServlet和静态资源过滤器
2、编写spring-MVC.xml配置文件:
(非注解)
1、引入要扫描的controller包
2、配置适配器和映射器
3、配置视图解析器
4、配置静态资源过滤器
(注解)
1、引入要扫描的controller包
2、配置注解驱动
3、配置静态资源过滤器
4、配置视图解析器
最后:将三层spring配置import进applicationContext.xml文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值