EL表达式的深刻认识

web课后习题及答案 web复习供考试复习参考,希望对大家有帮助 立即下载

EL表达式的作用(Expression Language):

  • 获取数据:

EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)

  • 执行运算:

利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}

  • 获取web开发常用对象:

EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。

  • 调用Java方法:

​​​​​​​EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

EL表达式获取数据:

*使用EL表达式获取数据语法: “${标识符}”

*EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。

*EL表达式也可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据,例如: ${user.address.city} ${user.list[0]}:访问有序集合某个位置的元素 ${map.key}  : 获得map集合中指定key的值

下面有实例代码demo1.jsp的重要代码:

<h3>获取域中对象的值</h3>
<% 
	pageContext.setAttribute("name", "张三");
	request.setAttribute("name", "李四");
%>
${pageScope.name }
${requestScope.name }

<h3>获取数组中的值</h3>
<%
	String [] arrs = {"小明","小红"};
	request.setAttribute("arrs", arrs);
%>
${ arrs[1]}

<h3>域中集合的值</h3>
<%
	List<String> list =  new ArrayList<String>();
	list.add("小红");
	list.add("小李");
	request.setAttribute("list", list);
%>
${ list[1]}

<h3>域中Map集合的值</h3>
<%
	Map<String,String> map = new HashMap<String,String>();
	map.put("aa", "小红");
	map.put("bb.cc", "小李");
	request.setAttribute("map", map);
%>
${map.aa }
${map["bb.cc"] }
<h3>域中集合中有对象的值</h3>
<%
	List<User2> list1 =  new ArrayList<User2>();
	list1.add(new User2("小明","123"));
	list1.add(new User2("小红","456"));
	request.setAttribute("list1", list1);
%>
${ list1[1].username}
${ list1[1].password}

执行运算:

*语法:${运算表达式}

下面有示例代码,可以参考:

<h3>EL的运算</h3>
<%
	request.setAttribute("a", 1);
	request.setAttribute("b", 2);
	request.setAttribute("c", 3);
	request.setAttribute("d", 4);
%>	
<h3>加法运算</h3>
${a + b }

<h3>关系运算</h3>
<h3>大于</h3>
${a > b }		${a gt b }

<h3>小于</h3>
${a <b }		${a lt b }

<h3>等于</h3>
${a == b }		${a eq b }

<h3>不等于</h3>
${a != b }		${a ne b }

<h3>大于等于</h3>
${a <= b }		${a ge b }

<h3>小于等于</h3>
${a	<= b }		${a le b }

<h3>逻辑运算</h3>
<h3>与</h3>
${a > b &&  c > d }   ${a > b and  c > d }

<h3>或</h3>
${a > b ||  c > d }   ${a > b or  c > d }

<h3>非</h3>
${ !(a > b)   }   ${ not (a > b)  }

empty运算符:检查对象是否为null或“空”

二元表达式:${user!=null?user.name : “”}

获取WEB开发对象:

EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。

语法:${隐式对象名称}   作用:获得对象的引用

下面有一张表格是是关于web常用开发对象的介绍:

隐含对象名称描       述
pageContext对应于JSP页面中的pageContext对象(注意:取的是pageContext对象。)
pageScope代表page域中用于保存属性的Map对象
requestScope代表request域中用于保存属性的Map对象
sessionScope代表session域中用于保存属性的Map对象
applicationScope代表application域中用于保存属性的Map对象
param表示一个保存了所有请求参数的Map对象
paramValues表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[]
header表示一个保存了所有http请求头字段的Map对象
headerValues同上,返回string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues["Accept-Encodings"]
cookie表示一个保存了所有cookie的Map对象
initParam表示一个保存了所有web应用初始化参数的map对象

下面有实例一点实例代码:

    <h3>EL的WEB对象</h3>
	${param.username }
	
	<h3>获取3的请求头</h3>
	${header.referer }
	
	<h3>获取全局初始化参数</h3>
	${initParam.username }
	
	<h3>pageContext对象</h3>
	${pageContext.request.remoteAddr }

调用Java方法:

这个本人目前还没做了解,详情可以参考:https://blog.youkuaiyun.com/SWkongjian/article/details/80455975

el表达式语言 对el表达式的简介,适合刚接触el表达式的开发者来认识el表达式 立即下载

相关推荐

嵌入式铁头山羊stm32-GPIO的四种输入模式-Day5

本文详细解析了GPIO的输入结构和工作原理,包括上拉/下拉模式、悬空设计、保护二极管机制等关键内容。重点阐述了不同输入模式下电流流向与电压变化,解释了上拉/下拉电阻、施密特触发器、保护二极管等元件的作用。特别对保护二极管的工作机制进行深入分析,说明其在过压/欠压时的钳位保护功能。同时解答了关于电压差、电流方向、负电压等常见疑问,并强调GPIO设计的灵活性(可配置上拉/下拉/悬空)是为了适应不同外设需求。全文通过电路分析和生活类比,帮助读者理解GPIO输入电路的工作原理和设计考量。

古泽汉书的博客 1965

浅谈EL

一、了解EL 1、EL是从 JavaScript 脚本语言得到启发的一种表达式语言,它借鉴了 JavaScript 多类型转换无关性的特点。在使用 EL 从 scope 中得到参数时可以自动转换类型,因此对于类型的限制更加宽松。 Web 服务器对于 request 请求参数通常会以 String 类型来发送,在得到时使用的 Java 语言脚本就应该是 request.getPara...

weixin_30410119的博客 184

MOS管关断时尖峰电压的5种实用抑制方案(附实测数据对比)

本文针对MOS管关断时产生的尖峰电压问题,提供了五种经过实验室实测验证的实用抑制方案。文章从尖峰电压的成因分析入手,详细阐述了优化PCB布局、设计RC缓冲电路、选用TVS二极管钳位、调节驱动电路以及使用磁珠吸收高频振荡等方法的原理、实施步骤与实测数据对比,为硬件工程师解决开关电源和电机驱动中的过压应力与EMI问题提供了系统性的实战指南。

1235

Java中EL标识符的规范是怎么样的?

在EL表达式中,经常需要使用一些符号标记一些名称,如变量名和自定义函数名等,这些符号被称为标识符。为了获取Servlet域对象中存储的数据,JSP2.0规范提供了EL表达式语言,同时为了降低JSP页面的复杂度,增强代码的重用性,Sun公司还制定了一套标准标签库JSTL。接下来,笔者先来简述下EL标识符的规范。·不能包含单引号(')、双引号(")、减号(-)和正斜线等特殊字符。·不能是EL中的保留字,如and、or、gt。注意:下面的标识符都是不合法的。下面的标识符都是合法的。

zy1992As的博客 510

react-window 大数据列表和表格数据渲染组件之虚拟滚动

ReactWindow是一个高性能的React虚拟滚动组件库,专门用于高效渲染大型列表和表格数据。它通过“窗口化”技术,仅渲染用户可见区域的内容,大幅提升性能并减少内存消耗。主要特点包括:支持固定/可变大小列表项、多种布局类型(垂直/水平/网格)、轻量级设计(不足5KB)以及平滑的滚动体验。相比传统渲染方式,它能轻松处理成千上万条数据,并提供自动滚动、自适应容器大小等高级功能。与同类库相比,ReactWindow具有更简洁的API和更优的性能表现,是处理大数据量渲染场景的理想选择。

前端开发-前端技术分享 1136

电力电子技术进阶:从基础到实战的完整学习路径

本文系统阐述了电力电子技术从基础到实战的完整学习路径。首先解析了电力电子作为“电能魔术师”的核心作用,随后深入剖析了数学工具、电路电磁场与半导体器件三大基础支柱。文章重点讲解了DC-DC、DC-AC、AC-DC等核心变换拓扑,并探讨了从经典PID到现代模型预测控制(MPC)的控制策略。最后,分享了硬件设计、软件调试、电磁兼容(EMC)等实战经验与前沿趋势,为学习者提供了清晰的进阶指南。

weixin_29204205的博客 445

关于EL的理解(一)

定义 特点 主要的用途 EL访问数据 EL存取范围 定义: ·全名为Expression Language,原是JSTL1.0中取存数据的自定义语言,后是jsp2.0的规范之一。 特点: ·语法简单 ·使用方便 主要的用途: ·获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象、获取数据。 ·执行运算   利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简...

m0_59344957的博客 608

数字蓝牙功放

数字蓝牙功放(TPA3110+BK8000L),基于D类数字功放芯片TPA3116蓝牙功放,HIFI级带滤波15Wx2蓝牙数字功放,支持有线和蓝牙两种音源输入

runweipa的博客 1418

EL表达式简介

EL表达式概述 •         EL表达式是为了便于获取数据而定义的一种语言,JSP 2.0之后才成为一种标准。下面的示例是一个简单的EL表达式:               ${stuno+ 1} EL表达式的基本语法 •         EL表达式的出现让Web的显示层发生了大的变革,EL表达式用于获取数据,在JSP 2.0之后成为一种标准,是

zhangkan111的专栏 1万+

利用VS2019编写安卓APP的步骤和所遇问题的解决办法

遇到了代码错误,这个可以将鼠标箭头置于错误代码处,这样VS2019给你解决办法,给的方法不能解决,并且读了程序都没有问题,那么你应该重启软件,这样还是不能解决,你尝试重新生成解决方案,还是不能解决有可能是运用的代码与当前版本不相符和、过时了,这个时候应当运用相应版本的代码。注:VS2019编写APP的空间不是很稳定,当你写的代码没有问题,但是出现了报错,可能是空间崩溃了,这个时候可以重启软件。点击“+”号,创建密钥存储,输入“别名”、“密码”、以及下面中的任意一项,直至红色框消失后。

youbestcando的博客 7812

计算机组成原理(第三版)唐朔飞-第四章存储器-课后习题

计算机组成原理(第三版)唐朔飞-第四章存储器-课后习题

weixin_45735391的博客 17万+

【传智播客】Javaweb程序设计任务教程 黑马程序员 第7,8,9,10,11,12,13,14,15章 课后答案

第一部分是题目,向下翻, 第二部分是答案 第七章 【测一测】 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1、简述Javabean规范都有哪些?(至少写出2点) 2、简述定义EL标识符的规范。 3、请按要求编写一个c_ choose.jsp页面,使用<c:choose>、<c:when>和<c:otherwise>这三个标签完成多个条件选择的程序。 要求: 1)访问c_choose.jsp页面时不传递参数时,浏览器中显示的信息为unknown user 2)访

weixin_43899069的博客 1万+

Linux V3H 平台开发系列讲解(摄像头)2.3.1 MAX96912 MAX96717 GMSL1 CSI 2lane配置

​ 单路摄像头,数据流类型YUV422, mipi接口,经过MAX96717 串行器,gmsl1链路 到解串器MAX96712,最后mipi csi 2lane(lane0 lane1)输出到 renesa v3h soc开发板; ​

xian18809311584的博客 579

Javaweb—— ——EL表达式和JSTL

EL表达式和JSTL 文章目录EL表达式和JSTL一、什么是JavaBean访问 JavaBean的属性public String getName(){…} public void setName (String name) { . . . }public boolean isMarried(){…} public void setMarried (boolean married){…}BeanUtils 工具二、初识EL为了证明EL表达式可以简化JSP页面,接下来通过一个案例来对比使用Java代码与EL表

weixin_54405545的博客 318

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

EL表达式详解

这是我的第一篇技术blog,我写技术blog一是为了能把知识写成电子版的笔记积累下来,整理的同时记忆也就更加深刻,二来也能分享给其它人,让需要的码农们从中收益。为什么要从EL开始写呢,我辞去上一份工作的一部分原因就是servlet和mobile page数据交互出了一些问题搞不定,所以我这次想把这部分知识好好总结一下,全当再次学习一遍了。

小灯光环 9593

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

第九天 第七章-EL表达式和JSTL

第七章 EL表达式和JSTL 7.1.1什么是JavaBean JavaBean是Java开发语言中一个可以重复使用的软件组件,它本质上就是一个 Java类。为了规范JavaBean的开发,Sun 公司发布了JavaBean的规范,它要求一一个标准的JavaBean组件需要遵循一定的编码规范,具体如下。 (1)它必须具有一 个公共的、无参的构造方法,这个方法可以是编译器自动产生的默认构造方法。(2)它提供公共的setter方法和getter方法,让外部程序设置和获取JavaBean的属性。为了让读者对Jav

m0_55689329的博客 713

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Javaweb—— EL表达式和JSTL

一、什么是Javabean JavaBean是一种Java类,而且是一种特殊的、可重用的类。必须具有无参数的构造器,所有的属性都是private的,通过提供setter和getter方法来实现对成员属性的访问。   JavaBean的种类按照功能可以划分为可视化和不可视化两类。可视化的JavaBean就是拥有GUI图形用户界面的,对最终用户是可见的。不可视化的JavaBean不要求继承,它更多的被使用在JSP中,通常情况下用来封装业务逻辑、数据分页逻辑、数据库操作和事物逻辑等,这样可以实现业务逻辑和前台程序

qq_54398027的博客 711

El表达式详解

这是我的第一篇技术blog,我写技术blog一是为了能把知识写成电子版的笔记积累下来,整理的同时记忆也就更加深刻,二来也能分享给其ta人,让需要他们的码农们从中收益。为什么要从EL开始写呢,我辞去上一份工作的一部分原因就是servlet和mobile page数据交互出了一些问题搞不定,所以我这次想把这部分知识好好总结一下,全当再次学习一遍了。 EL简介 EL表达式(E

乐在其中 983

el表达式

版权声明:本文为博主原创文章,转载请标明出处(http://blog.youkuaiyun.com/wlwlwlwl015)Thanks. 这是我的第一篇技术blog,我写技术blog一是为了能把知识写成电子版的笔记积累下来,整理的同时记忆也就更加深刻,二来也能分享给其ta人,让需要他们的码农们从中收益。为什么要从EL开始写呢,我辞去上一份工作的一部分原因就是servlet和mobi

nchu2020的专栏 388

JavaWeb_day08_EL JSTL

本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day08 EL JSTL EL表达式 语法:${} 获取域中对象的值 <% request.setAttribute("name", "小花"); session.setAttribute("name", "小傻"...

Wisdom1001的博客 226

EL详解

本文为博主原创文章,转载请标明出处(http://blog.youkuaiyun.com/wlwlwlwl015)Thanks. 这是我的第一篇技术blog,我写技术blog一是为了能把知识写成电子版的笔记积累下来,整理的同时记忆也就更加深刻,二来也能分享给其ta人,让需要他们的码农们从中收益。为什么要从EL开始写呢,我辞去上一份工作的一部分原因就是servlet和mobile page

zhangsunxiaobai的博客 395

struts2的ognl表达式学习心得

经过一段时间的闭关练习,终于对struts2有所了解.其实struts2并不难,一看就能明白其中奥妙.我对struts2的验证体系保留怀疑态度,因为它的验证消息使用标签打在页面上,实在太丑,在真实项目中不知道是否有人这么做.也许是我太菜了,还不知道如何将验证消息显示得更友好,希望各位不吝拍砖指导.   然而,我认为struts2最复杂难学的是它内置的ognl表达式.这个ognl在我开始学stru

DBA@Robin 1715

Spring EL表达式:动态配置与业务逻辑的终极解决方案

Spring表达式语言(SpEL)是Spring框架中一个强大的动态表达式解析引擎,广泛应用于属性注入、安全配置、缓存条件等场景。其核心原理基于运行时动态解析,支持类型感知和上下文集成,能够无缝访问Spring容器中的Bean和属性。SpEL不仅简化了复杂业务逻辑的实现,还通过表达式编译优化提升了性能。在电商促销规则、金融风控系统等实际应用中,SpEL展现了其动态更新业务逻辑的能力,大幅提升了系统的灵活性和响应速度。掌握SpEL的高级特性如集合投影、安全导航和自定义函数,可以帮助开发者更高效地处理动态配置和

weixin_34280237的博客 312

Spring SpEL表达式入门

目标: 1.表达式语言的基本操作形式以及处理流程 2.在Spring之中各种表达式字符串的编写 SpEL(Spring Expression Language,Spring的表达式语言),这种语言类似于JSP中学习到的EL,但是在整个Spring之中其表达式语言要更加的复杂,而且支持度更加的广泛,它还可以进行方法调用,对象实例化,集合操作等等,但是唯一的难点就是:代码太复杂,表达式太复...

抛弃幻想,准备斗争 627

AI 辅助开发实战:基于 JavaWeb + EL + JSTL 的毕业设计高效实现与避坑指南

用 EL 和 JSTL 彻底重构一个满是脚本片段的旧 JSP 页面,你会立刻感受到代码的清晰度提升了一个档次。视图层终于看起来像“页面”了。AI 工具在这个过程中,像一个随时待命的资深伙伴,在你忘记语法时提醒你,在你可能写出不安全代码时警示你,大大降低了上手门槛和出错概率。最后留个思考题:在没有 Spring MVC 等框架约束的纯 Servlet/JSP 项目中,我们如何保证视图层的可维护性?严格遵守 MVC:Servlet 只做控制器,JSP 只做视图,业务逻辑和数据库操作交给独立的 Java 类。

2600_94960039的博客 225
上一篇: Servelt中主要对象的使用
下一篇: JSP技术的学习总结
coder150806
博客等级 码龄8年 79粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值