后端框架之springboot第二弹~

嗨害嗨,我又来了

我又来了,一大早来办公室马不停蹄整理的,关于springboot框架,以及部分mybatis和Thymlef的知识点。欢迎大家批评指正~

有需要的同学记得收藏、点赞、转发哦~

1. javaconfig

JavaConfig: 使用Java类作为xml配置文件的替代,是配置spring容器的纯Java的方式。在这个Java类可以创建Java对象,把对象放入spring容器中(注入到容器)使用两个注解:

@Configuration:放在一个类的上面,表示这个类是作为配置文件使用的

@Bean: 声明对象,把对象注入到容器中

@importResource: 导入其他的xml配置文件,等于在xml

<import resources="其他配置文件"/

@PropertyResource是读取properties属性配置文件,使用配置文件可以实现外部化配置,在程序代码之外提供数据。步骤:

1).在resources目录下,创建properties文件,使用k=v的格式提供数据;

2).在propertyResource指定properties文件的位置;

3).使用@Value(value="$[key)”)

特点:内嵌的tomcat, jetty, undertow;提供了starter起步依赖,简化应用的配置。比如使用mybatis框架,需要早spring项目中,配置mybatis的对象SqlSessionFactory, Dao的代理对象,在springboot项目中,在pom.xml里面加入-个mybatis-pring-boot-starter依赖;

尽可能去配置spring和第三方库,叫做自动配置(就是把spring中的第三方库中的对象都创建好,放到容器中,开发人员可以直接使用;

不用生成代码,不再使用xml做配置。

2.注解

使用了@SpringBootConfiguration注解标注的类,可以作为配置文件使用的,可以使用Bean声明对象,注入到容器.

@EnableAutoConfuguration,启用自动配置,把Java对象配置好,注入到spring容器中

@ComponentScan,扫描器,找到注解,根据注解的功能创建对象,给属性赋值等。

默认扫描的包:@ComponentScan所在的类所在的包和子包。

3.项目创建方式

spring提供的初始化器,就是向导创建springboot应用,http://start.springboot.io;

使用springboot提供的初始化器使用maven向导创建项目

4.配置文件

配置文件名称: application

扩展名: properties (k=v) ,application.yml

设置端口和上下文路径

例: application.preperties

#设置端口号

server.port=8080

#设置访问上下文路径, contextpath

server.servlet.context-path=/myboot

5. web组件

拦截器:是springMVC中的一种对象,能拦截对controller的请求。拦截器框架中有系统的拦截器,还可以自定义拦截器,实现对请求预先处理。

实现自定义拦截器:

  1. .创建类实现springMVC框架的Handlerlnterceptor接口;

  2. .在springMVC配置文件中,声明拦截器;

  3. .创建拦截器对象,指定拦截的请求url地址,指定不拦截的地址;

servlet: 使用步骤

1).创建servlet对象,创建类继承HttpServlet;

2).注册servlet,让框架能找到Servletfilter:过滤器,可以处理请求,对请求的参数、属性进行调整,常常在过滤器中处理字符编码;

字符集过滤器

解决post请求中乱码的问题在springMVC框架,在web.xml注册过滤器,配置它的属性。

使用步骤:

1.配置字符集过滤器;@Bean

public FilterRegisrationBean filterRegistrationBeanO[

FilterRegisrationBean reg=new FilterRegisrationBean();

//使用框架中的过滤器类

CharacterEncodingFilter filter=newCharacterEncodingFilter();//指定使用的编码方式

filter.setEncoding("utf-8");

//指定request, response都使用encoding的值

filter.setForceEncoding(true);reg.setFilter(filter);return reg;

2).修改application.properties文件,让自定义的过滤器起作用

#springBoot中默认已经配置了CharacerEncodingFilter, 编码默认ISO-8859-1

#设置enabled=false作用是关闭系统中配置好的过滤器,使用自定义的CharacterEncodingFilter

server.servlet.encoding.enable=false;

#指定使用的编码方式

server.servlet.enoding.charset=utf-8#强制request, response都使用charset属性的值

server.servlet.encoding.force=true

6.ORM操作MySQL

使用MyBatis框架操作数据,在SpringBoot框架集成MyBatis

使用步骤:

1).mybatis起步依赖:完成mybatis对象自动配置,对象放在容器中;

2).pom.xml指定把src/main/java目录中的xml文件包含到calsspath中;

3).创建实体类Student;

4).创建Dao接口StudentDao,创建一个查询学生的方法;

5).创建Dao接口对应的Mapper文件,xml文件,写sql语句;

6).创建Service层对象,创建StudentService接口和他的实现类,去Dao对象的方法,完成数据库的操作;

7).创建Controller对象,访问Service

8).写application.properties文件配置数据库的连接信息

@Mapper和@MapperScan

@Mapper,放在dao接口的上面,每个接口都需要使用这个注解告诉mybatis这是dao接口,创建此接口的代理对象

@MapperScan在Dao接口上面加入@Mapper,需要在每个接口都加入注解,当Dao接口多的时候不方便。可以使用如下的方式解决:

主类上添加注解包扫描: @MapperScan (“com.example.dao")找到Dao接口和Mapper文件

Mapper文件和Dao接口分开管理

把Mapper文件放在resources目录下

1)把resources目录中创建子目录(自定义的) ,例如mapper(自定义的);

2)把mapper文件放到mapper目录中;

3)在application.properties文件中,指定mapper文件的目录

#指定mapper文件的位置

mybatis.mapper-location=classpath:mapper/*.xml;

#指定mybatis的日志

mybatis.confifuration.log-impl=org.apache.ibatis.logging.stdout.stdOutlmpl

4)在pom.xml中指定把resources目录中的文件,编译到目标目录中<resources>

<resource>

<directory>src/main/resources</directory>

<includes>

<include>**/**</include

</includes></resource></resources>

7.事务

1)管理事务的对象:事务管理器(接口,接口有很多的实现类)

例如:使用jdbc或mybatis访问数据库,使用的事务管理器: DataSourceTransactionManager

2)声明式事务:在xml配置文件或者使用注解说明事务控制的内容控制事务:隔离级别,传播行为,超时时间

3)事务处理方式

spring框架中的@Transactionalaspectj框架可以在配置文件中,声明事务控制的内容

springBoot中使用事务,上面两种都可以

1)在业务方法的上面加入@Transactional,加入注解后,方法有事务功能了;

2)明确地在主启动类的上面,加入@EnableTransactionManager

8.接口架构风格-RESTful

接口(API):可以指访问servlet, controller的url,调用其他程序的函数

架构风格: api组织方式,传统的就是在地址上提供了访问的资源名称addStudent,在其后使用了get方式传递参数

RESTful架构风格:

1) REST: (RepresentationalStateransfer,表现层状态转移)

REST:时一种接口的架构风格和设计的理念,不是标准

优点:更简洁,更有层次

2) REST中的要素:

用REST表示资源和对资源的操作,在互联网中,表示一个资源或者一个操作资源是用url表示的,在互联网,使用的图片,视频,文本,网页等等都是资源对资源可以进行增删改查操作,即POST(创建资源),DELETE,GET(查询资源),PUT (更新资源)

9.注解

@PathVariable,获取url中的数据

@GetMapping, 支持GET的请求方式,等同于@RequestMapping (method =RequestMethod.GET)

@PostMapping,接收和处理post方式的请求,等同于@RequestMapping(method =RequestMethod.POST)@PutMapping,支持put请求方式,等同于@RequestMapping (method =RequestMethod.PUT)

@DeleteMapping,接收delete方式的请求,可以使用GetMapping代替,等同于@RequestMapping (method =RequestMethod.DELETE)

@RestController: 是@Controller@ ResponseBody组合,在类上面使用@RestController, 表示当前类的所有方法都加入了@ResponseBody

10.postman

使用postman:可以测试get,push,put,delete请求

在页面中或者ajax中,支持put,delete请求

在springMVC中有一个过滤器(org.springframework.web.filter.HiddenHttpMethodFilter) ,支持post请求转为put,delete

实现步骤:

1.application.properties: 开启使用HiddenHttpMethodFilter过滤器

2.在请求页面中,包含_method参数,它的值是put,delete,发起这个请求使用的是post方式

11.打包

11.1打包为jar

  1. 创建了一个包含jsp的项目

  2. 修改pom.xml:

  1. 指定打包后的文件名称

<build><finalName>myboot</finalname></build>

2)指定spring boot-maven-plugin版本(打包jar,有jsp文件时,必须指定maven-plugin插件的版本是1.4.2.RELEASE)

3) 最后执行maven clean package在target目录中,生成jar文件

执行独立的springboot项目,在cmd中 java-jar myboot.jar

11.2打包为war

  1. 创建一个jsp应用

  2. 修改pom.xml

1)指定打包后的文件名称2)执行打包是war3主启动类是集成SpringBootServletinitializer

4)部署war.把war放在tomcat等服务器的发布目录中, tomcat为例,myboot.war放在tomcat/webapps目录

12.Thymeleaf模板

是使用java开发的模板技术,在服务端运行,把处理后的数据发送给浏览器。

模板是作视图层工作的,显示数据的,Thymeleaf语法是应用在html标签中, springboot框架集成Thymeleaf,使用它代替jsp。

可以用在web环境下,也可以用在非web环境下,在非web环境下,能直接显示模板上的静态数据,在web环境下,能像jsp一样从后台接收数据并替换掉模板上的静态数据。是基于HTML的,以HTML标签为载体。

12.1表达式

标准变量表达式

是在页面获取数据的一种thymeleaf语法,类似$[key), key是request作用域中的key,使用request.setAttribute(),model.addAttribute().

在页面标签中,使用th:text=""是thymeleaf的一个属性,用于文本的显示。

选择变量表达式

语法:*[key).需要和th:object一起使用,用来绑定对象,其中的值是此对象中的属性,也叫星号变量表达式。

链接表达式

语法:[链接url),主要用于链接、地址的展示,可用于<script src="...">,<link href="...">,<a href="">,<form action="">,<img src="">,可以在URL路径中动态获取数据

12.2属性

是放在html元素中的,就是html元素的属性,加入了th前缀,属性的作用不变。加入th,属性的值由模板引擎处理了,在属性可以使用变量表达式。

th:action

定义后台控制器的路径,类似form标签的action属性,主要结合URL表达式,获取动态变量

<form id="login" th:action="@{/login}" th:methosd="post"></form>

th:method

设置请求方法<form id="login" th:action="@{/login}" th:menthod="post"</form>

th:href

<a th:href="@{/query/student}">相对地址没有传参数</a>

th:src

用于外部资源引入,比如<script>, <img>标签的src属性,常与@表达式结合使用,在springboot项目的静态资源都放到resources的static目录下,放到static路径下的内容,写路径时不需要加上static

<script type="text/javascript" th:src="@{/js/jquery-3.4.1.js}"></script>

th:text

用于文本的显示,该属性显示的文本在标签体中,如果是文本框,数据会在文本框外显示,要想在框内显示,使用

th:value

<input type="text" id="realName" name="realName" th:text="$(realName)"

th:each

属性较常用,比如从后台传来一个对象集合那么就可以使用此属性遍历输出,它与JSTL中的<c:forEach>类似,此属性既可以循环遍历集合,也可以循环遍历数组及Map.

th:if

语法:th:if="boolean条件",条件为true显示体内容(空字符是true, null是false), th:unless是th:if的一个相反操作

<p th:if="$(sex=='m')">性别是男</p><p th:if="$[sex=='m')">性别是男</p><p th:if="$(fisLogin)">已经登录系统</p>

th:switch

<div th:switch="$(sex)">

<p th:case="f">性别是女</p><p th:case="m">性别是男</p><p th:case="*">未知</p></div>

th:inline

三个取值类型,分别是text, JavaScript, none

text: 可以让thyme leaf表达式不依赖于html标签,直接使用内敛表达式即可获取动态数据,要求在父级标签上加上th:inline="text"

javascript:可以在js中,获取模板中的数据


#面经##校招##java##后端##秋招#
全部评论
点赞 回复 分享
发布于 2022-08-23 10:12 陕西
三连啦
点赞 回复 分享
发布于 2022-08-23 11:09 江苏

相关推荐

无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
4 3 评论
分享
牛客网
牛客企业服务