文章摘要:
SSM框架集概述
理解spring框架IOC
mybatis框架sqlSessionFactory理解
理解Tomcat
图解SSM
SSM框架的一般注释
1.SSM框架集概述
SpringSpringmvcmybatis (SSM )框架集集成了spring和mybatis两个开源框架(springMVC是spring的一部分)。 一个简单的web项目框架作为数据源
斯普林
Spring就像一个在整个项目中组装bean的大型工厂,性能分析可以使用特定参数并通过指定调用实体类的构造方法来实例化对象。 也可以说是项目中的粘合剂。
Spring的中心思想是IoC (控件的逆转),程序员不需要明确地new对象,Spring框架可以帮助它。
SpringMVC
SpringMVC在项目中阻止用户请求,其核心servlet dispatcher servlet充当中介和前台,通过HandlerMapping使用户请求与Controller匹配。 Controller是为了具体满足请求而执行的操作。 SpringMVC相当于SSH框架的struts。
mybatis
mybatis是jdbc封装,使数据库的底层操作透明。 mybatis的所有操作都围绕sqlSessionFactory实例进行。 mybatis通过配置文件与每个实体类的Mapper文件相关联,Mapper文件配置了每个类数据库所需的sql语句的映射。 每次与数据库交互时,都从sqlSessionFactory中检索sqlSession并运行sql命令。
页面向控制器发送请求,控制器调用业务层的处理逻辑,逻辑层向持久层发送请求,持久层与数据库进行交互,并将结果返回给业务层,业务层将处理逻辑发送给控制器
图解SSM
简单的WEB项目框架图
客户端通过访问服务器端轻松地操作数据库。
1.SpringMVC的拦截器处理客户端发送到服务器端的请求
2 .分发器(DispacherServlet )分发请求返回到模型
3.SpringMVC的控制层(控制器)向业务逻辑层(service )传递请求
4 .业务逻辑层的接口实现类处理请求并将其传递给持久层(Mabatis )
5 .数据持久层(Dao接口)接收请求,调用方法操作数据并返回ModelAndView
6.DispacherServlet查询解析器,找到由ModelAndView指定的视图
7 .视图负责向客户端显示结果
SSM框架的一般注释
1.@SpringBootApplication
此注释是Spring Boot项目的基础,在创建Spring Boot项目时,缺省情况下会将其添加到主类中。 package com.cy;
importorg.spring framework.boot.spring application;
importorg.spring framework.boot.auto configure.springbootapplication;
@SpringBootApplication
公共类通知应用程序{
publicstaticvoidmain (string [ ] args ) {
spring application.run (notices application.class,args );
}
}
2.Spring Bean相关
2.1 @自动向导
由spring提供,可以记述属性、构筑方法、set方法等。
用于指示spring框架对属性或方法参数应用某些策略以执行赋值操作(DI )。
它会自动将对象导入到类中,导入的类也由Spring容器管理。 例如Dao系注入测试系,由package com.cy.pj;
import com.cy.pj.Dao.sysnoticedao;
import com.cy.pj.Dao.POJO.sysnoticepojo;
importorg.JUnit.Jupiter.API.test;
importorg.spring framework.beans.factory.annotation.auto wired;
importorg.spring framework.boot.test.context.springboottest;
import java.util.List;
/p>@SpringBootTest
public class SysNoticesTest {
@Autowired
private SysNoticeDao sysNoticeDao;
@Test
void testInsertNotice(){
//创建sysnotice对象,通过此对象封装要写入到数据库的数据
SysNoticePojo sysNoticePojo=new SysNoticePojo();
sysNoticePojo.setTitle("时间");
sysNoticePojo.setContent("2021/5/20");
sysNoticePojo.setStatus("1");
sysNoticePojo.setType("1");
sysNoticePojo.setCreatedUser("lldwt");
sysNoticePojo.setModifiedUser("lldwt");
//将sysnoticepojo对象持久化到数据库
sysNoticeDao.insertNotices(sysNoticePojo);
//此方法的实现内部会通过SQLSession向表中写数据
}
2.2@Component,@Repository,@Service,@Controller
我们一般使用@Autowired注解让Spring容器帮我们自动装配bean。想要把类表识成可用于@Autowired注解自动装配的bean类,可以采用这四个注解实现@Component:通用的注解,可表识任意类为spring组件。如果一个bean不知道属于哪个层,可以采用@Component注解表识
@Repository:对应持久层即Dao层,主要用于数据库相关操作
@Service:对应服务层,主要涉及一些复杂的逻辑,需要用到Dao层
@Controller:对应Spring MVC控制层,主要用于用户接收用户请求并调用Service层返回数据给前端页面
2.3@RestController
@RestController注解是@Controller和@ResponseBody的合集,表示这是一个控制器bean,并且将函数的返回值直接填入HTTP响应体中。
2.4@Scope
声明 Spring Bean 的作用域
四种常见的Spring Bean的作用域:
singleton:唯一bean实例,Spring中的bean默认都是单例的。
prototype:每次请求都会创建一个新的bean实例。
request:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。
session:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。
2.5@Configuration
一般用来声明配置类,可以使用@Component注解代替。
3.处理常见的HTTP请求类型
@RequestMapping (通用,适配所有请求方式)
GET:请求从服务器获取特定资源。举个例子:GET /users(获取所有学生)
POST:在服务器上创建一个新的资源。举个例子:POST /users(创建学生)
PUT:更新服务器上的资源(客户端提供更新后的整个资源)。举个例子:PUT /users/12(更新编号为 12 的学生)
DELETE:从服务器删除特定的资源。举个例子:DELETE /users/12(删除编号为 12 的学生)
PATCH:更新服务器上的资源(客户端提供更改的属性,可以看做作是部分更新),使用的比较少,这里就不举例子了
3.1GET请求
@GetMapping("users") 等价于@RequestMapping(value="/users",method=RequestMethod.GET)(处理 Get 请求,主要应用于查询)
3.2POST请求
@PostMapping("users") 等价于@RequestMapping(value="/users",method=RequestMethod.POST)(处理 post 请求,主要应用于新增操作)
3.3.PUT请求
@PutMapping("/users/{userId}") 等价于@RequestMapping(value="/users/{userId}",method=RequestMethod.PUT)(处理 put 请求,主要应用于更新操作)
3.4DELETE请求
@DeleteMapping("/users/{userId}")等价于@RequestMapping(value="/users/{userId}",method=RequestMethod.DELETE)(处理 delete 请求,主要应用于删除操作)
3.5PATCH请求
一般实际项目中,我们都是PUT不够用了之后才用 PATCH 请求去更新数据
4.前后端传值
4.1@PathVariable和@RequestParam
@PathVariable用于获取路径参数,(使用@GetMapping 从 rest 风格 url 中取{}变量的值注入给参数)
@RequestParam用于查询参数m(对传统风格 url 参数,请求方法中的 map 参数进行描述)@GetMapping("/klasses/{klassId}/teachers")
public List getKlassRelatedTeachers(
@PathVariable("klassId") Long klassId,
@RequestParam(value = "type", required = false) String type )
{}
如果我们请求的 url 是:/klasses/{123456}/teachers?type=web
那么我们服务获取到的数据就是:klassId=123456,type=web。
4.2@RequestBody,@ResponseBody
@RequestBody (将客户端 post 请求或者PUT请求的 json 值赋值给 pojo 或 map 参数)
用于读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的 body 部分并且Content-Type 为 application/json格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。系统会使用HttpMessageConverter或者自定义的HttpMessageConverter将请求的 body 中的 json 字符串转换为 java 对象。
@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。
作用:
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区
使用时机:
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
4.3@DateTimeFormat
@DateTimeFormat (假如是 pojo 参数,可以直接描述 pojo 日期属性)
响应结果要做统一封装
@ResponseBody(尽量将响应结果转换为 json 格式)
@JsonFormat(描述 pojo 属性或 get 方法,转 json 时按指定格式转换)
4.4@CrossOrigin
@CrossOrigin实现跨域
@CrossOrigin(origin="*",maxAge=3600)
origin代表允许访问的域列表,*表示可以是任何来源
maxAge代表响应前的缓存持续的最大时间(单位是秒)
@Mapper注解的作用
此注解由mybatis框架提供,用于描述"数据持久层接口",当项目启动时,系统底层会自动扫描启动类所在包以及子包中的类,假如发现某个接口上使用@Mapper注解进行描述,底层会为这个接口创建一个实现类,在实现类的内部定义基于SqlSession对象的会话过程。然后还会将这个类的实例交给spring管理。
@MapperScan("xxx")用在启动类上,通过使用@MapperScan可以指定要扫描的Mapper类的包的路径@SpringBootApplication
@MapperScan("com.kyddg.water.monitor.mapper")
public class Application {
@Qualifier("xxxx")
配合@Autowired来指定要注入的名字
但是@Repository注解标注的实现类使用会报错而@Service注解标注的实现类正常。
Tomcat的理解
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用[服务器],在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应[HTML]([标准通用标记语言]下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以优秀的草丛运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
tomcat面试题:
Tomcat面试题