1.创建SSM-Parent父项目
修改配置文件
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
com.qbb
ssm-parent
1.0-SNAPSHOT
pom
8
8
4.0.1
2.3.3
3.0.12.RELEASE
5.3.9
1.18.20
1.7.30
1.2.5
7.0.1.Final
1.4
2.0.6
1.2.6
3.5.7
5.1.48
5.2.1
4.13.2
junit
junit
${junit.version}
test
org.springframework
spring-context
${spring.version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-expression
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-jcl
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-aspects
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-web
${spring.version}
commons-fileupload
commons-fileupload
${fileupload.version}
org.hibernate.validator
hibernate-validator
${hibernate-validator.version}
javax.servlet
javax.servlet-api
${servlet.version}
javax.servlet.jsp
javax.servlet.jsp-api
${jsp.version}
org.thymeleaf
thymeleaf-spring5
${thymeleaf.version}
org.mybatis
mybatis-spring
${mybatis-spring.version}
org.mybatis
mybatis
${mybatis.version}
com.alibaba
druid
${druid.version}
mysql
mysql-connector-java
${mysql.version}
com.github.pagehelper
pagehelper
${pagehelper.version}
org.projectlombok
lombok
${lombok.version}
org.slf4j
slf4j-api
${slf4j.version}
ch.qos.logback
logback-classic
${logback.version}
2.创建SSM-entity模块
<?xml version="1.0" encoding="UTF-8"?>
ssm-parent
com.qbb
1.0-SNAPSHOT
4.0.0
com.qbb
ssm-entity
org.projectlombok
lombok
创建数据库
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`username` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
`password` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户表' ROW_FORMAT = Compact;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'zs', '123');
SET FOREIGN_KEY_CHECKS = 1;
创建实体类User
package com.qbb.ssm.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author QiuQiu&LL (博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-03-04 17:09
* @Description:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String username;
private String password;
}
3.创建ssm-mapper模块
<?xml version="1.0" encoding="UTF-8"?>
ssm-parent
com.qbb
1.0-SNAPSHOT
4.0.0
com.qbb
ssm-mapper
com.qbb
ssm-entity
1.0-SNAPSHOT
junit
junit
test
org.springframework
spring-context
org.springframework
spring-core
org.springframework
spring-expression
org.springframework
spring-beans
org.springframework
spring-jcl
org.springframework
spring-aop
org.springframework
spring-aspects
org.springframework
spring-tx
org.springframework
spring-jdbc
org.springframework
spring-test
org.mybatis
mybatis-spring
org.mybatis
mybatis
com.alibaba
druid
mysql
mysql-connector-java
com.github.pagehelper
pagehelper
org.slf4j
slf4j-api
ch.qos.logback
logback-classic
创建mapper接口
package com.qbb.ssm.mapper;
import com.qbb.ssm.entity.User;
import java.util.List;
/**
* @author QiuQiu&LL (博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-03-04 17:54
* @Description:
*/
public interface UserMapper {
List findAll();
}
创建Mybatis核心配置文件SqlMapConfig
<?xml version="1.0" encoding="UTF-8" ?>
创建Mapper映射文件
<?xml version="1.0" encoding="UTF-8" ?>
创建jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/qbbit3?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
4.创建ssm-service模块
<?xml version="1.0" encoding="UTF-8"?>
ssm-parent
com.qbb
1.0-SNAPSHOT
4.0.0
com.qbb
ssm-service
com.qbb
ssm-mapper
1.0-SNAPSHOT
junit
junit
创建Service接口及实现类
package com.qbb.ssm.service;
import com.qbb.ssm.entity.User;
import java.util.List;
/**
* @author QiuQiu&LL (博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-03-04 18:46
* @Description:
*/
public interface UserService {
List findAll() throws Exception;
}
package com.qbb.ssm.service.impl;
import com.qbb.ssm.entity.User;
import com.qbb.ssm.mapper.UserMapper;
import com.qbb.ssm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author QiuQiu&LL (博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-03-04 18:48
* @Description:
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List findAll() {
return userMapper.findAll();
}
}
创建Spring核心配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
true
编写一个测试类试一下
package com.qbb.ssm.service;
import com.qbb.ssm.entity.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
/**
* @author QiuQiu&LL (博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-03-04 19:20
* @Description:
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath*:applicationContext.xml")
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void findAll() throws Exception {
List all = userService.findAll();
System.out.println(all);
}
}
5.创建ssm-web模块
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
com.qbb
ssm-parent
1.0-SNAPSHOT
ssm-entity
ssm-mapper
ssm-service
ssm-web
pom
8
8
4.0.1
2.3.3
3.0.12.RELEASE
5.3.9
1.18.20
1.7.30
1.2.5
7.0.1.Final
1.4
2.0.6
1.2.6
3.5.7
5.1.48
5.2.1
4.13.2
junit
junit
${junit.version}
test
org.springframework
spring-context
${spring.version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-expression
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-jcl
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-aspects
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-web
${spring.version}
commons-fileupload
commons-fileupload
${fileupload.version}
org.hibernate.validator
hibernate-validator
${hibernate-validator.version}
javax.servlet
javax.servlet-api
${servlet.version}
javax.servlet.jsp
javax.servlet.jsp-api
${jsp.version}
org.thymeleaf
thymeleaf-spring5
${thymeleaf.version}
org.mybatis
mybatis-spring
${mybatis-spring.version}
org.mybatis
mybatis
${mybatis.version}
com.alibaba
druid
${druid.version}
mysql
mysql-connector-java
${mysql.version}
com.github.pagehelper
pagehelper
${pagehelper.version}
org.projectlombok
lombok
${lombok.version}
org.slf4j
slf4j-api
${slf4j.version}
ch.qos.logback
logback-classic
${logback.version}
创建UserController接口
package com.qbb.ssm.controller;
import com.qbb.ssm.entity.User;
import com.qbb.ssm.exception.MySSMException;
import com.qbb.ssm.service.UserService;
import com.qbb.ssm.util.ResultEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
* @author QiuQiu&LL (博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-03-04 19:33
* @Description:
*/
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/test")
@ResponseBody
public String test(){
return "测试";
}
@GetMapping("/findAll")
@ResponseBody
public ResultEntity findAll() throws MySSMException {
try {
List userList = userService.findAll();
return ResultEntity.successWithData(userList);
} catch (Exception e) {
e.printStackTrace();
throw new MySSMException();
}
}
}
创建统一异常处理机制
package com.qbb.ssm.exception;
import org.springframework.web.bind.annotation.ControllerAdvice;
import java.security.PrivilegedActionException;
/**
* @author QiuQiu&LL (博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-03-04 19:36
* @Description:自定义异常
*/
public class MySSMException extends Exception{
public MySSMException() {
}
public MySSMException(String message) {
super(message);
}
public MySSMException(String message, Throwable cause) {
super(message, cause);
}
public MySSMException(Throwable cause) {
super(cause);
}
public MySSMException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
package com.qbb.ssm.util;
import com.qbb.ssm.exception.MySSMException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
/**
* @author QiuQiu&LL (博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-03-04 19:41
* @Description:
*/
@ControllerAdvice
public class MyExceptionResolver {
@ExceptionHandler(MySSMException.class)
public ModelAndView mySSMException() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorMsg", "抱歉,网络出现故障了,请联系管理员[电话:18888888888]或稍后再试!");
modelAndView.setViewName("error");
return modelAndView;
}
}
创建SpringMVC核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
修改web.xml
<?xml version="1.0" encoding="UTF-8"?>
contextConfigLocation
classpath*:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
dispatcherServlet
/
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceRequestEncoding
true
forceResponseEncoding
true
characterEncodingFilter
/*
hiddenHttpMethodFilter
org.springframework.web.filter.HiddenHttpMethodFilter
hiddenHttpMethodFilter
/*
创建页面
用户列表
测试
至此,SSM框架整合完毕,其他的增删改我就不一一测试了...开始进军SpringBoot