# SSM框架搭建
**Repository Path**: jackierchan/buildSSM
## Basic Information
- **Project Name**: SSM框架搭建
- **Description**: SSM框架搭建,集成了一个小demo
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2022-03-29
- **Last Updated**: 2024-08-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# SSM框架搭建
**👵👵👵需求**:
🐱🚀🐱🚀🐱🚀使用ssm框架完成对 account 表的增删改查操作。
💖💖💖最后,框架搭建完后阿红,手写了一个完整的CRUD的demo,请看第9章节···
**步骤分析👀👀👀**
1. 准备数据库和表记录
2. 创建web项目
3. 编写mybatis在ssm环境中可以单独使用
4. 编写spring在ssm环境中可以单独使用
5. spring整合mybatis
6. 编写springMVC在ssm环境中可以单独使用
7. spring整合springMVC
## 1. 准备数据库和表记录
```java
CREATE TABLE `account` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`money` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
insert into `account`(`id`,`name`,`money`) values (1,'tom',1000),
(2,'jerry',1000);
```
## 2. 创建web项目

## 3.编写mybatis在ssm环境中可以单独使用
### 3.1 导入相关依赖
```java
war
mysql
mysql-connector-java
5.1.47
com.alibaba
druid
1.1.15
org.mybatis
mybatis
3.5.4
junit
junit
4.12
test
```
### 3.2 创建Account实体
```java
public class Account {
private Integer id;
private String name;
private String money;
//省略get和set方法
}
```
### 3.3 创建AccountDao接口
```java
/**
* 查询所有信息
* @return
*/
List findAll();
```
### 3.4 创建AccountDao.xml映射文件
```java
```
### 3.5 创建mybatis核心配置文件
**jdbc.properties文件:**
```xml
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/smd
jdbc.username=root
jdbc.password=root
```
**SqlMapConfig.xml文件:**
```java
```
### 3.6 测试代码
```java
public class MyTest {
@Test
public void findAccountInfo() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
AccountDao accountDao = sqlSession.getMapper(AccountDao.class);
List listAccount = accountDao.findAll();
for (Account account : listAccount) {
System.out.println(account);
}
// 释放资源
sqlSession.close();
}
}
```
### 3.7 测试结果

## 4. 编写spring在ssm环境中可以单独使用
### 4.1相关坐标
```java
org.springframework
spring-context
5.2.15.RELEASE
org.aspectj
aspectjweaver
1.8.13
org.springframework
spring-jdbc
5.0.6.RELEASE
org.springframework
spring-tx
5.2.15.RELEASE
org.springframework
spring-test
5.1.5.RELEASE
```
### 4.2 创建AccountService接口
```java
public interface AccountService {
List findAccount();
}
```
### 4.3 创建AccountServiceImpl实现
```java
@Service
public class AccountServiceImpl implements AccountService {
@Override
public List findAccount() {
System.out.println("执行了业务方法!");
return null;
}
}
```
### 4.4 创建spring核心配置文件
applicationContext.xml:
```xml
```
### 4.5 测试代码
```java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringTest {
@Autowired
private AccountService accountService;
@Test
public void test1(){
accountService.findAccount();
}
}
```
### 4.6 测试结果

## 5. spring整合mybatis
### 5.1 整合思想:
将mybatis接口代理对象的创建权交给spring管理,我们就可以把dao的代理对象注入到service中,此时也就完成了spring与mybatis的整合了。
也就是摒弃这几行代码,通过代理对象注入到service中。

### 5.2 导入整合包
```java
org.mybatis
mybatis-spring
1.3.1
```
### 5.3 spring配置文件管理mybatis
**注意:此时可以将mybatis主配置文件删除。**
```xml
```
### 5.4 修改AccountServiceImpl
```java
@Service
public class AccountServiceImpl implements AccountService {
@Autowired
private AccountDao accountDao;
@Override
public List findAccount() {
System.out.println("开始查询数据库信息!");
List list = accountDao.findAll();
return list;
}
}
```
### 5.5 运行结果

## 6. 配置springMVC在ssm环境中可以单独使用
访问到controller里面的方法查询所有账户,并跳转到list.jsp页面进行列表展示
### 6.1 导入相关依赖
```xml
org.springframework
spring-webmvc
5.1.5.RELEASE
javax.servlet
javax.servlet-api
3.1.0
javax.servlet.jsp
jsp-api
2.2
jstl
jstl
1.2
```
### 6.2 导入页面资源

### 6.3 配置前端控制器DispathcerServlet
```xml
DispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
2
DispatcherServlet
/
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
CharacterEncodingFilter
/*
404
/404.jsp
500
/500.jsp
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext.xml
```
### 6.4 AccountController和 list.jsp
```java
@Controller
public class AccountController {
@RequestMapping("/findAll")
public String findAll(Model model){
Account account = new Account();
List list = new ArrayList<>();
account.setId(1);
account.setName("张三");
account.setMoney("1000");
list.add(account);
model.addAttribute("list",list);
return "list";
}
}
```
```java
|
|
${account.id} |
${account.name} |
${account.money} |
修改 删除 |
```
### 6.5 配置springMVC核心配置文件
```xml
```
## 7. spring整合springMVC
### 7.1 整合思想
spring和springMVC其实根本就不用整合,本来就是一家。
但是我们需要做到spring和web容器整合,让web容器启动的时候自动加载spring配置文件,web容器销毁的时候spring的ioc容器也销毁。
### 7.2 spring和web容器整合
**ContextLoaderListener加载【掌握】**
可以使用spring-web包中的ContextLoaderListener监听器,可以监听servletContext容器的创建和销毁,来同时创建或销毁IOC容器。
```java
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext.xml
```
### 7.3 修改AccountController
```java
@Controller
public class AccountController {
@Autowired
private AccountService accountService;
@RequestMapping("/findAll")
public String findAll(Model model){
List account = accountService.findAccount();
model.addAttribute("list",account);
return "list";
}
}
```
## 8. spring配置声明式事务
```java
```
------
## 9. 框架演示
❤❤❤最后为了,框架的完整性,阿红特地写了一个demo
✨✨框架适用于毕业设计、或者大作业,需要的私信博主,或者直接下载也行
🎃项目功能有:
1. 查询账户所有基本信息
2. 实现账户信息的修改
3. 实现单条或多条信息的删除
🥠运行后项目主页:

🍿查询所有账户信息页面:
* url请求地址为:http://localhost:8080/SSM/account/findAll

🥞修改对应账户信息页面
* 跳转页面,并查询出对应的数据进行回显

🏎可多选或单选删除对应账户信息

❤❤❤都看到这了,动动小手点个关注吧❤❤❤
❤❤❤都看到这了,动动小手点个关注吧❤❤❤
❤❤❤都看到这了,动动小手点个关注吧❤❤❤
以上均为所有SSM的配置整合,整理不易,喜欢的请关注关注阿红。
