华清远见-重庆中心-框架阶段知识点梳

Spring

一个轻量级开源的java框架,是一个管理项目中对象的容器,同时也是其他框架的粘合器,目的就是对项目进行解耦。

类上加的注解

  • @Component

  • 当一个类不好归纳时。定义为普通组件

  • @Controller

  • 定义一个类为控制层组件

  • @Service

  • 定义一个类为业务层组件

  • @Repository

  • 定义一个类为持久层组件

AOP

Aspect Oriented Propramming 面向切面编程AOP

AOP不是OOP和POP的替代,而是增强、拓展和延伸。

AOP就是将不同位置中重复出现的一些事情拦截到一处进行统一处理。

MVC

MVC设计思想并不是某个语言特有的设计思想,而是一种通用的模式。

是将一个应用分为三个组成部分:Model模型,View视图,Controller控制器

这样会降低系统耦合性,提高它的可扩展性和维护性。

SpringMVC

SpringMVC可以替换Servlet,SpringMVC是Spring框架中位于Web开发中的一个模块,是Spring基于MVC设计模式设计的轻量级Web框架。

原理:配置SpringMVC中的DispatcherServlet,将其映射设置为/或*.do。

如果是/表示一切请求先经过它,如果是*.do表示以.do结尾的请求先经过它,

它对该请求进行解析,指定某个Controller中的某个方法,这些方法通常返回一个字符串,

这个字符串是一个页面的名称,再通过视图解析器,将该字符串解析为某个视图的名称,跳转到该视图页面。

SpringMVC相关注解

@Controller

只能写在类上,表示该类属于一个控制器

@RequestMapping("/请求映射名") 或 @RequestMapping(value="/请求映射名") 或 @RequestMapping(path="/请求映射名")

该注解可以写在类或方法上,通常在类上添加@RequestMapping用于区分不同模块

默认一个属性或value或path后的值,都表示访问该类或该方法时的请求

@RequestMapping(value="/请求映射名",method=RequestMethod.GET/POST/PUT/DELETE)

method属性表示使用哪种请求方式访问该类或该方法

如果注解中不止一个属性,每个属性都需要指定属性名

@GetMapping("/请求映射名")相当于@RequestMapping(value="/请求映射名",method=RequestMethod.GET)

post、put、delete同理

@GetMapping只能写在方法上

@PathVariable

该注解写在某个方法的某个形参上

通常配合@RequestMapping("/{path}")获取请求时传递的参数

@RequestParam(value="传递的参数名",defaultValue="没有传递参数时的默认值")

该注解写在某个方法的某个参数上

用于获取提交的数据,可以设置默认值在没有提交数据时使用

ORM

Object Relational Mapping 对象关系映射

创建java类的对象,将其属性和数据库表中的字段名之间构建映射关系。

这样通过操作该类创建的一个对象,就能操作数据库中对应的数据表。

ORM框架就是对象关系映射框架,用于简化JDBC。

主流的ORM框架有Hibernate、JPA、MyBatis、MyBatisPlus等

MyBatis

一个半自动化的ORM框架,原本叫做ibatis,后来升级改名为MyBatis。

MyBatis免去了几乎所有的JDBC中的模板代码以及设置参数获取结果集的工作。

使用XML文件或注解的形式,将SQL语句映射为持久层(dao层)中的方法。

MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

特点

  • 方便

  • 解除SQL语句与业务代码的耦合

  • 支持动态SQL

  • 主流

SSM项目搭建

整体流程

  1. 创建基于Maven的webapp项目

  1. 修改web.xml版本为4.0,创建java、resources目录、项目包结构、web-inf下的页面目录

  1. 导入依赖

  • spring-webmvc

  • mybatis

  • mybatis-spring

  • mysql

  • druid

  • spring-jdbc

  • jstl

  1. 配置Spring

  • 创建application.xml

  • 扫描项目根包

  • 配置web.xml

  • 设置全局参数:<context-param>,读取application.xml文件

  • 设置全局监听器:ContextLoaderListener,初始化Spring容器

  1. 配置SpringMVC

  • 创建springmvc.xml

  • 扫描控制层所在包

  • 设置内部资源视图解析器:InternalResourceViewResolver,设置前后缀

  • 配置web.xml

  • 设置请求分发器:DispatcherServlet,在其中读取springmvc.xml配置文件

  • 过滤器请求解决中文乱码:CharacterEncodingFilter

  1. 配置MyBatis

  • 创建mybatis-config.xml

  • 在application.xml中注入

  • 数据库链接池Druid:DruidDataSource

  • SQL会话工厂:SqlSessionFactoryBean

  • 映射扫码配置器:MapperScannerConfigurer

  1. 执行sql语句

  • 创建dao层接口,定义方法

  • 在resoureces下创建mapper目录sql映射文件xx.xml,在其中定义sql语句

拦截器

自定义一个类,实现拦截器HandlerInterceptor接口,其中有三个default方法可以重写

  • preHandle

  • 在发送请求后,DispatcherServlet解析控制器中某个RequestMapping执行之前的方法

  • 该方法返回true时,请求才能继续

  • postHandle

  • 在preHandle方法返回值为true后执行

  • 在DispatcherServlet解析控制器中某个RequestMapping之后执行

  • afterCompletion

  • 在preHandle方法返回true后执行

  • 在解析视图后执行的方法

SpringBoot

Spring推出的一个Spring框架的脚手架。

不是一个新的框架,而是搭建Spring相关内容框架的平台。

它省去了Spring、SpringMVC项目繁琐的配置过程,让开发变的更简单。

本质还是Spring+SpringMVC,可以搭配其他的ORM框架,如MyBatis、MyBatisPlus、JPA、Hibernate等。

特点

  • 内置了Tomcat服务器,不需要部署项目到Tomcat中

  • 内置了数据源Hikari

  • 减少了jar文件依赖的配置

  • SpringBoot中的配置文件可以使用yml格式文件,代替了properties或xml

问题1

在运行时出现了8080端口被占用的问题。

解决方法1:修改resources下创建的application.propertis文件,在其中输入

server.port=8000

修改端口号为8000。

解决方法2:进入cmd,输入 netstat -ano|findstr 8080 命令 + 回车,查看 tomcat 正在使用的端口。

再输入 taskkill /pid 正在使用的端口 /f 强制关闭正在使用的端口。

问题2

出现错误java.sql.SQLException: Access denied for user ‘root‘@‘localhost‘ (using password: No)

百度出来的问题基本是java.sql.SQLException: Access denied for user ‘root‘@‘localhost‘ (using password: YES)

后面发现是datasource打成了rabbitmq

MyBatisPlus

是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发而生

MyBatisPlus中的逻辑删除与物理删除

物理删除:将数据真正删除。delete from 表 where id=值

逻辑删除:数据不删除,而是打个"被删除"的标记。额外添加一个是否被删除的字段"deleted",其值为0或1,0表示未删除,1表示已删除。当删除某条数据时,执行修改update表set deleted=1 where id=值 添加了"deleted"字段后,查询更改为select * from 表 where deleted=1 where id=值

条件构造器Wrapper

BaseMapper和Service接口中有很多方法都有这个参数,表示一个条件构造器对象。

如果该参数实际传递的值为null,表示没有任何条件,

这个Wrapper是一个抽象类,如果想要带条件,就要创建一个该类的子类对象。

常用子类为QueryWrapper和UpdateWrapper,

查询是创建QueryWrapper对象,更新时创建UpdateWrapper,实际使用无区别。

RESTFul风格

用不同的请求方式去访问同一个URL地址时,执行不同的操作。

特点

  • 通过URL就能知道当前在哪个模块

  • 通过不同的请求方式决定执行什么操作

  • 通过返回的状态码得到操作结果

具体使用

  • 在controller的方法上,设置访问请求的方式如下:

  • @GetMapping("路径") 查询

  • @PostMapping("路径") 添加

  • @PutMapping("路径") 修改

  • @DeleteMapping("路径") 删除

  • @RequestMapping(value="路径",method=RequestMethod.GET/POST/PUT/DELETE)

  • 在同一个controller中,不能出现两个请求方式和路径都一致的方法

  • 如果请求不匹配会报405异常

  • 访问时如果要传参,使用"/模块名/参数"方式,配合controller中的@PathVariable获取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 根据所提供的清远-c0rtexas9资料路径,在实验中涉及到了Linux系统标准IO的应用实验。Linux系统标准IO是指Linux操作系统提供的一套标准化的IO库,可以用于操作文件、输入输出等。以下是对该实验的简单描述: 这个实验主要是关于Linux系统标准IO的应用实验。在该实验中,我们可以找到程序的源代码,该源代码是用Linux应用程序的方式编写的。通过这个实验,我们可以了解和学习Linux系统标准IO的基本操作和使用方法。 Linux系统标准IO是一套非常强大和灵活的IO库,提供了一系列的函数和方法来操作文件和进行输入输出。在实验源码中,我们可以看到一些常的标准IO函数,比如fopen、fclose、fprintf和fscanf等。 通过这些函数,我们可以打开和关闭文件,从文件读取数据或向文件写入数据。实验源码中包含了一些常的操作,比如读取文件、写入文件、复制文件和查找文件等。通过实验,我们可以了解到如何使用这些函数来完成不同的操作。 此外,在实验源码中可能还会涉及到一些其他的Linux系统标准IO相关的知识点,比如文件指针、文件描述符和文件流等。这些知识点对于理解和使用Linux系统标准IO函数非常重要。 通过实验中提供的源代码,我们可以进行相应的实验操作,从而更好地理解和学习Linux系统标准IO的使用。同时,我们也可以通过对实验源码的分析和调试,更深入地了解Linux系统标准IO的内部工作原理。 总之,通过这个实验,我们可以掌握Linux系统标准IO的基本操作和使用方法,从而提高我们在Linux系统中进行文件操作和输入输出的能力。 ### 回答2: 清远(英文名称为Far Infrared Technologies International Limited)是一家专注于红外光学技术研发及应用的企业。该公司的产品主要应用于安防监控、无人机、机器人、智能家居等领域。 关于"06. linux系统标准io实验"的实验资料包括了程序源码。在Linux操作系统中,标准I/O(Input/Output)库是用于进行文件读写和输入输出操作的一套API(Application Programming Interface)。标准I/O库提供了一系列函数,包括文件打开、读取、写入、关闭等操作,方便开发人员进行文件操作和输入输出。 这份实验资料中的源码,应该是用于展示和实践Linux系统标准I/O库的使用方法和技巧。通过编译和运行这些源码,可以了解如何使用标准I/O库来进行文件的读写和输入输出操作,包括打开文件、读取文件内容、写入文件等。 这些实验源码可以作为学习和实践Linux系统标准I/O库的参考资料。通过实际操作,可以加深对标准I/O库的理解和掌握,提高在Linux环境下进行文件操作和输入输出的能力。 总之,"06. linux系统标准io实验"的实验资料中的程序源码是用于学习和实践Linux系统标准I/O库的使用方法,通过编译和运行这些源码,可以加深对标准I/O库的理解和掌握,提高在Linux环境下进行文件操作和输入输出的能力。 ### 回答3: 清远-c0rtexa9资料中的程序源码目录为\linux应用实验源码\06. linux系统标准io实验\。这个实验中包含了一些关于Linux系统标准输入输出的代码示例。 在Linux中,标准输入输出是三个预先定义好的文件描述符,分别是0(stdin),1(stdout),2(stderr)。这些文件描述符与输入输出设备关联,比如键盘和屏幕。使用标准输入输出可以实现用户与程序之间的交互以及程序的输出显示。 在实验源码中,我们可以看到许多用于标准输入输出的函数,包括printf、scanf、getchar、putchar等。这些函数可以帮助我们进行输入输出操作。 在实验中,我们可以通过这些代码示例学习如何从标准输入读取用户输入,如何向标准输出显示结果。例如,可以使用scanf函数读取用户输入的数据,使用printf函数将处理结果输出显示。 通过实验中的代码示例,我们可以学习到如何处理标准输入输出的错误,如何进行格式化输入输出,如何使用缓冲区进行高效的输入输出等。 总之,清远-c0rtexa9资料中的\linux应用实验源码\06. linux系统标准io实验\中包含了一些关于Linux系统标准输入输出的代码示例,通过这些示例我们可以学习到如何进行标准输入输出操作,以及一些与之相关的技巧和注意事项。这对于学习Linux系统编程和开发应用程序非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值