SSM框架实现用户登录与注册功能


结构

 SysUserController.java

package lx.controller;

import lx.entity.model.SysUser;
import lx.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping("/user")
public class SysUserController {
    @Autowired
    private SysUserService sysUserService;
    /**
     * 登录页面
     * @return
     */
    @GetMapping("/tologin")
    public String login() {
        System.out.println("nnn");
        return "/sysUser/login";
    }


    @PostMapping("/login")
    @ResponseBody
    public String login(SysUser sysUser, HttpServletRequest request){
        SysUser find = sysUserService.checkLogin(sysUser.getAccount(),sysUser.getPassword());
        if(find==null){
            return "登录验证失败!账号错、密码错或用户被禁用!";
        }
        //登录成功
        request.getSession().setAttribute("loginUser", find);
        return "ok";
    }
//    -----------增加用户
    @GetMapping("/add")
    public String add(Model model){
        SysUser entity=new SysUser();
        entity.setStatus(0);
        model.addAttribute("item",entity);
        return "/sysUser/register";
    }
    //新增-post
    @PostMapping("/add")
    @ResponseBody
    public String add(SysUser entity){
        System.out.println("234");
        try {
            sysUserService.insert(entity);
            return "ok";
        } catch (Exception e) {
            return e.getMessage();
        }
    }
}
SysUser.java实体类
package lx.entity.model;
//用户实体类
public class SysUser {
    private int id;//主键
    private String name;//用户名
    private String account;//登录账号
    private String password;//登录密码
    private int status;//状态 0正常,1禁用

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }
}
SysUserMapper.java
package lx.mapper;

import lx.entity.model.SysUser;
import org.apache.ibatis.annotations.Param;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Repository;

@MapperScan
@Repository
public interface SysUserMapper {

    //登录验证
    SysUser checkLogin(@Param("account")String account, @Param("password")String password);

    int insert(SysUser record);
}
SysUserServiceImpl.java
package lx.service.impl;

import lx.entity.model.SysUser;
import lx.mapper.SysUserMapper;
import lx.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional
public class SysUserServiceImpl implements SysUserService {
@Autowired
    private SysUserMapper sysUserMapper;
    @Override
    public SysUser checkLogin(String account, String password) {
        System.out.println(account+password+"lllx");
        return sysUserMapper.checkLogin(account,password);
    }

    @Override
    public int insert(SysUser record) {
        System.out.println(record+"1111");
        return sysUserMapper.insert(record);
    }
}
SysUserService.java
package lx.service;

import lx.entity.model.SysUser;

public interface SysUserService {
//    登录
    SysUser checkLogin(String account, String password);
//    增加用户
   int insert(SysUser record);
}

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">
    <!-- 扫描类以完成Bean创建和自动依赖注入 -->
    <context:component-scan base-package="lx"/>
    <mvc:annotation-driven />
<!--    &lt;!&ndash; 静态资源访问 &ndash;&gt;-->
<!--    <mvc:resources location="/images/" mapping="/images/**"/>-->
<!--    <mvc:resources location="/css/" mapping="/css/**"/>-->
<!--    <mvc:resources location="/js/" mapping="/js/**"/>-->
    <!-- 配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
    <!--数据库配置 -->
    <bean id = "propertyConfigurer" class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:jdbc.properties</value>
            </list>
        </property>
    </bean>
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 数据源注入 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 映射文件扫描 -->
        <property name="mapperLocations" value="classpath:SysUserMapper.xml" />
        <!-- 别名包 -->
        <property name="typeAliasesPackage" value="lx.entity.model"></property>
    </bean>
    <!-- 数据库连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <!-- 基本属性 url、user、password -->
        <property name="driverClassName" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="10"/>
        <property name="minIdle" value="10"/>
        <property name="maxActive" value="50"/>
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="60000"/>
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
    </bean>
    <!--加载mapper接口-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 扫描的接口包 SSM0411.mapper -->
        <property name="basePackage" value="lx.mapper"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSession"></property>
    </bean>
    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <!-- 拦截器 -->
    <mvc:interceptors>
        <!-- 国际化操作拦截器 -->
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
    </mvc:interceptors>
</beans>
SysUserMapper.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="lx.mapper.SysUserMapper" >
    <resultMap id="BaseResultMap" type="lx.entity.model.SysUser" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="account" property="account" jdbcType="VARCHAR" />
        <result column="password" property="password" jdbcType="VARCHAR" />
        <result column="status" property="status" jdbcType="INTEGER" />
    </resultMap>
<!-- 根据登录账号获取实体 -->
<select id="checkLogin" resultMap="BaseResultMap">
    select *
    from sys_user
    where account=#{account} and password=#{password} and status=0
</select>
<insert id="insert" parameterType="lx.entity.model.SysUser" >
    insert into sys_user (id, name, account, password, status)
    values (#{id}, #{name}, #{account}, #{password}, #{status})
</insert>

jdbc.properties

driver=com.mysql.cj.jdbc.Driver
#mytest\u662F\u672C\u5730\u6570\u636E\u5E93\u540D
url=jdbc:mysql://localhost:3306/smm?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#\u4E0B\u9762\u8F93\u5165\u81EA\u5DF1\u6570\u636E\u5E93\u7684\u8D26\u53F7\u548C\u5BC6\u7801
username=root
password=502216
#\u5B9A\u4E49\u521D\u59CB\u8FDE\u63A5\u6570
initialSize=0
#\u5B9A\u4E49\u6700\u5927\u8FDE\u63A5\u6570
maxActive=20
#\u5B9A\u4E49\u6700\u5927\u7A7A\u95F4
maxIdle=20
#\u5B9A\u4E49\u6700\u5C0F\u7A7A\u95F4
minIdle=1
#\u5B9A\u4E49\u6700\u957F\u7B49\u5F85\u65F6\u95F4
maxWait=60000

index.jsp

<%--
  Created by IntelliJ IDEA.
  User: lx
  Date: 2022/4/18
  Time: 13:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>用户登录</title>
    <%--    <link href="/jxc/css/login.css" rel="stylesheet" />--%>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <%--    <script src="/jxc/js/jquery-migrate-1.1.1.js"></script>--%>
    <%--    <script src="/jxc/js/layer/layer.js"></script>--%>
    <script>
        //ajax登录验证,成功跳转首页,否则提示错误信息
        function onLogin(){
            var account=$("#account").val();
            var password=$("#password").val();
            console.log(account+password);
            // $.ajax({
            //     type: "post",
            //     url: "user/login",
            //     data: [account=account,passwrod=passwrod],
            //     dataType: "text",
            //     success: function (rdata) {
            //         if (rdata=="ok") {
            //             window.location.href="/home/index"
            //         } else {
            //             alert(rdata);
            //         }
            //     }
            // });
            $.post("user/login",{
                account:account,
                password:password
            },
                function (rdata){
                    if (rdata=="ok") {
                                    window.location.href="home/index"
                                } else {
                                    alert(rdata);
                                }
                }
            )
        }
    </script>
</head>
<body>
<div class="container">
    <h1>用户登录</h1>
    <form>
        <div class="row">
            <span>登录账号:</span>
            <input type="text" class="textBox" id="account" name="account" />
        </div>
        <div class="row">
            <span>登录密码:</span>
            <input type="password" class="textBox" id="password" name="password" />
        </div>
        <div class="row">
            <input type="button" class="btn2" value="登录" οnclick="onLogin()" />
        </div>
        <div class="row">
            没有账号?<a href ="${pageContext.request.contextPath }/user/add">注册账号</a>
        </div>
    </form>
</div>
</body>
</html>

register.jsp

<%--
  Created by IntelliJ IDEA.
  User: lx
  Date: 2022/4/18
  Time: 19:29
  To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>新增</title>
<%--    <link href="/ssm1/css/edit.css" rel="stylesheet" />--%>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<%--    <script src="/ssm1/js/layer/layer.js"></script>--%>
    <script type="text/javascript">
        function onSave() {
            let name=$("#name").val();
            let account=$("#account").val();
            let password=$("#password").val()
            console.log(name+account+password)
            //1.验证输入
            //用户名
            if ($("#name").val().trim() == ""){
                alert("请输入用户名");
                $("#name").focus();
                return;
            }
            //登录账户
            if ($("#account").val().trim() == "") {
                alert("请输入登录账户");
                $("#account").focus();
                return;
            }
            //2.提交数据
            $.post("add",{
                    name:name,
                    account:account,
                    password:password
                },
                function (rdata){
                    if (rdata=="ok") {
                        // window.location.href="/user/index"
                    alert("注册成功")
                    } else {
                        alert(rdata);
                    }
                });
        }
        function onCancel() {
            // parent.layer.close(parent.layer.index);//关闭弹窗
        }
    </script>
</head>
<body>
<form>
    <fieldset>
        <legend>用户信息</legend>
        <div class="editor-label">用户名</div>
        <div class="editor-field">
            <input type="text" value="${item.name}" name="name" id="name" />
        </div>
        <div class="editor-label">登录账号</div>
        <div class="editor-field">
            <input type="text" value="${item.account}" name="account" id="account" />
        </div>
        <div class="editor-label">登录密码</div>
        <div class="editor-field">
            <input type="password" value="${item.password}" name="password" id="password" />
        </div>
    </fieldset>
</form>
<div class="toolbar">
    <input type="button" class="btn2" value="注册" οnclick="onSave()" />
    <input type="button" class="btn2" value="取消" οnclick="onCancel()" />
</div>
</body>
</html>

views/home/index.jsp里面就是登录成功的内容


总结

记录一下

猜你喜欢

转载自blog.csdn.net/weixin_60249074/article/details/124259558