文章简介:

SSM框架集简介

spring框架IOC的理解

mybatis框架sqlSessionFactory理解

Tomcat的理解

图解SSM

SSM框架常用注解

1.SSM框架集简介

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架

Spring

Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。

Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。

SpringMVC

SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。

mybatis

mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。

图解SSM

简单的WEB项目框架图

客户端访问服务端对数据库进行简单操作:

1.SpringMVC的Interceptor拦截器对客户端向服务端发送的请求进行处理

2.分发器(DispacherServlet)分发请求返回model

3.SpringMVC的控制层(controller)将请求传递到业务逻辑层(service)

4.业务逻辑层的接口实现类对请求处理并传递到持久层(Mabatis)

5.数据持久层(Dao接口)接收请求并调用方法对数据进行操作返回ModelAndView

6.DispacherServlet查询视图解析器,找到ModelAndView指定的视图

7.视图负责将结果显示到客户端

SSM框架常用注解

1.@SpringBootApplication

这个注解是 Spring Boot 项目的基石,创建 SpringBoot 项目之后会默认在主类加上。package com.cy;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class NoticesApplication {

public static void main(String[] args) {

SpringApplication.run(NoticesApplication.class, args);

}

}

2.Spring Bean相关

2.1 @Autowired

由spring提供,可以描述属性,构造方法,set方法等。

用于告诉spring框架,为属性或方法参数采用一定的策略进行赋值操作(DI)。

自动导入对象到类中,被注入进的类同样要被 Spring 容器管理。比如Dao类注入到测试类中package com.cy.pj;

import com.cy.pj.dao.SysNoticeDao;

import com.cy.pj.dao.pojo.SysNoticePojo;

import org.junit.jupiter.api.Test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@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("tony");

sysNoticePojo.setModifiedUser("tony");

//将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.lz.water.monitor.mapper")

public class Application {

@Qualifier("xxxx")

配合@Autowired来指定要注入的名字

但是@Repository注解标注的实现类使用会报错而@Service注解标注的实现类正常。

Tomcat的理解

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用[服务器],在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应[HTML]([标准通用标记语言]下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

tomcat面试题:

Tomcat面试题

java ssm框架论文,ssm框架理解相关推荐

  1. 汽车维修管理系统汽车维修管理系统采用B / S架构,主要使用Java技术进行开发,结合最新流行的java和mysql的SSM框架技术。

    摘 要 21世纪是一个知识大爆炸的时代,互联网拉近了人们的距离,信息化革命席卷了各个行业.物质生活水平的提高使得人们的消费观念悄然发生改变,人们对汽车维修管理系统的要求越来越高,这对于传统汽车维修管理 ...

  2. Java Web 程序设计----基于SSM框架(正在更新中)

    Java Web 程序设计----基于SSM框架 提示:主要用于个人学习.复习.查阅等. 文章目录 Java Web 程序设计----基于SSM框架 一.网页前端开发基础 HTML文档结构 提示:以下 ...

  3. Java语言开发在线音乐推荐网 音乐推荐系统 网易云音乐爬虫 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)框架 大数据、人工智能、机器学习项目开发

    Java语言开发在线音乐推荐网 音乐推荐系统 网易云音乐爬虫 基于用户.物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)框架 大数据.人工智能.机器学习项目开发Mus ...

  4. Java项目:基于ssm框架个人博客系统多用户(计算机毕业设计)

    本系统实现个人博客的主要基本功能有主界面,用户注册,用户登录,发表文章,浏览文章,发表评论等.这里主要是区分了个人博客的注册用户和游客.注册用户,可以在任何时候写下自己的主张,记录下自己的点点滴滴.而 ...

  5. ssm毕设项目基于框架的众筹管理系统f5244(java+VUE+Mybatis+Maven+Mysql+sprnig)

    ssm毕设项目基于框架的众筹管理系统f5244(java+VUE+Mybatis+Maven+Mysql+sprnig) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + ...

  6. Java语言开发在线美食推荐网 美食推荐系统 基于用户、物品的协同过滤推荐算法实现 SSM(Spring+SpringMVC+Mybatis框架 人工智能、大数据、机器学习项目开发

    Java语言开发在线美食推荐网 美食推荐系统 基于用户.物品的协同过滤推荐算法实现 SSM(Spring+SpringMVC+Mybatis框架 人工智能.大数据.机器学习项目开发FoodRecomm ...

  7. java 整合redis缓存 SSM 后台框架 rest接口 shiro druid maven bootstrap html5

    获取[下载地址]   三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 调用摄像 ...

  8. ssm毕设项目基于框架的中医养生系统i9830(java+VUE+Mybatis+Maven+Mysql+sprnig)(1)

    ssm毕设项目基于框架的中医养生系统i9830(java+VUE+Mybatis+Maven+Mysql+sprnig)(1) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysq ...

  9. java交易系统_基于SSM框架的JAVA二手交易系统

    最近了解了二手交易系统项目,在这个平台记录一下这个二手交易系统项目,方便以后再次使用或学习的时候能够及时的翻阅.在完成这个项目的时候,考虑了很多框架.最终决定选用SSM(MYECLIPSE),该框架具 ...

  10. java ssh优势_java框架组合ssm和ssh各自的优势是什么?

    SSM和SSH不同主要在MVC实现方式,以及ORM持久化方面不同(Hiibernate与Mybatis). SSM优势: SSM越来越轻量级配置,将注解开发发挥到极致,且ORM实现更加灵活,SQL优化 ...

最新文章

  1. RTT 动态线程和静态线程
  2. JavaScript 函数 伪数组 arguments
  3. Java线程之守护线程(Daemon) .
  4. figma下载_何时在Figma中使用组或框架
  5. 项目管理过程组和知识领域
  6. c# dynamic 类型调用静态方法实例
  7. 1.4. trac.ini
  8. 在Spring IoC中,依赖注入和依赖查找的数据来源区别
  9. 代码分析工具推荐Understand
  10. 数据库——数据库练习题
  11. java实验报告_java实验报告
  12. 非模式物种ROSE超级增强子鉴定分析详解
  13. Node.js git命令
  14. 独立版微信动态二维码活码管理系统免授权版
  15. java_多线程下载
  16. 手把手教你搭建LAMP环境,运行第一个属于你的个人网站
  17. 知乎日报 API 分析
  18. 计算机系学生未来憧憬,北京科技大学计算机与通信工程学院-脚踏实地,展望未来——计通学院2018级本科生年级会...
  19. 高防CDN如何防御网络攻击
  20. 店铺综合分中有关排序和等份的问题

热门文章

  1. python主函数_python main函数
  2. vs201X的TFS(Team Foundation Server) 设置为:不自动签出
  3. 【完结】囚生CYの备忘录(20220906-20221120)
  4. PNP三极管限流电路分析
  5. 关于扫描枪输入英文乱码问题
  6. idea修改注释模板
  7. MISRA C 2004
  8. Hexo-Next主题配置
  9. 基于php的人力资源管理系统,基于thinkPHP框架的人力资源管理系统
  10. 超全!最新互联网大厂的薪资和职级一览