栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【JAVADAY35】thymeleaf技术的初步使用及基本语法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【JAVADAY35】thymeleaf技术的初步使用及基本语法

thymeleaf基础语法

路径问题

完善水果系统

路径问题

使用相对路径

如何在user下的login.html,引用css中的login.css

使用…/回到当前所在路径的上一级,就回到了user这一级,因为css和user是同一级内的,所以

…/css/login.css即可

如何在index.html引用login.css,因为index.html与css在同一级,因此可以写成:css/login.css

缺点:如果项目所在文件夹套的比较多将会使用多次…/,比较麻烦

使用绝对路径

绝对路径的根路径是:http://localhost:8080/pro10,即你的webapp项目所在的那个路径。由根路径,我们就很好找其他文件了,比如要找login.css,就直接http://localhost:8080/pro10/css/login.css优点:不用考虑当前文件所在层级,引用其他文件一律从根开始找。

base标签:base标签的作用,以及如何替代base标签:

当前页面上的所有路径都以这个为基础。

嗡嗡嗡

因此我们HTML中的路径就可以写成


浏览器会自动以base中的路径为基础补全为:

怎么动态获取,当前项目的根路径呢?

thyme中提供了一个语法th:href=“@{}”就可以替代base标签我们就可以把上述代码写成


完善水果系统

th:text语法的使用细节

当它作为静态文件直接运行时,浏览器会自动忽略它不能识别的th:text属性,而显示

标签体的文本内容

当它作为模板文件运行在服务器端时,th:text属性的具体值将会替换

标签体的文本内容。

th:text=“”用于输出引号里面的内容到HTML

同时它会覆盖掉原本标签内的所有HTML

比如
                苹果
此时被标签包裹的苹果,将被th:text输出的内容给覆盖掉
    超链接以及苹果失效

th:utext

属性th:utext与th:text的区别在于:

th:text默认会对含有 HTML 标签的内容进行字符转义;th:utext(Unescaped Text)则不会对含有 HTML 标签的内容进行字符转义;

假设:message = "Welcome to BeiJing!"。

使用th:text属性:

th:text效果:Welcome to BeiJing!

使用th:utext属性:

th:utext效果:Welcome to BeiJing!

th:href语法的使用

            
                
                {}里面的被认为是字符串与根路径相加拼成了URL
                
                    新增
                    删除
                    修改
                    详情
                
            

如何在href后面传值给下一个页面

第一种写法,不推荐,用单引号括起不需要解析的字符串,没有阔的thyme会按照语法解析

修改

第二种写法,推荐

用括号括起来需要传的值,(name=value,name=value,name=value…),不需要问号和&号

修改

注意,这种写法不仅仅使用与th:href,action也是可以的,只要根路径有关的标签都行

@{/xxxx}

符号||可以用来将字面值和表达式包裹起来,这样就能方便的替换变量的值,而不需要使用+连接符:

操作四大域的语法

会话域session

session.fruitList session后面是存放在session域中的对象的key

请求域request

${fruits123.fid},request不用写,只需要把request的对象的key写出来,在点对象的属性名就行了

水果编号:

应用域application

application.fruitList application后面是存放在application域中的对象的key

简化html中获取属性的写法

如果是一个属性yy的获取需要 xx.yy类似这种格式都可以使用下面th:object"${xx}",在子标签中就可以只用属性名就能达到相同的效果





水果编号:

比如说:我们的index.html页面的详情跳转代码就可以修改为下面这样


详情
    ....

表单提交中文,数据库乱码问题

//request.setCharacterEncoding("UTF-8");解决前端表单提交中文,数据库乱码并且导致前端显示不出来问题
//仅针对post请求有效,写在Java中

思考,但不确定是否真是这样

super.processTemplate("index",request,response);
这行代码的作用是,将/index.html路径下的静态页面即index.html,渲染为动态页面,并且跳转至路径页面,默认跟在根目录下。
    并把Java中的request和response传给前端
 如果你直接访问index.html,显然里面写的th是不会生效的,我们必须经过模板引擎thyme leaf,通过使在index中写的语法生效,让静态index变为动态的index
        因此我们引入了逻辑视图
        物理视图= 视图前缀+ 逻辑视图+ 视图后缀
        试图前缀和视图后缀
         /pages/user/login.html
		/pages/user/login_success.html
		/pages/user/regist.html
		/pages/user/regist_success.html
			...
        路径的开头都是:/pages/user/
        路径的结尾都是:.html
        所以,路径开头的部分称之为视图前缀,路径结尾的部分称之为视图后缀。
        视图前缀	  逻辑视图	        视图后缀	  物理视图
	  /pages/user/	  login	           .html	/pages/user/login.html
      /pages/user/	  login_success	   .html	/pages/user/login_success.html

思考2,为什么使用super.processTemplate(“index”,request,response);更新后页面不会刷新或者说response.sendRedirect这个方法什么时候用?

response.sendRedirect(request.getContextPath()+"/index");
虽然我写的Java里有很多直接使用的是这个,但实际上,你跳到/项目名/index下,它会寻找/index对于的servlet
在该servlet中,我曾经写了一个代码在代码的最后一行,我写了:
        super.processTemplate("index",request,response);
            /*为什么能写super.processTemplate("index",request,response)
              因为:我的代码中update.html点击提交了之后要找/update.do的servlet就找到了这里
              然后通过if,当他走到super.processTemplate这里面的时候,这是一个post的request
              它只进IndexServlet.java的inie和destory方法里并没有进doget,通过在IndexServlet.java中写代码
              也能验证这一点,出来后你会发现它此时的路径依旧是/update.do,因为它执行完后,实际上并不是我们想的那样
              经过doget方法,然后跳转到index.html,它并没有
              而我们用重定向就不会不进doget方法了,因为重定向是一次get请求。
              
              
  不只是update需要用重定向,add也是需要的,因为它也是发了一次post请求,你没法直接用
  super.processTemplate("index",request,response);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785263.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号