开课吧-01快速应用开发框架springboot笔记_第1页
开课吧-01快速应用开发框架springboot笔记_第2页
开课吧-01快速应用开发框架springboot笔记_第3页
开课吧-01快速应用开发框架springboot笔记_第4页
开课吧-01快速应用开发框架springboot笔记_第5页
已阅读5页,还剩139页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

快速开发框架Spring第1章SpringBootSpringBootringBt是由Pivtl[pɪəl]团队提供的全新框架,其设计目的是用来简化新Spig应pingBt致力于在蓬勃发展的快速应用开发领域(aidplictindvlpmnt)成为者。简单来说,SpringBoot可以简化SpringSpring配置文件及web.xml文件。SpringBoot工程的Idea工程创SpringBoot的WebSpringStarterProjectSpring启注意以ServiceURL:这里的内容不用修改。该URL表示在创建Springstarter工程时若需要的一些资源在本地Maven仓库中没有,则需要从该URL中进行。另外,也可以打开该URL地址,完成线上工程的创建。PackagingwebJarSpringBoot的web工程是作为一个可直接运行的Java工程出现的,其中已经内置了Tomcat。Java工程一旦启动,Tomcat自动启动并会让应用程序开始运行。客户端可以通过浏览器直接对应用进Package:在倒序后至少要多写出一级,这一级一般都为工程名称。当然,若是个项目中包含多个工程,那么这里应该多写出两级:项目名称+工程名称。后面所有的代码都要求必须出现在该级别的下面级别中,不能出现在平级包中。Web/WebTomcatSpringMVC进行全web开发。然后给出了三种类型web应用的开发这里不要做任何选Next。工程编系系统面设置的包中自动生成一个在启动类所在的包下再创建一个子包,在其中编写SpringMVC的处理器类。注意,要求现在com.abc.primary包的子孙包中。需要注意,由于SpringBoot中使用JSP页面还需要专门的配置,所以这里就直接将处理法上)添加了@ResponseBody注解。当然,也可以直接使用 注解工程运对于SpringBoot程序的运行,若是在Eclipsemain类即可;若是没有Eclipse环境,则可打包后直接通过java命令运行。AEclipse下的运a打开启动类,直接在上面右击选择“RunAs/JavaApplication”,启动SpringBoot框架在控制台查看启动信息可Tomcat已启动,且端为SpringMVC的调度器映射的请求,即url-pattern值为/。需要注意,我们之前在学习SpringMVC时讲过,该url-pattern绝不能写为/*,也不建议写为/。因为写为/后对于静态资源的将需要专门的配置,否则将会被调度器,即形成无法静态资源的局面。SpringBoot已经解决了静态资源的问题,后面会讲到。SpringBoot在启动时已经启动了CharacterEncodingFilter,且默认字符编码为国际通用编码UTF-8,所以在SpringBoot工一般不会遇到中文乱码问题。项目的上下文路径Ctextah,即该项目时的项目路径为空,即浏览器时无需项目名称。、在浏览器地址栏中直接输入“主机+端口+URI”即可该项目,无需项目名称SpringBoot工程打包后即可脱离Eclipse环境运a使用package命令将工程打为Jarb将打好的Jar包移动到任 ,当然,也可在原来的 ,在命令行即可通java命令直接运行。例如,将jar包移动到 中当看到如下提示时,表示应用启、在浏览器地址栏中直接输入“主机+端口+URI”即可该项目,无需项目名称工程解创建SpringBoot工程后,会自动生成工程的启动类Application打包@SpringBootApplication注解源码可以看到,其可以完成SpringBoot的自动再@SpingBoCniguain源码可以看到,其本质是一个@Cnfiguain,即我们之前在ping中学习过的CdConfig,使用Java类充当ping配置文件。B :存放静态资源,例如css、js、imagestemtes:存放动态资源。SpringBoot不建议使用jsp作为动态数据展示页面,而ThymeleafThymeleaf是一种JavaThymeleafhtmlhtml的扩展。该用于存放Thymeleaf文件。这两个Web应用的根下。不过,我们一般不使perties:SpringBoot的主配置文件(具体用法后面学习C、依赖与插件没有版本Web启动依赖,一个是SpringBoot的测试启动依赖;而这个插件是用于完成对SpringBoot工程打包结果的再打包。我们注意到,它们均没有版本号,这是为什么呢?虽然它们都没有版本号,但打开工的MavenDependencies可以看到,它们的版本号均2.0.0,这个版本号来自于哪里呢?它们的版本号均继承自父工程。从pom文件中可以看出,其spring-boot-starter-parentbspring-boot-starter-parent工打开Maven本地仓库,在org.springframework中找到工程spring-boot-starter-parent进入该工 ,找到其pom文件pom文件,发现该工程的<pluginManagement>中有对该插件的配置信息。注意,<pluginManagement>中的插件是选择性继承插件,而非全部继承插件。从该插件的配置信息可以看出,其执行的目标是epacage,即对工程进行重新打包。首次打包是由Maen的packge插件完成的,其打包的结果仅仅是将当前工自定义的类打包为了一个普通的Jar包,没有SpringBoot的相关资源,无法直接运行。当然,其打包的结果是.jar文件。重新打包是由ping-b-mve-plugin插件完成的,其是将前面打成的jar包进行了二SringBtSprigBt依赖,还添加了很多其它配置。同时,其还将原来的jar文件扩展名变为了.riil,而二次打包后的文件扩展名成为了jar。可以打开这两个包,查看其中内容的不同。首先打开.orininal包,发现其中只有当前工写入的类,没有SpringBoot的依赖。然后再打开META-INF中的文件MANIFEST.MF,发现其中并没类Main-Class再打包二次打包的.jar文件,发现其中已经增加了SpringBoot的各种依赖了。其中:BOOT- META- Maven :存放的是SpringBoot并且,打开其ME-INF中的文件MAIE.MF,不仅可以看到主类Mai-las,还可以看到当前工程的启动类tar-Clas。不过,我们发现,这个插件配置信息中仍没有版本号。说明该工程仍存在父工程。在该pom文件开头部分可以看到该工程的父工程为spring-boot-dependenciesc看spring-boot-dependencies工Maven本地仓库中找到spring-boot-dependencies工程进入工 ,找到该工程的pom文件打开该文件,在<DependencyManagement>中可以找到这两个完整依赖<DependencyManagement>中的依赖是选择性继承依赖,而非全部继承依赖在<pluginManagement>中可以看到spring-boot-maven-plugin的完整插件信息SpringBoot默认依赖的Spring5.0.4,若要指定依赖于其它版本,如何设找到spring-boot-dependencies工程的pom文件,可以看到其中已经定义好了很多依赖所以,若要使当前定义的SpringBootJar5.0.1版本的SpringJarpom.xml文件中使用新的版本号将原版本号覆espring-boot-starter- 工主要了对选择性继承插件的详细配置,spring-boot-dependencies工主要定义了选择性继承依赖,选择性继承插件,及依赖的版D、在SpringBoot工自带的有两个文件:mvnw与mvnw.cmd。这两个是什么文件呢Mven是一个常用的构建工具,但是Mven的版本和插件的配合并不是十分完美,有时作需要用户重新安装一个Maen,那么就太麻烦了。有一个工具MavenWrapper(包装器),可以完成在Maven的某一版本下轻松切换到其它版本的目的。需要注意的是,MavenWrapper并不是Maven提供的工具,而是第工SpringBoot工的mvnw即为安装好的MavenWrapper工具。其中mvnw.cmd为MavenWrapper令行运行窗口,而mvnw文件则为MavenWrapper的配置文件。这两个文件可以删除官网创在点击了GenerateProject按钮后,即可打开一 框。官网将配置好的Boot工程生成了一个zip压缩文件,只要其到本地即可后,将其解压到idea-workspace中,在idea中即可马上看到该工程。注意,此时该工程是作为一个Module出现的。然后,再通过“导入外部Moduel方式”将该工程导入为Maven工程即可。warSpringBoot工前面创建的SpringBoot工程最终被打为了Jar包,是以可执行文件的形式出现的,其使用了SpringBoot内嵌的Tomcat作为Web服务器来运行web应用的。新版Dubbo的中心工程就是典型的应用。但在实际生产环境下,对于Web工程,很多时候我们需要的是war包,然后部署到企业级Web服务器中。所以,下面我们来看一下如何使用SpringBoot将工程打为war包。工程创工程编将第一个工的处理器到当前工工程运Eclipse下的运该工程仍可直接运行主类Application,然后在浏览器中直接打包部A运行Maven的package命令,将其打为warB找到该war包,将其部署到Tomcat的 中,启动Tomcat、在浏览器中可以到该工程。注意,由于工程是部署到了Tomcat的webapps中,不是部署到webapps/ROOT中,所以在时需要指定工程名。工程解web环境初始在该工我们发现其自动增加了一个类ServletInitialier该类重写了父类的方法。该方法用于完成web环境的配置,即web环境的初始化工作。打开SpringBootServletInitializer类,查看其configure()方法的注释可知,该方法已经完翻译如下:配置应用程序。通常情况下(Nrmally),所有你需要做的仅仅是添加源码,因为其它配置已经具有了合理(senible)的默认值。ServletAPI的依由于这是一个warServletAPI。然而pom文件中专门添加了<scope>provided</scope>范围的SpringBootIdea中的SpringBoot工程若要使用热部署,需要完成两个步骤:导入devtools依赖,编辑当前工程的配置信息。这两个步骤是在每一个使用热部署的SpringBoot工均要设需要注意,SpringBoot工程在Idea中的热部署与Eclipse中的热部署,工程修改后的重不同,其对文件修改后的保存是自动的,所以其重新部署的时机是Idea整个IDE窗口被钝化时,即Windows窗口切换到其它窗口时,工程会重新部署。其意义是,当Idea被钝化Idea窗口被切换时,更新类与SpringBootpom中增加一个依赖即可。代码重启后报错。找到如下条目后,勾选即SpringBoot的主配置编辑SpringBoot的主配置文件是src/main/resources中默认创建的perties文件双击该文件,其默认会使SpringPropertiesEditor编辑器打开。使用该编辑器打开后的EclipseSTS后才出现的,Eclipse原本是没有该编辑器的。简单尝在 中运行工程后,查看日志文件可以看到端与应用的根的确发生的变化在地址栏中需要键入新的端与应用的根名称不过需要注意,这里指定的Tomcat的端及应用的根路径,仅仅是针对于内置Tomcat的,是测试时使用的。将工程打为war包后部署到真正的Tomcat,这些配置是不起作用的,即Tomcat的端为真正Tomcat的端,而项目的根路径为war包名称。ymlSpringBoot的主配置文件也可使用application.yml文件。yml,也yaml在开发之初YAMLYetAnotherMarkupLanguage(仍是一种标记语言。后来为了强调这种语言是以数据为中心,而不是以标记为中心,所以将YAML解释为YamlAin'tMarkupLanguage(Yaml不是一种标记语言。它是一种直观的能够被电脑识别的数据序列化ymlproperties文件的主要区别是对于多级属性,即key的显示方式不同。yml文件在输入时,只需按照点(.)的方式输出key即可,输入完毕后回车即出现了如下形式。该形式要于安装了STS后才出现的。Actuator['æktʃʊˌeɪtə](激励者;执行器)是SpringBoot提供的对应用系统的自省和的集成功能,可以对应用系统进行配置查看、相关功能统计等。在SpringCloud中主要是完成其功能与Dubbo的中心类似,不同的是,Dubbo的中心是需要专门部署的,而SpringBoot的Actuator是存在于每一个工的。基本环境搭建随便一个SpringBoot工都可以使用Actuator对其进行。本例使用01-工程作为被对象,该工程并重命名 03-actuatorTest,在该工进行修改导入依修改配置文件测启动该工程后在地址栏添加Info信(1)修改配置文件在配置文件中添加如下Info信息,则可以通过info终端查看到(2)测这些信息都是以JSON的格式显示在浏开放其它终默认情况下,Actuator仅开放了health与info两个终端,但其还有很多终端可用,(1)修改配置文件在配置文件中添加如下内(2)测A、maps终下面是使用maps终端,可以看到当前工所有的URI与处理器的映射关系,及Bbeans终Cenv终可以看到当前应用程序运行主机的所有软硬件环境信息。单独关闭某些终在开放了所有终端的情况下,有些终端显示的信息并不想公开,此时可以单独关闭这(1)修改配置文件在配置文件中添加如下内(2)测在关闭这些终端后,其它终端仍可继续使用常用的终在搜索 actuator”即可找到如下表格方终功能描述描述配置属性(包含默认值)如何注入描述应用程序上下文里全部 Bean,以及它们的关获取线程活动获取全部环境属性根据名称获取特定的环境报告应用程序的健康指标,这些值由HealthIndicator的实获取应用程序的定制信息,这些信息由info打头的方终功能描述供描述全部的URI路径,以及它们和控制器(包含Actuator报告各种应用程序度量信息,比如内存用量和HTTP请求报告指定名称的应用程序关闭应用程序,要求 设置提供基本的HTTP请求信息(时间戳、HTTP头等第2章SpringBoot自定义异常页面 直接面程序上修改即可,无需创建新的工程定义在 下再定义新的public/error定义异常页面在 中定义异常页面。这些异常页面的名称必须为相应的状态码,扩展名为html单元测总步SpringBootspringboot的test其次需要在测试类上添加两个注解@SpringBootTest(classes=SpringBoot启动类定义工定义一springboot工程,导web依赖(虽然当前工程业务上并不需要Service定义Service实现定义测试类@SpringBootTestclasses属性的值为被测试内容的的多环境选择什么是多环境选择境地器配都不运将置一具送能应,开环中执行的send()方法仅需调用模拟器即可,而生产环境中要执行的end()则需要调用运营商所提供的发送接口。这种情况下,就需要开发两个相关接口的实现类去实现ed()方法。对于不同的环境,需要使用不同的配置文件,执行不同的类。而这个选择只需在SpringBoot的主配置文件中指定即可。总步application.yml在接口实现类上通过 做环境选多配置文件实现方式定义工前面打为Jar包的工程,并重命名为03-multiEnv定义配置文件A、定义多个配置文在 中再定义两个配置文件,分别对应开发环境与生产环境B在SpringBootapplication-{profile}.properties的格式,其perties:测试环perties:生产环至于哪个配置文件会被加载,则需要在 文件中通 属性来设置,其值对应{profile}值。例如 就加载application- 配置文件内容在生产环境下,perties中一般配置通用内容,并设置files.active属性的值为dev,即,直接指定要使用的配置文件为开发时的配置文件,而对于其它环境的选application-{profile}.properties中则配置各个环境定义业务代码C在实现类上添加@Profile注解,并在注解参数中指定前述配置文件中的{profile}值,用于定义处理器EclipseA打开主类在Eclipse中直接运行,即可在控制台看到默认使用的是开发环境,即端使用的8888,而工程的根路径为/ddd。B、从页面显示内容可知,其执行的业务接口实现类为DevelpSeicIml,即开发阶段应使用的实现类。D、再运将上次运行停掉后再次运行主类,即可在控制台看到使用的是生产环境,即端使用的9999,而工程的根路径为/ppp。E从页面显示内容可知,此次执行的业务接口实现类为PrdcSevicIml,即生产环境下应使用的实现类。在命令行下选择环境例如,现在的主配置文件中指定的是dev将当前工程打为Jar包后,在命令行运行时添此时执行的就是生产环境,调用的就是ProduceServiceImplB单配置文件实现方式这种实现方式只能使用perties文件好像文件定义工前面的3-multiEnv工程,并重命名为03-multiEnv2修改配置文件将原有的配置文件全部删除,然后定义application.yml文件。需要注意的是,这三部分运行与运行与方式与前面的多配置文件的完全相同自定义配置自定义配置,可以是定义在主配置文件perties中的自定义属性,也可以总步通过@Value(“${}”)指定的自定义属若要自定义配置文件,则需要在该类上添加 注自定义配置文件不能是yml文件,只能是properties主配置文件中的属性定义工前面打为Jar包的工程,并重命名为04-customConfig修改主配置文件修改SomeHandler在@Value注解中通过${}符号可以指定的属性值指定配置文件中的属性义的配置文件中。也就是说,Java代码除了可以主配置文件中的属性外,还可以指定配置文件中的属性,可以通过@PropertySource注解加载指定的配置文件。不能自定义ymlspringboot官网给出说明,@PropertySource注解不能加载yml文件。所以其定义工04-customConfig工程,并重命名为04-customConfig2。修改主配置文件自定义配置文件该配置文件为properties文件,文件名随意,存放在 中修改SomeHandler若属性的值存在中文,则需要添加encoding对象属性定义工04-customConfig2工程,并重命名为04-customConfig3。修改自定义配置文件此时student称为对象属定义配置属性类说明 用于指定要的配置文 用于指定要配置文件中的对象属@Component表示当前从配置文件来的对象,由Spring容器创修改SomeHandlerList<String>属性—定义工04-customConfig3工程,并重命名为04-customConfig4。修改自定义配置文件定义配置属性类修改SomeHandlerList<Object>属性—课程Course定义工04-customConfig4工程,并重命名为04-customConfig5。修改自定义配置文件定义配置属性类注意,Student类无需任何注解。修改SomeHandlerSpringBoot下使JSPSpringBoot下直接使用JSP文件,其是无法解析的,需要做专门总步在SpringBoot下使用JSP在pom文件中JSP解析器依在pom文件中资在主配置文件中视图前辍与后辍(不是必须的直接添加JSP定义工第一个工程,并重命名为06-jsp创建在src/main下创建webapp ,用于存放jsp文件。这就是一个普通的 行MarkDirectoryAs。在springboot工若要创建jsp文件,一般是需要在src/main下创建webapp 下创建jsp文件。但通过Alt+Insert发现没有创建jsp文件的选项。此时,需要打开ProjectStructrue窗口,将webapp 指定为web资源 ,然后才可以创建jsp指定后便可看到下面的窗此时webappjsp的创建在src/main/webapp下创建一个html文件,并命名为index.html,创建完毕后再将其重命名为index.jsp。因为Idea中是没有JSP页面模板的,不能直接创建JSP文件。启动后运行此时启动工程后在浏览器直接,发现其并没有显示index页面。因为当前工程不能识别jsp文件。使用物理视图(1)jasper依pom中添加一个Tomcat内嵌的jspjasper依赖。jsp引擎是用于解析jsp文件的,即将jsp文件解析为Servlet是由jsp引擎完成的。embed,嵌入。(2)在pom文件中将 为资 不过,我们一般会添加两个资 创 在 下再创建一个 jsp,在其中创 e.jsp文件修改SomeHandler使用逻辑视图修改主配置文件修改处理器执行效果与前关于静态资源请求查看控制台的启动日志,DispatcherServlet的<url-pattern>为/。我们之前在学习SpringMVC时强调过,若DispatcherServlet的<url-pattern>为/,则调度器会静态资SpringBoot对于静态资源的是没有问题的。即,SpringBoot已经处理好了静态资源SpringBoot中使总步在SpringBoot中使用MyBatis无需定义MyBatis的主配置文件,需要完成以下三个步骤:pom文件中导入三个依赖:MyBatis与SpringBoot整合依赖、MySQLDruid在Spring 主配置文件中三个信息:映射文件、实体类别名,及数据Dao接口上添加@Mapper定义工06-jsp工程,并重命名为07-mybatis。当前工程完成一个简单的功能。pom导入两MyBatisSpringBoot整合依注意,这个依赖是由注意,这个依赖是由mybatis开发,并非由Spring MySQL驱动错Druid依定义Service接口及实Service定义Servivce定义实体类及DB定义实体类DBDB的teststudentDaoDao接口上要添加@Mapper定义映射文件修改主配置文件在主配置文件中主要完成以下几数据源SpringBoot的事务总步SpringBoot对于事务的支持,只需完成两个步骤在启动类上添加 注解,开启事Service实现类的方法上添加@Transactional定义工07-mybatis工程,并重命名为08-transaction。当前工程完成在对用户时一次插入到DB中两条信息。若在插入过有发生修改启动类修改Service实现测正常测以上代码运行后,页面与代码均会显示报错,查看 表,没有任何记录插入对比测查看DB表,会发现插入了一条记录,即异常前的插入语句没有回滚。SpringBoot对日志的logback是Log4J的替代者。在SpringBoot中若要使用logbackspring-boot-starter-logging依赖,而该依赖被spring-boot-starter-web所依赖,即不用直接导入spring-boot-starter-logging依赖。springboot中使在SpringBootlogback添加配置属性只需在配置文件中添加如下配置即可xxx:是随意内容。在yml文件中的属性值若以%开头会报错,所以添加一些随意字符。在properties文件中不存在该问题。添加配置文件该文件logback.xml,且必须要放在src/main/resources类路内容如下:使直直接在08-transaction做以上修改即可,控制台的运行结果如下SpringBoot中使应用场使用Redis缓存的数据划分为两类:DB中相关表更新后,Redis缓存中的存放的相关数据要清除,否则客户端获取到的就不是数据,这是一类数据;还有一类数据是,对数据的准确性要求不是很高的数据,其可以与DB中数据不一致,但差别不能太大,所以该类数据总步ringBt对于以上两类数据,均可使用PI方式与注解方式进行缓存。但pingBt使用注解方式在对指定缓存空间设置缓存时效时非常麻烦,所以对于两类数据的缓存可以分别使用两种方式实现。都需要的步骤pom文件中添加springboot与redis在主配置文件中redis连接信息、MyBatis中实体类的别由于要将查询的实体类对象缓存到Redis,Redis要求实体类必须序列化。所以需要实体使用注解方式还需要的步骤在工程类上添加 注在查询方法上添加@Cacheable注解,在增删改方法上添加 注在主配置文件中缓存空间名使用API方式还需要的步骤Service中被自动注入的RedisTemte需要的泛型,key与value要求类型相同,要么都是String,要么都是Object。建议使用Object,其通用性更好在Service的查询方法中通过RedisTemte对象获取到Redis的操作对象,然后再对Redis定义工08-transaction工程,并重命名为09-redisCache。当前工程完成让用户在页面中输入要查询学生的id,其首先会查看edis缓存中是否存从Ris从DB中询出来,后再存放到Reis缓存中。但用户也可以通过页面学生,一旦有新的学生,则需要将缓存中的学生信idReis缓存。同时,通过页面还可以查看到总学生数,但对其要求是差不多就行,无需是实时性的。对于pigBtPI方式的Reispompom文件中添加SpringBootRedis修改主配置文件在主配置文件中添加如下修改实体类由于要将查询的实体类对象缓存到Redis,Redis要求实体类必须序列化。所以需要实体修改代修改index修改SomeHandler在其中添加两个处理器方ServiceService接口中添加一个业务修改Service接口实Dao在其中添加两个方法修改映射文件可以使用简单类名作为别Linux该示例需要启动三台Redis主机,三台Redis哨兵主机。启动Redis逐台启动三台Redis主机,即启动Redis集群逐台登录三台Redis查看Redis逐台查Redis的角启动sentinel逐台启动三台Sentinel主机,即启动SentinelSpringBoot下使用在非SpringBoot工若要使用SpringMVC的器,在定义好器后,需要在Spring配置文件中对其进行。但SpringBoot工没有了Spring配置文件,那么如何使用自WebMvcConfigurationSupport类,并使用@Configuration进行注解,表示该类为一个JavaConfig/CodeConfig类,其充当配置文件的角色。定义工04-customConfig工程,并重命名为05-interceptor。定义定义处理器定义配置文件类修改配置文件配置文件中没SpringBoot中使在pigBt中使用erlt,根据Serlet方式的不同,有两种使用方式。若使用的是Serlt3.+版本,则两种方式均可使用;若使用的是Serlt2.5版本,则只能使用配置类方式。注解方若使用的是Servlet3.0+版本,可以直接使用Servlet的注解对Servlet进行。其总步骤在定义好的Servlet上使用@WebServlet在类上添 注创建工创建一SpringBoot工程,并命名为11-servlet01创建。需要通过创建一个class,让其继承自HttpServlet方式创建。然后在Servlet上添加@WebServlet注解。修改在类中添加Servlet扫描注解配置类方式两步,无需在类上添加 ponentScan注解。定义定义配置类创建工创建springboot工程,并命名为11-servlet02定义配置类SpringBoot中使在SpringBoot中使用Filter与前面的使用Servlet相似,根据Filter方式的不同,有注解方若使用的是Servlet3.0+版本,可以直接使用Filter的注解对Filter进行。其总步骤有在定义好的Filter上使用@WebFilter在类上添 注使用工直接在11-servlet01工程上进行修改,不再创建新的工FilterEclipse中的向导直接创建Filter,无法创修改 ponentScan注解中Filter所在的包,当然,SpringBoot支持通配符配置方若使用的是Servlet2.5版本,没有Filter注解,此时只能使用配置类方式。其总步骤有 ponentScan注解无关。定义定义配置类使用工直接在11-servlet02工程上进行修改,不再创建新的工修改配置类在配置类中添第3章Thymeleaf中都有自己的模板引擎,例如,Java中常见的模板引擎有Velocity、 等。不同的模板引擎都会具有自己的特定的体系,而Thymeleaf以HTML为载体,在HTML的下实现对数据的展示。Thymeleaf本身与SpringBoot是没有关系的,但SpringBoot推荐使用Thymeleaf作为前端页面的数据展示技术,SpringBoot很好地集成了这种模板技术。Thymeleaf的官网为:从官网可以看到,其目前提供两个版本:3.x与2.x。SpringBoot2.x默认使Thymeleaf3.x版本,而SpringBoot1.x则使用的是Thymeleaf2.xSpringBoot创建工创建一个Spring 工程,命名为thymeleaf,并在创建工程时导入如下依赖定义配置文件定义处理器定义index.html页在src/main/resources/tem 下定义index.html页面在页面的<html>中需要添加 名空间属性Thymeleaf标准表常用的 标准表达式有三种。标准表达式都是用于获取代码中存放到中的属性值的,只不过获取方式不同而已。以下举例均面的 工程基础上直接修改,无需再创建新的Module变量表达式处该表达式一般都是通过 属性进行展示的修改处理器类VO修改index直接在页面中添加如下内测试效选择表达式选择表达式,也称为星号表达式,其是使用*{…}括起来的表达式。一般用于展示对象的。达的会示HTML本但要t:oject属性联用,先使用th:jct选择了对象,再使用*{…}选择要展示的对象属性。该表达式可以有效降低页面中代码的冗余。不过,其也可以不与th:jct联用,在*{…}中直接使用“对象.属性”方式,这种写法与变量表达式相同。该表达式一般都是通过 属性进行展示的修改index直接在页面中添加如下内测试效URL表达式使用@{…}括起来,并且其中只能写一个绝对URL或相对URL地址的表达式,称为URL表达式。这个绝对/相对URL地址中一般是包含有动态参数的,需要结合变量表达式${…}进行字符串拼接。@{…}中的URL地址具有三种写法。为了演示这三种写法的区别,先为当前工程添加一个上下文路径,然后直接在inexhtl文件中修改。以http协议开头的绝对地址在进行字符串拼接时使用加号(+)连接,容易出错。但使竖线则无需字符串拼接,简单易读。但是,ea会对其中的问号(?)报错,不过其不影响运行。 以/开头的相对地址在在URL表达式中 会将开头的斜杠(/)解析为当前工程的上下文路ContextPath,而浏览器会自动为其添加“http://主机名: ”,即其即为一个绝对路径在页面通过查看源码可以看到其解析结果中已经添加了上下文路径。而在页面则可以看到浏览器对其解析的结果已经添加 不以/开头的相对地址在页面通过查看源码可以看到其解析结果中是未添加任何东西的,即没有上下文路径。也就是说,其是相对于当前请求路径的一个相对地址。而在页面则可以看到浏览器对其解析的结果已经添加了,Thymeleaf文Thymeleaf的属性很多,从官网的Docs模块的文档中可以看到5.2逻辑运算相关属性该属性用于逻辑判断,类似于JSTL中的<c:if/>在处理器中添index.html文件中添加如下语句C该属性用于多分支判断,类似于Java中的Swith-Case语句在处理器中添index.html文件中添加如下语句一旦某个case与switch的值相匹配了,剩余的case则不再比较。th:case=”*”表示默表示默认的case,前面的case都不匹配时候执行该case。该属性用于遍历数组、List、Set、Map,类似于JSTL中的<c:forEach/>A遍历数组、Set与遍历List方式是相同的Controller中添加如下代码。前面的 为当前遍历对象,而${students}为遍历的集合这个状态对象有两种获取方式,一种是在th:each中指定,一种是在当前遍历变量名后添加Stat后辍。a用的状态对象属index:当前遍历对象的索引号(0开始计算count:当前遍历对象是第几个(1开始计算 布尔值,当前遍历对象的索引号是否是偶数/奇数(从0开始计算 布尔值,当前遍历对象是否是第一个/最后bC需要清楚,Map的键值对是一个Map.EntryIdea对这个遍历对象的key、value属性会报错,但不影响运行。html相这两个属性均用于在体中显示动态文本。但不同的是 会解析文本中HTML,而th:text则是原样显示C该属性用于获取动态name属性值,及的默认value值C在页面查看源码可以看到如下效果URL路径相h:ctinh:ch:href,这三个都是与URL路径相关的属性。若这些URL中包含有动态参数,则它们的值需要URL表达式@{…}与变量表达式{…}配合使用。下面以<ig/>中的t:rc为例演示用法。A、创 放在工程src/main/resources/static下创建一个D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论