Thymeleaf视图模板的学习以及一些语法用法

  

流程:客户端向服务端的index组件发送请求,index组件会调用FruitDAO直至获取到数据库的数据;服务端获取到fruitList之后,存入到Session中,方便之后使用;之后调用ViewBaseServlet中的processTemplate方法,渲染对应的静态页面index.html。

1、添加thymeleaf的jar包

2、新建一个viewBaseServlet

ViewBaseServlet已经写好:

import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.WebContext;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class ViewBaseServlet extends HttpServlet {private TemplateEngine templateEngine;@Overridepublic void init() throws ServletException {// 1.获取ServletContext对象ServletContext servletContext = this.getServletContext();// 2.创建Thymeleaf解析器对象ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext);// 3.给解析器对象设置参数// ①HTML是默认模式,明确设置是为了代码更容易理解templateResolver.setTemplateMode(TemplateMode.HTML);// ②设置前缀String viewPrefix = servletContext.getInitParameter("view-prefix");templateResolver.setPrefix(viewPrefix);// ③设置后缀String viewSuffix = servletContext.getInitParameter("view-suffix");templateResolver.setSuffix(viewSuffix);// ④设置缓存过期时间(毫秒)templateResolver.setCacheTTLMs(60000L);// ⑤设置是否缓存templateResolver.setCacheable(true);// ⑥设置服务器端编码方式templateResolver.setCharacterEncoding("utf-8");// 4.创建模板引擎对象templateEngine = new TemplateEngine();// 5.给模板引擎对象设置模板解析器templateEngine.setTemplateResolver(templateResolver);}protected void processTemplate(String templateName, HttpServletRequest req, HttpServletResponse resp) throws IOException {// 1.设置响应体内容类型和字符集resp.setContentType("text/html;charset=UTF-8");// 2.创建WebContext对象WebContext webContext = new WebContext(req, resp, getServletContext());// 3.处理模板数据templateEngine.process(templateName, webContext, resp.getWriter());}
}

3、在web.xml文件中配置

    <context-param><param-name>view-prefix</param-name><param-value>/</param-value></context-param><context-param><param-name>view-suffix</param-name><param-value>.html</param-value></context-param>

配置上下文参数<context-param>

配置前缀 view-prefix value为:/

配置后缀 view-suffix value为: .html

这两个参数会在ViewBaseServlet中的init方法中使用

 4、我们的各种servlet组件继承ViewBaseServlet

        接着在我们的servlet中 调用ViewBaseServlet中的方法:

super.processTemplate("index",req,resp);

thymeleaf会将这个对应的逻辑视图名称对应到物理视图上

物理视图名称 : view-prefix + 逻辑视图名称 + view-suffix

所以真实的视图名称为 /               index                 .html

二、thymeleaf的语法

        首先要在加入这样的信息:

<html xmlns:th="http://www.thymeleaf.org">

        这里不太明白作用,照猫画虎先,不然th标签总是报错。

       1、 if 与unless   

         lists.isEmpty是 thymeleaf中的一种判断集合是否为空的方法(前面的#可能表示这是个函数,不确定)

        因为fruitList之前已经存储到session中了,所以只需要 session.键值即可获取对应的数据。

        注意:判断list为空的函数为 lists.xxxx ,不是list

        2、迭代 each

将list表中的数据一个一个取出来赋给 fruit 

        3、text

              设置td中内部的文本

相当于苹果那个位置的值是 fruit.fname,而fruit是fruitList中一个一个的值。

经过thymeleaf的渲染会覆盖在 写死的内容上去

 页面的显示结果(仅仅是把数据库的数据放进来了)

        4、th:href

        是以项目为路径作为根目录

 

我们想要做到点击页面中的水果,即可对其进行修改。

但由于index页面的路径,使用<a href="....."> 的情况下会根据当前的目录跳转。但往往这些组件和index.html不在一个目录之下,因此需要使用 上述的方法,

        

 但是,需要向edit.do发送一些值

当一部分为字符串另一部分需要thymeleaf去解析时可以这样写

'内部为普通的字符串'  ${为需要解析的字符串} 

通过这样可以发送给edit.do 一些值,比如水果的fid值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

21 RadioGroup ListFragment

结构 MainActivity.java package com.qf.day21_radiogroupfragment_demo3;import java.util.ArrayList; import java.util.List;import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.…

XML与过滤器、事务管理

一 XML 二&#xff1a;过滤器&#xff08;Filter&#xff09; 功能&#xff1a; WebFilter("/demo01.do") public class Demo01Filter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {}Overridepublic void doF…

Mybatis获取参数值的各种情况

public interface SelectMapper {//根据ID查询用户信息User getUserById(Param("id") Integer id);//查询所有用户信息List<User> getAllUser();//查询用户信息的总记录数Integer getCount();//查询用户信息使用mapMap<String, Object> getUserByIdToMap…

Mybatis中的配置文件xml

在配置的过程中&#xff1a;我们的mapper接口要与映射的XML文件处在同一位置下&#xff08;层级相同&#xff09; 比如&#xff1a;java.mybatis.mapper.ParameterMapper 对应: resoureces.mybatis.mapper.ParameterMapper 否则在进行测试的时候会出现无效的绑定 Invalid b…

Mybatis中处理多对一的映射关系

数据库中的结构&#xff1a; 实体类&#xff1a; 最终结果&#xff1a; 一&#xff1a;级联属性查询 自定义resultMap中可以这样设置&#xff1a; <resultMap id"empAndDeptResultMapOne" type"Emp"><id property"eid" column"ei…

Mybatis中处理一对多的映射关系

一对多与多对一的区别&#xff1a; 以部门表为单位&#xff0c;一个部门会有很多员工为一对多的关系 以员工表为单位&#xff0c;会有多个员工在一个部门中为多对一的关系 一&#xff1a;collection 由于一个部门中会有多个员工&#xff0c;即一对多的关系因此我们需要的实体…

Mybatis中缓存

1、一级缓存 SqlSession sqlSession SqlSessionUtils.getSqlSession();CacheMapper mapper sqlSession.getMapper(CacheMapper.class);Emp emp1 mapper.getEmpByEid(1);System.out.println(emp1);Emp emp2 mapper.getEmpByEid(1);System.out.println(emp2); 可以看到只访问…

HTML页面、CSS样式的以及js学习与介绍

html决定页面显示什么内容 css决定页面的美观程度html语言是解释型语言&#xff0c;解释不出来就不管了&#xff0c;不区分大小写 浏览器是容错的1&#xff09;html页面由一对标签组成:<html><html/>&#xff0c;分别成为开始标签和结束标签 2&#xff09;title:表…

lwip连续发数据卡死_Mysteel:12月全球铁矿石发运量稳中微增 进口矿咋走?

十一月份铁矿石供需差收紧价格上行。展望十二月份&#xff0c; 全球铁矿石发运稳中微增&#xff0c;到港小幅下降&#xff0c;澳洲方面&#xff0c;力拓财年末冲量将带来部分增量&#xff0c;但BHP仍受检修影响环比或将有所减量&#xff0c;整体来看&#xff0c;预计澳洲发运量…

CS模式与BS模式以及Tomcat的了解

一、CS与BS的差异 二、Tomcat Tomcat :web container 可执行文件目录 配置文件 部署项目的一个文件夹&#xff08;现在不怎么用这种方法&#xff09; 在webapp中&#xff0c;可以创建自己的web项目&#xff1a; 里面需要包含一个文件夹&#xff1a;WEB-INF以及自己的网页 之后…

贴花纸怎么贴_电子便签贴怎么使用?怎么在电脑上贴便签

电脑上的电子便签贴怎么使用&#xff1f;怎么在电脑上贴便签&#xff1f;Windows电脑上的便签贴小工具有很多&#xff0c;以敬业签桌面便签贴为例&#xff0c;将这个便签贴小工具在电脑桌面上安装好之后&#xff0c;注册一个会员账号和密码&#xff0c;可参考如下教程演示的步骤…

Servlet学习

一、以添加数据为例 在add.html页面的表单中&#xff0c;我们输入数据&#xff0c;通过点击添加操作&#xff0c;根据action发给我们服务器端的add组件&#xff0c;这个add组件会用JDBC中添加的方法向数据库中添加数据。 1、add组件 AddServlet servlet&#xff08;服务器端…

b 树查找时间复杂度_心里没点 B 树。。。

B 树和红黑树的动画小吴还在制作当中&#xff0c;比想象中的复杂好多好多好多&#xff0c;今天先来一个图解版的 B 树。。。1 引言数据库的增删改查等操作是开发过程中最为常见也是尤为重要的&#xff0c;尤其是现在大数据的兴起&#xff0c;导致数据存储量急剧增加&#xff0c…

HTTP与会话的学习

一、HTTP协议 请求 1请求行 2、请求消息头 3、请求主体 响应 1、响应行 2、响应头 3、响应体 二、会话 HTTP无状态&#xff1a;服务器无法判断两次请求是否为同一个客户端发过来的。 因此通过会话跟踪来解决这个问题 Overrideprotected void service(HttpServletRequest req,…

3650m5服务器内存选择 ibm_各大品牌服务器租用价格表明细(附详细表单)

企业在进行IT建设的花费肯定不少&#xff0c;其中就包括了服务器租用。那如何租到性价比高的服务器&#xff1f;可以先了解一下各大品牌的报价情况&#xff0c;对比服务器租用价格表&#xff0c;找到价格合适的。不过也不可一味的遵从低价格&#xff0c;毕竟一分钱一分货也是一…

服务器内部转发以及客户端重定向概念的学习

一、服务器内部转发 一次请求响应的过程&#xff0c;对于客户端而言&#xff0c;内部经过了多少次转发是不知道的。 既地址栏不会变化 二、客户端重定向 客户端向上面的组件发送请求&#xff0c;组件里由response.sendRedirect方法指向demo07&#xff0c;于是服务器端里上面的…