SSM项目搭建及实现简单的登录

前置说明

使用开发工具 IntelliJ IDEA;
Java 版本1.8.0_251;
使用数据库是关系型数据库MySQL;

项目整体目录:

在这里插入图片描述

项目创建:

点击file – new – project — 选择 maven 模板如下:
在这里插入图片描述
点击next,输入项目名称等
在这里插入图片描述

填好后,选择自己的maven配置文件
在这里插入图片描述
创建好后,在main下没有Java、resources文件夹,需要自己创建,右键main文件夹,new创建java文件夹、resources文件夹,然后右键java文件夹,选择如下:
在这里插入图片描述
右键resources文件夹,同样做如下操作:
在这里插入图片描述

pom添加依赖:

<!--SpringMVC的jar包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.2.RELEASE</version>
    </dependency>
    <!--mysql连接的jar包-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.18</version>
    </dependency>
    <!-- SpringJDBC -->
    <!-- 注意:与当前项目使用的其它spring依赖保持相同的版本号 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.2.RELEASE</version>
    </dependency>
    <!--数据库连接池dbcp的jar包-->
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>
    <!--MyBatis的jar包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.3</version>
    </dependency>
    <!--Spring整合MyBatis的jar包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.3</version>
    </dependency>
    <!--测试包-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

web.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">
  <display-name>Archetype Created Web Application</display-name>

  <!--配置过滤器,解决中文乱码 -->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--配置spring监听器,默认只加载WEB-INF文件下面的applicationContext.xml配置文件 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!--改变默认配置文件路径 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

  <!--前端控制器 -->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <!--servlet加载springmvc配置文件  -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

jdbc.properties配置文件:

url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
driver=com.mysql.cj.jdbc.Driver
username=root
password=123456
initialSize=2
maxActive=10

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:util="http://www.springframework.org/schema/util"
       xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 自动扫描 -->
    <context:component-scan base-package="com.ssm01.dao"></context:component-scan>
    <context:component-scan base-package="com.ssm01.service"></context:component-scan>
    <context:component-scan base-package="com.ssm01.serviceImpl"></context:component-scan>

    <util:properties id="properties" location="classpath:jdbc.properties"/>
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="url" value="#{properties.url}"/>
        <property name="driverClassName" value="#{properties.driver}" />
        <property name="username" value="#{properties.username}" />
        <property name="password" value="#{properties.password}" />
        <property name="initialSize" value="#{properties.initialSize}" />
        <property name="maxActive" value="#{properties.maxActive}" />
    </bean>

    <!-- 配置MapperScannerConfigurer -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 配置接口文件在哪里 -->
        <property name="basePackage" value="mapper" />
    </bean>

    <!-- 配置SqlSessionFactoryBean -->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 配置XML文件在哪里 -->
        <property name="mapperLocations" value="classpath:mappers/*.xml" />
        <!-- 配置使用哪个数据源连接数据库 -->
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- spring自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.ssm01.dao"></property>
    </bean>
</beans>

springmvc.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <!--配置包扫描,扫描到加注解的类自动创建bean组件-->
    <context:component-scan base-package="com.ssm01.controller"/>

    <!-- 2.配置映射处理和适配器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

    <!-- 3.视图的解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

业务逻辑实现

配置文件建好后,在Java包下创建需要的Java包,及类。

创建user实体类

package com.ssm01.entity;

import java.io.Serializable;

public class User implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    public int id;
    public String userNo;
    public String userName;
    public String pwd;
    public String sex;
    public int age;
    public String job;
    public String phone;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUserNo() {
        return userNo;
    }
    public void setUserNo(String userNo) {
        this.userNo = userNo;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", userNo=" + userNo + ", userName="
                + userName + ", pwd=" + pwd
                + ", sex=" + sex + ", age=" + age + ", job=" + job + ", phone="
                + phone + "]";
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + age;
        result = prime * result + id;
        result = prime * result + ((job == null) ? 0 : job.hashCode());
        result = prime * result + ((phone == null) ? 0 : phone.hashCode());
        result = prime * result + ((pwd == null) ? 0 : pwd.hashCode());
        result = prime * result + ((sex == null) ? 0 : sex.hashCode());
        result = prime * result
                + ((userName == null) ? 0 : userName.hashCode());
        result = prime * result + ((userNo == null) ? 0 : userNo.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        User other = (User) obj;
        if (age != other.age)
            return false;
        if (id != other.id)
            return false;
        if (job == null) {
            if (other.job != null)
                return false;
        } else if (!job.equals(other.job))
            return false;
        if (phone == null) {
            if (other.phone != null)
                return false;
        } else if (!phone.equals(other.phone))
            return false;
        if (pwd == null) {
            if (other.pwd != null)
                return false;
        } else if (!pwd.equals(other.pwd))
            return false;
        if (sex == null) {
            if (other.sex != null)
                return false;
        } else if (!sex.equals(other.sex))
            return false;
        if (userName == null) {
            if (other.userName != null)
                return false;
        } else if (!userName.equals(other.userName))
            return false;
        if (userNo == null) {
            if (other.userNo != null)
                return false;
        } else if (!userNo.equals(other.userNo))
            return false;
        return true;
    }

}

创建UserDao

package com.ssm01.dao;

import com.ssm01.entity.User;

import java.util.List;

public interface UserDao {

    public User login(User user);

    public User add(User user);

    public User update(User user);

    public boolean delete(int id);

    public List<User> selectList();

}

创建UserService

package com.ssm01.service;

import com.ssm01.entity.User;

import java.util.List;
import java.util.Map;

public interface UserService {

    public Map<String, Object> login(User user);

    public Map<String, Object> add(User user);

    public Map<String, Object> update(User user);

    public boolean delete(int id);

    public List<User> selectList();

}

创建UserServiceImpl

package com.ssm01.serviceImpl;

import com.ssm01.dao.UserDao;
import com.ssm01.entity.User;
import com.ssm01.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class UserServiceImpl implements UserService {

    @Resource
    UserDao userDao;

    @Override
    public Map<String, Object> login(User user) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("data", userDao.login(user));
        return map;
    }

    @Override
    public Map<String, Object> add(User user) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("data", userDao.add(user));
        return map;
    }

    @Override
    public Map<String, Object> update(User user) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("data", userDao.update(user));
        return map;
    }

    @Override
    public boolean delete(int id) {
        return userDao.delete(id);
    }

    @Override
    public List<User> selectList() {
        return userDao.selectList();
    }

}

创建UserController

package com.ssm01.controller;

import com.ssm01.entity.User;
import com.ssm01.service.UserService;
import com.ssm01.util.ResultMessage;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping(value = "/user")
public class UserController {


    @Resource
    UserService userService;

    @ResponseBody
    @RequestMapping(value = "/login", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
    public ResultMessage login(User user){

        List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
        try {
            Map<String, Object> map = userService.login(user);
            list.add(map);
            return ResultMessage.newInstance(0, "登录成功", list);
        } catch (Exception e) {
            e.printStackTrace();
            return ResultMessage.newInstance(1, "登录失败", list);
        }
    }

    @ResponseBody
    @RequestMapping(value = "/selectList", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
    public ResultMessage selectList(){
        List<User> list = new ArrayList<User>();
        try {
            list = userService.selectList();
            return ResultMessage.newInstance(0, "查询成功", list);
        } catch (Exception e) {
            e.printStackTrace();
            return ResultMessage.newInstance(1, "查询失败", list);
        }
    }

}

创建请求返回实体类ResultMessage

package com.ssm01.util;

import java.io.Serializable;
import java.util.List;

public class ResultMessage implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    private int code = 0;
    private String message;
    private List<?> data;

    public ResultMessage(){
    }

    public ResultMessage(int code, String message, List<?> data){
        this.code = code;
        this.message = message;
        this.data = data;
    }

    public static ResultMessage newInstance(int code, String message, List<?> data){
        ResultMessage obj = new ResultMessage();
        obj.code = code;
        obj.message = message;
        obj.data = data;
        return obj;
    }


    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public List<?> getData() {
        return data;
    }

    public void setData(List<?> data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "ResultMessage [code=" + code + ", message=" + message
                + ", data=" + data + "]";
    }

}

创建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.ssm01.dao.UserDao">

    <resultMap type="com.ssm01.entity.User" id="UserResult">
        <id property="id" column="id"></id>
        <result property="userName" column="user_name"></result>
        <result property="pwd" column="password"></result>
    </resultMap>

    <select id="login" parameterType="com.ssm01.entity.User" resultMap="UserResult">
 		select * from user where user_name=#{userName} and password=#{pwd}
 	</select>

    <insert id="add" parameterType="com.ssm01.entity.User" useGeneratedKeys="true">
 		insert into user (user_name,password) values(#{userName},#{pwd})
 	</insert>

    <select id="selectList" resultType="com.ssm01.entity.User">
        select
         id as id,
         user_no as userNo,
         user_name as userName,
         password as pwd,
         sex as sex,
         age as age,
         job as job,
         phone as phone from user where 1=1
    </select>

</mapper>

前端页面

修改index.jsp作为登录页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<!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>
</head>
<body>
<a href="add.jsp">注册</a>&nbsp;<br/>
<form action="${pageContext.request.contextPath}/user/login" method="post">
    userName:<input type="text" name="userName" value="${userName}"/><br/>
    passWord:<input type="password" name="pwd" value="${pwd}"/><br/>
    <input type="submit" value="登录"/><br/>
    <font color="red">${errorMsg}</font>
</form>
</body>
</html>

服务启动

添加完成后,需要配置Tomcat
在这里插入图片描述
点击左上角的加号图标
在这里插入图片描述
找到tomcat server,点击下面的local
在这里插入图片描述
做如下选择处理,最后点击fix;这里需要修改Tomcat的配置文件,这里是已经修改后的结果,如需修改请自行百度
在这里插入图片描述
做如下选择后点击OK
在这里插入图片描述
这里可以把library添加进来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
都配置好后,即可启动工程,启动工程后回自动跳转浏览器,打开localhost:8081/SSM01

如下即是我们项目启动后请求到的jsp页面,表示项目运行成功,这里的话因为我是准备做前后端分离开发,所以这里的jsp页面先不做请求返回处理,具体的前端返回处理会在前端工程中做处理,前端vue工程已写了另一篇文章,专门介绍如何使用vue搭建前端工程,有兴趣可以查看。
在这里插入图片描述
数据库建表语句,这里去除了userCode字段,因为在业务中没有实际的使用,代码中也去除了该字段。其他创建时间、修改时间等字段在以上系统中没有使用,可用可不用,正常系统都会有这些字段。可添加base实体类,管理公共字段,让其他业务实体继承base实体即可。

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_no` varchar(50) NOT NULL COMMENT '用户编号',
  `user_name` varchar(50) NOT NULL COMMENT '用户名称',
  `password` varchar(80) NOT NULL COMMENT '用户密码',
  `sex` enum('男','女') NOT NULL DEFAULT '男' COMMENT '性别',
  `age` int(3) DEFAULT NULL COMMENT '年龄',
  `job` varchar(50) DEFAULT NULL COMMENT '工作',
  `phone` varchar(20) DEFAULT NULL COMMENT '电话',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建人',
  `modify_time` datetime DEFAULT NULL COMMENT '修改时间',
  `modify_user` varchar(50) DEFAULT NULL COMMENT '修改人',
  `del_flg` int(2) NOT NULL DEFAULT '1' COMMENT '删除标识',
  PRIMARY KEY (`id`),
  UNIQUE KEY `index_user_no` (`user_no`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户信息表'
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值