1.目录结构。
2.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>com.cxb.ssm</groupId>
<artifactId>springboot-ssm</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-ssm</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/>
<!-- 写了点注释。。。 -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<!-- jstl标签库 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.User
package com.cxb.ssm.entity;
/**
* 实体类
*/
public class User {
private Long id;
private String userName;//用户名
private String nickName;//昵称
private String password;//密码
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4.UserMapper
package com.cxb.ssm.dao;
import com.cxb.ssm.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
/**
* User实体映射器接口
* @Mapper注解是Mybatis框架用的,标记为映射器
* @Repository注解是Spring框架用的,标记为一个Bean
*/
@Mapper
@Repository
public interface UserMapper {
User login(@Param("userName")String userName,
@Param("password")String password);
}
5.UserService
package com.cxb.ssm.service;
import com.cxb.ssm.entity.User;
/**
* 业务接口
*/
public interface UserService {
User login(String uName, String pwd);
}
6.UserServiceImpl
package com.cxb.ssm.service.impl;
import com.cxb.ssm.dao.UserMapper;
import com.cxb.ssm.entity.User;
import com.cxb.ssm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 业务实现类
*/
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User login(String uName, String pwd) {
return userMapper.login(uName,pwd);
}
}
7.UserController
package com.cxb.ssm.controller;
import com.cxb.ssm.entity.User;
import com.cxb.ssm.service.UserService;
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 javax.servlet.http.HttpSession;
/**
* SpringMVC控制器类
*/
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
//@GetMapping注解表示以GET方法请求/user/login.do时运行本方法
@GetMapping("/login.do")
public String toLogin(){
return "login";
}
//@PostMapping注解表示以POST方法请求/user/login.do时运行本方法
@PostMapping("/login.do")
public String login(String userName, String password,
HttpSession session,Model model){
User user = userService.login(userName,password);
if(user != null){
session.setAttribute("user",user);
model.addAttribute("user",user);
return "index";
}
return "login";
}
}
8.启动类
package com.cxb.ssm;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SsmDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SsmDemoApplication.class, args);
}
}
9.application.properties
#tomcat端口
server.port=8081
#日志级别,避免运行时日志过多,SSM三个框架的包日志详细一点,设为debug
logging.level.org.springframework=debug
logging.level.org.mybatis=debug
logging.level.org.apache.ibatis=debug
#数据连接配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/smbms?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driverClassName=com.mysql.jdbc.Driver
#SpringMVC相关页面解析器配置
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
#Mybatis SQL文件、实体类别名扫描的包
mybatis.mapper-locations=classpath*:mapper/*.xml
mybatis.type-aliases-package=com.cxb.ssm.entity
10.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.cxb.ssm.dao.UserMapper">
<select id="login" resultType="User">
select * from smbms_user
where userCode=#{userName} and userPassword=#{password}
</select>
</mapper>
11.index.jsp
<%--
Created by IntelliJ IDEA.
User: newton
Date: 2018-8-17
Time: 11:47
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首页</title>
</head>
<body>
亲爱的${user.userName},欢迎登录首页!
</body>
</html>
12.login.jsp
<%--
Created by IntelliJ IDEA.
User: newton
Date: 2018-8-17
Time: 11:45
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/user/login.do" method="post">
<input type="text" name="userName" required maxlength="24"/>
<input type="password" name="password" required maxlength="24"/>
<input type="submit" value="登录"/>
<br/>
</form>
</body>
</html>
13.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
14.启动项目测试
数据库sql:
-- --------------------------------------------------------
-- 主机: 127.0.0.1
-- 服务器版本: 5.6.40 - MySQL Community Server (GPL)
-- 服务器操作系统: Win64
-- HeidiSQL 版本: 8.2.0.4675
-- --------------------------------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-- 导出 smbms 的数据库结构
CREATE DATABASE IF NOT EXISTS `smbms` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `smbms`;
-- 导出 表 smbms.smbms_user 结构
CREATE TABLE IF NOT EXISTS `smbms_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`userCode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户编码',
`userName` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户名称',
`userPassword` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户密码',
`gender` int(10) DEFAULT NULL COMMENT '性别(1:女、 2:男)',
`birthday` date DEFAULT NULL COMMENT '出生日期',
`phone` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '手机',
`address` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '地址',
`userRole` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户角色(取自角色表-角色id)',
`creationDate` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT;
-- 正在导出表 smbms.smbms_user 的数据:~1 rows (大约)
DELETE FROM `smbms_user`;
/*!40000 ALTER TABLE `smbms_user` DISABLE KEYS */;
INSERT INTO `smbms_user` (`id`, `userCode`, `userName`, `userPassword`, `gender`, `birthday`, `phone`, `address`, `userRole`, `creationDate`) VALUES
(1, '1001', '小石潭记', '123456', 1, '2020-05-15', '18025696965', '重庆市忠县', '管理员', '2020-05-15 22:58:46');
/*!40000 ALTER TABLE `smbms_user` ENABLE KEYS */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
http://localhost:8081/user/login.do
登陆成功,显示了用户名:小石潭记。
项目地址:https://github.com/ChenXbFrank/springboot-ssm