目录
一、SSM框架的简单介绍
1、什么是SSM框架呢?
二、SSM操作原理
1、Spring MVC:
2、Spring:
3、MyBatis:
三、SSM框架的搭建
1.新建一个项目。
2.创建好项目之后展开项目架构,如图:
3、首先将项目添加为WEB项目。
5.导入pom依赖包。
6.新建配置文件
spring-dao.xml
spring-service.xml
spring-web.xml
mybatis-config.xml
jdbc.properties
applicationContext.xml
web.xml
7.代码
UserController
UserMapper
UserMapper.xml
User
UserService
UserServiceImpl
index.jsp
web/WEB-INF/jsp/ok.jsp
四、tomcat配置
编辑
五、测试。
六、拓展添加AOP业务
1.实现查询项目中所有addUser的方法执行的时间。
2.测试
SSM框架就是Spring、Spring MVC和MyBatis框架的缩写,是标准的MVC模式,将整个系统划分为四层:表现层、controller层、service层、DAO层。使用SSM框架的好处是在于其易复用和简化开发,掌握了每个框架的核心思想。
其中,spring MVC负责请求的转发和视图管理;spring实现业务对象管理;MyBatis作为数据对象的持久化引擎。
客户端发送请求到DispacherServlet(分发器),由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller。Controller调用业务逻辑处理后,返回ModelAndView;.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图,视图负责将结果显示到客户端。
IOC容器应该就是我们平时开发接触最多的,它可以装载bean,有了这个机制,我们就不用在每次使用这个类的时候为它初始化,很少看到关键字new。另外spring的aop,事务管理等等都是我们经常用到的。
MyBatis是对jdbc的封装,它让数据库底层操作变的透明。MyBatis的操作都是围绕一个sqlSessionFactory实例展开的。MyBatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
工具:Tomcat maven mysql jdk idea
4、填充项目架构包:pojo mapepr service controller
junit
junit
4.13.1
test
org.mybatis
mybatis
3.5.10
org.springframework
spring-webmvc
5.3.22
org.springframework
spring-jdbc
5.3.22
org.mybatis
mybatis-spring
2.0.7
org.aspectj
aspectjweaver
1.9.7
org.projectlombok
lombok
1.18.24
org.springframework
spring-tx
5.3.22
mysql
mysql-connector-java
5.1.47
javax.servlet
jstl
1.2
src/main/java
**/*.xml
**/*.properties
src/main/resources
**/*.xml
**/*.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
jdbc.username=root
jdbc.password=123456
DispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-web.xml
1
DispatcherServlet
/
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
CharacterEncodingFilter
/*
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
index.jsp
package com.hl.ssm.controller;
import com.hl.ssm.pojo.User;
import com.hl.ssm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/**
* @author hl
* @Description
* @create 2023/11/30
*/
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/addUser")
public ModelAndView addUser(User user) {
System.out.println("======================进入controller了");
ModelAndView modelAndView = new ModelAndView();
userService.addUser(user);
System.out.println("addUser方法执行完成");
modelAndView.setViewName("ok");
return modelAndView;
}
}
package com.hl.ssm.mapper;
import com.hl.ssm.pojo.User;
import java.util.List;
/**
* @author hl
* @Description
* @create 2023/11/30
*/
public interface UserMapper {
List getList();
int addUser(User user);
}
insert into user values (null,#{name},#{pwd})
package com.hl.ssm.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author hl
* @Description
* @create 2023/11/30
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String name;
private String pwd;
}
package com.hl.ssm.service;
import com.hl.ssm.pojo.User;
import java.util.List;
/**
* @author hl
* @Description
* @create 2023/11/30
*/
public interface UserService {
List getList();
int addUser(User user);
}
package com.hl.ssm.service.impl;
import com.hl.ssm.mapper.UserMapper;
import com.hl.ssm.pojo.User;
import com.hl.ssm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author hl
* @Description
* @create 2023/11/30
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List getList() {
List list = userMapper.getList();
return list;
}
@Override
public int addUser(User user) {
int i = userMapper.addUser(user);
return i;
}
}
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8" language="java" isELIgnored="false" %>
测试
创建学生用户信息
注意:文件的位置。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
成功
添加成功,这是一个跳转页面!!!
在service层新建一个BookAdvice
package com.hl.ssm.service.aop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
/**
* @author hl
* @Description
* @create 2023/11/30
*/
@Aspect
@Component
public class BookAdvice {
@Around("execution(* com.hl.ssm.*.*.addUser(..))")
public Object method(ProceedingJoinPoint pjp) throws Throwable {
//目标运行的时间
long starttime = System.nanoTime();
//执行目标方法
Object result = pjp.proceed();
//目标结束时间
long endtime =System.nanoTime();
//end -start
long datatime=(endtime-starttime)/1000000;
System.out.println("目标运行的方法"+pjp.toShortString()+"时间:"+datatime+"豪秒" );
return result;
}
}