JavaWeb | 5 监听器与FreeMarker

JavaWeb | 5 监听器与FreeMarker

  • 监听器 Listener
    • 开发监听器三要素
    • 六种常用监听接口
      • 内置对象监听接口
      • 属性监听接口
    • 项目中监听器的应用场景
  • FreeMarker
    • 模板引擎
    • FreeMarker
    • JSP与FreeMarker
    • FreeMarker快速上手
      • FTL取值
      • if分支判断
      • switch分支判断
      • list迭代
      • 内建函数

监听器 Listener


  • 对Web应用对象的行为进行监控
  • 通过Listener监听自动触发指定的功能代码

开发监听器三要素

  • 实现XxxListener接口,不同接口对应不同监听对象
  • 实现每个接口中独有的方法,实现触发监听的后续操作
  • 在web.xml中配置<listener>使监听器生效

六种常用监听接口

内置对象监听接口

  • ServletContextListener:监听ServletContext对象创建、销毁等操作
  • HttpSessionListener:监听HttpSession对象创建、销毁等操作
  • ServletrRequestListener:监听ServletRequest对象创建、销毁等操作

属性监听接口

  • ServletContextAttributeListener:监听全局属性操作
  • HttpSessionAttributeListener:监听用户会话属性操作
  • ServletrRequestAttributeListener:监听请求属性操作

项目中监听器的应用场景

  • 在线用户统计与流量分析

FreeMarker


模板引擎

  • 模板引擎的目标:数据 + 模板 = 结果
  • 模板引擎将数据与展现有效解耦

在这里插入图片描述

FreeMarker

  • 免费开源的模板引擎技术(通常替代JSP出现)
  • FreeMarker脚本:FreeMarker Template Language
  • 提供了大量内建函数来简化开发

其他的主流模板引擎还有Java Server Page、Beetl。

JSP与FreeMarker

-JSPFreeMarker
官方标准
执行方式编译型解释型
执行效率
开发效率
扩展能力
数据提取JSTL+EL内置标签
发展趋势逐渐淘汰主流应用

FreeMarker快速上手

FTL取值

  • ${属性名}:取值,可对属性进行计算
  • ${属性名!默认值}:使用默认值
  • ${属性名?string}:格式化输出

if分支判断

<#if 条件1>执行代码
<#elseif 条件2>执行代码
<#else>执行代码

switch分支判断

<#switch value><#case refValue1>...<#break><#case refValueN>...<#break>
<#default>...
</#switch>

list迭代

list迭代列表

<#list students as stu><li>${stu_index}-${stu.name}</li>
</#list>

list迭代Map

<#list map?keys as key>${key}:${map[key]}
</#list>

list数字序列迭代

<#list 1..20 as x><li>${x}</li>
</#list>

内建函数

函数名说明示例
substring截取字符串“abcdefg”?substring(2,4)
cap_first首字母大写“jackson”?cap_first
index_of查找字符索引“abcdefg”?index_if(“b”)
length返回字符串长度“abcdefg”?length
round/floor/ceiling四舍五入/下取整/上取整pi?floor
size得到集合元素总数students?size
first/last获取第一个/最后一个元素student?first
sort_by按某个属性对集合排序list?sort_by(“time”)

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

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

相关文章

推荐学习什么编程语言?

选择编程语言学习时&#xff0c;除了就业因素外&#xff0c;还可以考虑以下几个方面来决定学习哪些编程语言&#xff1a; 个人兴趣与目标&#xff1a;如果你对某个特定领域感兴趣&#xff0c;比如游戏开发、数据分析、人工智能等&#xff0c;可以选择与该领域紧密相关的编程语言…

B站广告推广操作教程及费用?

哔哩哔哩&#xff08;B站&#xff09;作为国内极具影响力的年轻人文化社区&#xff0c;已成为众多品牌与企业触达目标受众、提升品牌影响力的重要阵地。然而&#xff0c;面对B站复杂的广告系统与精细化运营需求&#xff0c;许多广告主可能对如何高效开展B站广告推广感到困惑。云…

2023图灵奖得主揭晓!史上首位计算机和数学最高奖“双料王”诞生

重磅消息&#xff01;北京时间4月10日下午5点整&#xff0c;ACM宣布把2023年图灵奖颁给Avi Wigderson&#xff0c;以表彰Wigderson对计算理论和随机性做出的奠基性贡献。 ACM图灵奖通常被称为“计算机领域的诺贝尔奖”&#xff0c;奖金为100万美元&#xff0c;通常颁发给计算机…

Asterisk 21.2.0编译安装经常遇到的问题和解决办法之json

目录 写在json之前Asterisk requires libjansson 写在json之前 在讨论jansson之前&#xff0c;我们先来看另外一个问题&#xff1a; checking for libedit… no checking for history_init in -ledit… no configure: error: *** Please install the ‘libedit’ development …

【MYSQL锁】透彻地理解MYSQL锁

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;mysql专栏&#xff1a;小林同学的专栏 目录 1.锁 1.1 概述 1.2 全局锁 1.2.1 语法 1.2.1.1 加全局锁 1.2.1.2 数据备份 1.2.1.3 释放锁 1.2.1.4 特点 1.2.1.5 演示 1.3 表级锁 1.3.1 介绍 …

03-JAVA设计模式-建造者模式

建造者模式 什么是建造者模式 建造者模式&#xff08;Builder Pattern&#xff09;是一种对象构建的设计模式&#xff0c;它允许你通过一步一步地构建一个复杂对象&#xff0c;来隐藏复杂对象的创建细节。 这种模式将一个复杂对象的构建过程与其表示过程分离&#xff0c;使得…

跨站请求伪造漏洞(CSRF)

什么是CSRF CSRF&#xff08;Cross-Site Request Forgery&#xff09;&#xff0c;也被称为 one-click attack 或者 session riding&#xff0c;即跨站请求伪造攻击。 漏洞原理 跨站请求伪造漏洞的原理主要是利用了网站对用户请求的验证不严谨。攻击者会在恶意网站中构造一个…

spring-cloud微服务openfeign

Spring Cloud openfeign对Feign进行了增强&#xff0c;使其支持Spring MVC注解&#xff0c;另外还整合了Ribbon和Nacos&#xff0c;从而使得Feign的使用更加方便 优势&#xff0c;openfeign可以做到使用HTTP请求远程服务时就像洞用本地方法一样的体验&#xff0c;开发者完全感…

获取请求数据

假设有这样一个请求&#xff1a;http://localhost:8080/springmvc/register?namezhangsan&password123&emailzhangsanqq.com 在SpringMVC中应该如何获取请求提交的数据&#xff1f;在SpringMVC中又应该如何获取请求头信息&#xff1f;在SpringMVC中又应该如何获取客户…

搭建第一个Web服务器(在eclipse或idea上部署Tomcat服务器)

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

深入理解Linux系统中的前后台任务与守护进程

⭐小白苦学IT的博客主页 ⭐初学者必看&#xff1a;Linux操作系统入门 ⭐代码仓库&#xff1a;Linux代码仓库 ❤关注我一起讨论和学习Linux系统 1.前言 在Linux系统中&#xff0c;进程管理是至关重要的一个环节。其中&#xff0c;前后台任务和守护进程是进程管理中不可忽视的两…

阿里云云效CI/CD配置

1.NODEJS项目流水线配置(vue举例) nodejs构建配置 官方教程 注意:下图的dist是vue项目打包目录名称,根据实际名称配置 # input your command here cnpm cache clean --force cnpm install cnpm run build 主机部署配置 rm -rf /home/vipcardmall/frontend/ mkdir -p /home/…

刷题之Leetcode707题(超级详细)

707.设计链表 力扣题目链接(opens new window)https://leetcode.cn/problems/design-linked-list/ 题意&#xff1a; 在链表类中实现这些功能&#xff1a; get(index)&#xff1a;获取链表中第 index 个节点的值。如果索引无效&#xff0c;则返回-1。addAtHead(val)&#x…

Day37代码随想录(1刷) 动态规划

509. 斐波那契数 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 n …

外包干了17天,技术倒退明显

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01; 而我已经在一个企业干了四年的功能…

局域网tcp通信实验

两台windows系统计算机简单TCP通信测试_两台计算机tcp通信-CSDN博客 使用这篇文章的小工具。 环境&#xff1a; 我和同学的两台笔记本电脑。 使用我的手机开热点&#xff0c;两台电脑连接热点。 我的&#xff1a; IPv4 地址 . . . . . . . . . . . . : 192.168.92.79 子…

Day04-SHELL自动化编程-循环与颜色函数库

Day04-SHELL自动化编程-循环与颜色函数库 11. 必知必会核心命令11.1 命令概述11.7 案例11.8 小结 12 Shell编程-循环12.1 循环概述12.2 for循环1&#xff09;最常用的for循环格式2&#xff09;c语言格式for循环3&#xff09;for循环格式及应用场景4&#xff09;案例 12.3 while…

【WSN覆盖优化】基于灰狼优化算法的无线传感器网络覆盖 GWO-WSN覆盖优化【Matlab代码#74】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】1. 灰狼优化算法2. WSN节点感知模型3. 部分代码展示4. 仿真结果展示5. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】 1. 灰狼优化算法 此处略。 2.…

【Java8新特性】四、强大的Stream api

​ 这里写自定义目录标题 一、了解Stream二、流(stream)到底是什么&#xff1f;三、Stream操作的三个步骤四、创建Stream的四种方式五、Stream 的中间操作1、筛选和切片2、map 映射3、排序 六、Stream 的终止操作1、查找和匹配2、归约3、收集 一、了解Stream Stream是Java8中…

spring容器

spring容器 实现方式 spring中提供了各式各样的IOC容器的实现供用户选择和使用&#xff0c;使用什么样的容器取决于用户的需要 BeanFactory 该接口是最简单的容器&#xff0c;提供了基本的DI支持。最常用的BeanFactory实现是XmlBeanFactory类&#xff0c;根据XML文件中的定义加…