jsp include 和EL函数为菜单栏动态添加样式

2024-06-03 11:38

本文主要是介绍jsp include 和EL函数为菜单栏动态添加样式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在模块中出现公用的菜单栏,如果每一页都单独有一个菜单栏维护起来很麻烦,每次增加一个菜单的话,菜单中的每个页面都需要修改菜单栏,稍有不慎,就会出现样式不一样的情况。

这时候就需要用到jsp的包含机制。包含机制有两种:include指令和<jsp:include/>标准动作。

<%@ include file=“ /jsp/widget/user/menuNavl.jsp"%>

<jsp:include page=“ /jsp/widget/user/menuNavl.jsp”/>

include指令告诉容器:复制所包含文件中的所有内容,再把它黏贴到这个文件中,而且就放在其中。

<jsp:include>标准动作和include指令看上去一样,而且通常有相同的结果,但是看生成的servlet,就会发现不同。

下图是菜单页面menuNavl.jsp,为简单起见,我只截取了其中一部分

jsp include 和EL函数为菜单栏动态添加样式

下图为生成的servlet,menuNavl_jsp.java

jsp include 和EL函数为菜单栏动态添加样式

使用include指令生成的servlet,include指令取menuNavl.jsp的内容,在转换前放在include指令引用页面。

jsp include 和EL函数为菜单栏动态添加样式

使用<jsp:include/>标准动作的JSP生成的servlet,menuNavl.jsp页面不放在引用页面生成的servlet中,是一个运行时调用。

jsp include 和EL函数为菜单栏动态添加样式

也就是说,include指令在转换时插入menuNavl.jsp的源代码,而<jap:include/>标准动作在运行时插入menuNavl.jsp的响应。

在使用include指令的时候在第一次请求的时候需要做转换,从第二次请求开始,就再没有额外的运行时开销了。

在<jsp:include/>标准动作,转换时没有做多少工作,但是在每次请求的时候需要做拼接,每次请求都有一些运行时开销。

使用<jsp:include/>标准动作的好处是能保证每次都能看到最新的内容,include指令在现在新的容器变化可见中也能重新转换最新文件。

因此在平常使用中推荐使用include指令包含引用JSP。

现在有这样一个应用场景,JSP包含一个公共的菜单列表页面,这个菜单列表页面,点击菜单跳转到目标页面,需要根据跳转的页面,在菜单上把相应页面的名称颜色做改变。

我们引入EL函数就能帮我们实现需求。

实现EL函数你需要四步实现:

一、编写有一个公共静态方法的Java类。

有函数的类,必须是公共、静态的方法。

jsp include 和EL函数为菜单栏动态添加样式

二、编写一个标记库描述文件(TLD)

jsp include 和EL函数为菜单栏动态添加样式

三、在JSP中放一个taglib指令。

四、使用EL调用函数。

jsp include 和EL函数为菜单栏动态添加样式

根据判断的结果,后台设定menuNavl属性的值,如果返回的值和userManage的值相等,文字的样式中就添加on的样式,这样就可以根据访问的页面动态返回需要的样式。

本文为头条号作者发布,不代表今日头条立场。

这篇关于jsp include 和EL函数为菜单栏动态添加样式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026884

相关文章

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

Unity3D 运动之Move函数和translate

CharacterController.Move 移动 function Move (motion : Vector3) : CollisionFlags Description描述 A more complex move function taking absolute movement deltas. 一个更加复杂的运动函数,每次都绝对运动。 Attempts to

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划