门永不过时的编程语言——Java 软件开发,你赞同吗?
我赞同。
小编用数据说话
Java编程语言占比:
据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以1000万的程序员数量位居首位。 而且很多软件的开发都离不开Java编程,因此其程序员的数量最多。而在以Java编程为核心的开发领域中,javaEE程序员的需求量10年来一直居于首位!
Java工程师就业:
1.通过各大招聘网站统计,全国海量公司都在招聘Java开发工程师
2.北京Java开发工程师平均薪资,即16788元
3.全国Java开发薪资前三:北京 上海 广州
以上2个数据,你心动了,心动就赶快行动起来吧。5G时代,万物互联,更多的终端会使用安卓系统,随之而来的Java开发必然是会越来越火爆,所以学习Java是必要且必须的,下边就是总结了下Java的学习路线。
包括Java基础课程、JavaWeb和java框架课程。
你可能会好奇,你不是讲java学习路线吗?为啥还有前端web的部分,我只能告诉你,
我们可不能闭门造车,很多公司学后端还要学前端的
前端现在很多也了解后端的技术栈的,你想我们去一个网站,最先接触的,最先看到的是啥?
没错就是前端,在大学你要是找不到专门的前端同学,去做系统肯定也要自己顶一下前端的
当然,有些公司是不写的,例如:
俗话技多不压身,为了方便要写的小伙伴,咱还是一起介绍了~
Java基础课程内容涉及:Java开发介绍、Java数组、Java面向对象、常用基础类、集合、IO流、多线程、异常、反射。
第一部分:Java开发介绍
第二部分:Java数组
第三部分:Java面向对象
第四部分:异常
第五部分:集合
第六部分:IO流
第七部分:多线程
JavaWeb课程内容涉及:HTML5课程、CSS3、JavaScript、MySQL使用、JDBC连接池、Servlet、JSP、AJAX、jQuery、Bootstrap。
第一部分:HTML5
第二部分:CSS3
第三部分:JavaScript
第四部分:MySQL使用 或oracle数据库
第五部分:JDBC连接池
第六部分:Servlet
第七部分:JSP
第八部分:AJAX
Java框架课程内容涉及:Spring、Spring MVC、MyBatis、SVN、Git、Maven
第一部分:Spring
第二部分:Spring MVC
第三部分:MyBatis
第四部分:SVN 和git
第五部分:Maven
第六部分
项目开发
项目没做过?没关系,160个项目实战案例、一套学习Java的资料,如果你想在技术上提升自己,可以关注我哟,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让更多的人看到哦
hymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。它与 JSP,Velocity,FreeMaker 等模板引擎类似,也可以轻易地与 Spring MVC 等 Web 框架集成。与其它模板引擎相比,Thymeleaf 最大的特点是,即使不启动 Web 应用,也可以直接在浏览器中打开并正确显示模板页面 。
Thymeleaf 是新一代 Java 模板引擎,支持 HTML 原型,以直接被浏览器打开,此时浏览器会忽略未定义的 Thymeleaf 标签属性,展示 thymeleaf 模板的静态页面效果。当在应用程序中会动态地替换掉页面设置的标签属性。
Thymeleaf 通过在 html 标签中,增加额外属性来达到“模板+数据”的展示方式
IDEA新创建HTML文件是这样的:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
</html>
要想使用 Thymeleaf 之前,首先要在页面的 html 标签中声明名称空间,可避免编辑器出现 html 验证错误。
xmlns:th="http://www.thymeleaf.org"
Thymeleaf 作为一种模板引擎,它拥有自己的语法规则。Thymeleaf 语法分为以下 2 类:
hymeleaf 模板引擎支持多种表达式:
这里变量表达式和其他模板类似,可以使用表达式具有以下功能:
变量表达式与 th:object 的配合使用。当使用 th:object 存储一个对象后,我们可以在其后代中使用选择变量表达式(*{...})获取该对象中的属性,其中,“*”即代表该对象。
<div th:object="${session.user}" >
<p th:text="*{userName}">userName</p>
</div>
链接都可以用链接表达式 (@{...}),链接表达式的形式结构如下: 无参请求:@{/xxx} 有参请求:@{/xxx(k1=v1,k2=v2)}。
<link rel="stylesheet" th:href="@{/style.css}"></link>
消息表达式一般用于国际化的场景。
th:text="#{message}"
片段引用表达式用于在模板页面中引用其他的模板片段,该表达式支持以下 2 中语法结构:
templatename:模版名,fragmentname:片段名,Thymeleaf 通过 th:fragment 声明定义代码块,即:th:fragment="fragmentname"。id:HTML 的 id 选择器,使用时要在前面加上 # 号,不支持 class 选择器。
我们可以将公共页面片段抽取出来,存放到一个独立的页面中,然后在其他页面使用片段表达式进行引用。
hymeleaf 在抽取和引入公共页面片段时,还可以进行参数传递。
我们可以通过以下 2 种方式,将参数传入到被引用的页面片段中:
在使用参数时可以使用变量表达式使用这些参数。
<!--使用 var1 和 var2 声明传入的参数,并在该片段中直接使用这些参数 -->
<div th:fragment="fragment-name(var1,var2)" id="fragment-id">
<p th:text="'参数1:'+${var1} + '-------------------参数2:' + ${var2}">...</p>
</div>
Thymeleaf 还提供了大量的 th 属性,这些属性可以直接在 HTML 标签中使用。
th属性标签还有很多,这里只是用了一小部分,有兴趣的可以在网上搜索一下。
我们知道,在web开发时,一般都会涉及到很多的静态资源,如js、image、css文件等。
SpringBoot的默认的静态文件目录是:
所以,一般我们只需要把静态文件放入前面的四个任一一个即可,默认都放在static下,对应路径即为:src/main/resources/static。
而从官网文档里也可以获悉,为了实现动态的html,SpringBoot是通过模版引擎进行页面结果渲染的,目前(1.5.15)版本的提供默认配置的模版引擎主要为:
对于模版引擎而言,SpringBoot默认存放模版文件的路径为src/main/resources/templates,当然也可以通过配置文件进行修改。因为不同的模版引擎对应的配置属性不一样,所以在具体讲解模版引擎时,会提到。
当然了,也可以使用jsp,但官方已经不建议使用JSP,本文也会讲解下SpringBoot下JSP的支持,毕竟有很多老的项目还在使用JSP。
知道以上的一些默认配置和知识点后,就可以进行模版引擎的集成使用了。本章主要讲解常用的FreeMarker、Thymeleaf及JSP三个的集成和使用,其他的基本用法都一样,就是各模版引擎的语法的差异了。
FreeMarker是一款模板引擎,即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。
1、POM依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId></dependency>
2、application.properties配置加入相关配置:
# 缓存配置 开发阶段应该配置为false 因为经常会改spring.freemarker.cache=false # 模版后缀名 默认为ftlspring.freemarker.suffix=.html # 文件编码spring.freemarker.charset=UTF-8 # 模版加载的目录spring.freemarker.template-loader-path=classpath:/templates/ # 配置# locale 该选项指定该模板所用的国家/语言选项# number_format 指定格式化输出数字的格式:currency、# boolean_format 指定两个布尔值的语法格式,默认值是true,false# date_format,time_format,datetime_format 定格式化输出日期的格式# time_zone 设置格式化输出日期时所使用的时区# 数字 千分位标识spring.freemarker.settings.number_format=,##0.00
详细的配置可参见
org.springframework.boot.autoconfigure.freemarker.FreeMarkerProperties类,或者直接IDE直接配置文件点击查看。
3、编写控制层
FreemarkerController.kava:
//因为是返回页面 所以不能是@RestController@Controller@RequestMapping("/freemarker")public class FreemarkerController { //正常和springmvc设置返回参数是意义的用法了 @GetMapping("/map") public String index(String name,ModelMap map) { map.addAttribute("name", name); map.addAttribute("from", "lqdev.cn"); //模版名称,实际的目录为:src/main/resources/templates/freemarker.html return "freemarker"; } @GetMapping("/mv") public String index(String name,ModelAndView mv) { mv.addObject("name", name); mv.addObject("from", "lqdev.cn"); //模版名称,实际的目录为:src/main/resources/templates/freemarker.html return "freemarker"; }}
4、编写模版文件
freemarker.html:
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" /> <title>freemarker简单示例</title></head><body><h1>Hello Freemarker</h1><!-- 这里注意:默认变量都不能为null的, 当参数为null时,会发生异常的 --><!-- 这里后面几个"!"避免下,这样就是空白了 --><h2>名称:${name!},来自:${from}</h2></body></html>
5、启动应用
访问:http://127.0.0.1:8080/freemarker/mv?name=oKong 或者 http://127.0.0.1:8080/freemarker/map?name=oKong 就能查看页面了。
关于一些Freemarker的语法这里就不说明了,大家可到官网查看下:https://freemarker.apache.org/docs/index.html
Thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此,也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板,相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。
1、pom依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>
2、application.properties配置加入相关配置:
# 启用缓存:建议生产开启spring.thymeleaf.cache=false# 建议模版是否存在spring.thymeleaf.check-template-location=true# Content-Type 值spring.thymeleaf.content-type=text/html # 是否启用spring.thymeleaf.enabled=true# 模版编码spring.thymeleaf.encoding=UTF-8# 应该从解析中排除的视图名称列表(用逗号分隔)spring.thymeleaf.excluded-view-names= # 模版模式spring.thymeleaf.mode=HTML5 # 模版存放路径spring.thymeleaf.prefix=classpath:/templates/ # 模版后缀spring.thymeleaf.suffix=.html
3、编写控制层
ThymeleafController.java:
@Controller@RequestMapping("/thymeleaf")public class ThymeleafController { // 正常和springmvc设置返回参数是意义的用法了 @GetMapping("/map") public String index(String name, ModelMap map) { map.addAttribute("name", name); map.addAttribute("from", "lqdev.cn"); // 模版名称,实际的目录为:src/main/resources/templates/thymeleaf.html return "thymeleaf"; } @GetMapping("/mv") public ModelAndView index(String name) { ModelAndView mv = new ModelAndView(); mv.addObject("name", name); mv.addObject("from", "lqdev.cn"); // 模版名称,实际的目录为:src/main/resources/templates/thymeleaf.html mv.setViewName("thymeleaf"); return mv; }}
4、编写模版文件
thymeleaf.html
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" /> <title>thymeleaf简单示例</title></head><body><h1>Hello thymeleaf</h1><!-- 这里注意:拼接时 变量要单独使用${param},其他的常量使用''包裹 --><h2 th:text="'名称:'+${name}+',来自:'+${from}">默认值</h2></body></html>
5、启动应用
访问:http://127.0.0.1:8080/thymeleaf/mv?name=oKong 或者 http://127.0.0.1:8080/thymeleaf/map?name=oKong 就能查看页面了。
虽然SpringBoot官方已经不建议使用jsp了,但在一些老的项目迁移时,jsp的支持是毋庸置疑的,所以还是需要兼容的。。
1、pom依赖加入
<!-- spring boot 内置tomcat jsp支持 --><dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId></dependency><dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId></dependency>
2、application.properties配置加入相关配置:
#jsp 支持spring.mvc.view.suffix=.jspspring.mvc.view.prefix=/WEB-INF/jsp/
3、编写控制层
JspController.java
@Controller@RequestMapping("/jsp")public class JspController { //正常和springmvc设置返回参数是意义的用法了 @GetMapping("/map") public String index(String name,ModelMap map) { map.addAttribute("name", name); map.addAttribute("from", "lqdev.cn"); //模版名称,实际的目录为:src/main/webapp/jsp/index.html return "index"; } @GetMapping("/mv") public ModelAndView index(String name) { ModelAndView mv = new ModelAndView(); mv.addObject("name", name); mv.addObject("from", "lqdev.cn"); //模版名称,实际的目录为:src/main/webapp/jsp/index.html mv.setViewName("index"); return mv; }}
4、webapp/WEB-INF/jsp目录下编写jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charsetUTF-8"><title>jsp示例</title></head><body><h1>Hello Jsp</h1><h2 >名称:${name},来自:${from}</h2></body></html>
5、启动应用
访问:http://127.0.0.1:8080/jsp/mv?name=oKong 或者 http://127.0.0.1:8080/jsp/map?name=oKong 就能查看页面了。
注意:在使用spring-boot-maven-plugin打包插件时,默认情况下打包的应用时访问不了jsp目录文件的,需要把版本修改为1.4.2.RELEASE版本,同时pom中加入resource配置:
<resources> <!-- 打包时将jsp文件拷贝到META-INF目录下 --> <resource> <!-- 指定resources插件处理哪个目录下的资源文件 --> <directory>src/main/webapp</directory> <!--注意此次必须要放在此目录下才能被访问到 --> <targetPath>META-INF/resources</targetPath> <includes> <include>**/**</include> </includes> </resource><!-- <resource> 指定resources插件处理哪个目录下的资源文件 <directory>src/main/resources/static</directory> 注意此次必须要放在此目录下才能被访问到 <targetPath>META-INF/resources/static</targetPath> <includes> <include>**/**</include> </includes> </resource> --> <resource> <directory>src/main/resources</directory> <includes> <include>**/**</include> </includes><!-- <excludes> <exclude>src/main/resources/static/**</exclude> </excludes> --> <filtering>false</filtering> </resource></resources>
总结
本章主要是讲解利用模版引擎进行动态页面实现功能,对于有此需要的同学可以去看下使用的模版引擎的相关使用教程,这里就不多加阐述。目前互联网上很多大佬都有springboot系列教程,如有雷同,请多多包涵,若文中有所错误之处,还望提出!需要看SpringBoot系列前十四章需移步本人主页浏览。
SpringBoot系列:
SpringBoot深入解析——基于 Docker 的简单部署(十四)
https://www.toutiao.com/i6597750315166990862/
SpringBoot深入解析——基于 Postman的RESTful 接口测试(十五)
https://www.toutiao.com/i6597747954155520515/
*请认真填写需求信息,我们会在24小时内与您取得联系。