SpringBoot入门系列(二)——集成web开发的多项功能

上一回SpringBoot入门(一)中我们已经体会到了SpringBoot的强大之处,接下来,我们将剖析各项功能是如何实现的,并说说其他一些web开发常用功能的集成

一、原理分析
上一个项目里,我们看到只要在app.class文件里runas javaapplication,就能直接将项目部署到tomcat中,不需要自己手动配置tomcat,各种各样MVC开发中手动添加的jar包和web.xml也没有配置,就实现了我们想要的效果,这是如何实现的呢?

诸位应该还记得,pom.xml文件中,我们引入了两点:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> </parent>

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

第一条标签,实际上是在控制版本信息,我们看到version标签里写了2.0.6.RELEASE,实际上就是规定了以后引入的所有Jar包都必须与这个版本的SpringBoot适配
第二条标签,则是通过坐标,在符合Version要求的前提下,引入web开发所需要的一系列Jar,我们可以在下图中看到Maven为我们导入好的包:
在这里插入图片描述
我们可以看到,不仅仅是MVC需要的一系列Jar包已经导入好了,连hibernate-validator和tomcat的一系列包也已经成功引入,这就是我们可以0配置迅速开发web项目的原因所在。

二、代码分析
在上一回中,我们写了一个叫做app.class的类,其中貌似并没有什么代码,到底是如何执行的呢?

@SpringBootApplication

请看这条注解,这条注解的含义是:被此注解修饰的类,将成为springboot项目的***启动器***,此注解等同于@Configuration+@EnableAutoConfiguration+@ComponentScan的合集,用于扫描所有托管于spring bean容器的类,可以极为便捷地配置启动类。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class}), 
    @Filter(type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class} )})
public @interface SpringBootApplication {

这是@SpringBootApplication的定义,从中我们就可以理解到这条注解的深刻含义

2、controller
MVC开发中,这一条注解并不少见。有经验的开发者会知道这个注解标注的类会成为控制器,实际上就是servlet。而在这个类中地@RequestMapping("/demo")则配置了这个控制器地访问地址(或者说拦截目标),此外@ReponseBody则是规定了该函数地返回值并非用于视图跳转,而是确实地返回一个值
我们知道,如果没有@ReponseBody注解,那么下面hello的方法的返回值应当是试图跳转的目标,由于本例中我们并没有写试图,所以不加这条注解,必然报错。

三、其他的一些方法集成
1、整合Servlet
一些老派开发者依旧喜欢servlet,这里简单说说怎么集成
在通过注解扫描注册servlet的过程里,需要在servlet类上用注解@WebServlet(name="",urlPattern="")来配置servlet的访问,然后在springboot启动器上添加ServletComponentScan注解,来使启动器启动时扫描servlet
在这里插入图片描述
在这里插入图片描述
2、集成filter,listener
依旧是注解方式:
在这里插入图片描述
在这里插入图片描述
3、整合JSP
虽然SpringBoot官方并不喜欢JSP,但使用这项技术的开发者依旧很多,因此SpringBoot额外提供了一套方法开发JSP
第一步,引入jstl和jasper坐标,熟悉JSP的朋友对这两个包应该不会陌生

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jstl</artifactId>
</dependency>
<dependency>
	<groupId>org.apache.tomcat.embed</groupId>
	<artifactId>tomcat-embed-jasper</artifactId>
	<scope>provided</scope>
</dependency>

第二步,配置application.properties
由于是额外开发方式,难免需要自己手动做些配置,配置文件如下:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

第三步,写JSP,注意,必须在webapp/WEB-INF/jsp路径下创建jsp文件
第四步,写controller或者servlet,实现视图跳转

4、整合Thymeleaf
既然不推荐JSP,那么官方自然会推荐一套视图层开发方式,这就是thymeleaf(如果有朋友不熟悉thymeleaf的语法,日后我会推出thymeleaf简易教学)
整合thymeleaf,第一步是添加坐标:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

第二步则是在html页面里用thymeleaf语法实现各种功能(如遍历、报错等)
第三步依旧是controller/servlet

5、SpringBoot访问静态资源
既然要写thymeleaf,自然要写html,自然涉及到静态资源的访问问题,SpringBoot有一套专门的静态资源访问规则:
第一种:src/main/下建立webapp目录,把资源都放进去
第二种:src/main/resources文件夹下建立templates目录,把静态资源都放进去
在这里插入图片描述

这一期到此结束,本期简单介绍了一下SpringBootApplication注解,@RequestMapping注解和@ResponseBody注解,并简单介绍了如何集成filter,listener,jsp,thymeleaf
下一期,将开始数据库的部分,这是SpringBoot的重中之重,欢迎各位观看

欢迎联系工作QQ账号:3352336739

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值