java web 学习笔记 - 表达式语言
1.表达式语言简介
主要为了简化mvc中 jsp的代码量,方便进行属性的输出。还可以避免进行属性为空等的判断,表达式默认将null设置为""。
表达式语言的一个最大的好处就是,只需要把属性或表达式运算放在${}中,系统将自动进行类型的转换,我们不用再去关心属性变量类型转换的问题了。
2.表达式语言的内置对象
a. 关于属性的获取${属性名称}, 对于page->request->session->application这四个属性范围来讲,如果同时设置同名的属性,那么将只显示 属性范围最小的那个属性值。
一般情况下,各属性范围设置的属性名称应该不一样,这样直接用${属性名称}调用即可。
b. 关于参数的获取${param.参数名称} 或者如果是多选框参数时需要${param.属性名称[0]}
c. 通过pageContext内置对象来获取其他内置对象
${pageContext.request.remoteAddr}、${pageContext.session.id}、${pageContext.session.new}
3.表达式语言-集合的操作
a. 对于List类型的集合对象,可以直接${对象名称[下标数字]} 调用
b. 对于Map类型的集合对象,可以用${对象名称[key名称]}调用
例子
============================================
a.
<%
List addr = new ArrayList();
addr.add("德国");
addr.add("英国");
addr.add("法国");
request.setAttribute("info",addr);
%>
<h1>${info[0]}</h1>
<h1>${info[1]}</h1>
<h1>${info[2]}</h1>
b.
<%
Map map = new HashMap();
map.put("notebook","暗夜之光17寸");
map.put("iphone","iphoneX");
map.put("kindle","kindle");
request.setAttribute("info",map);
%>
<h1>${info["notebook"]}</h1>
<h1>${info["iphone"]}</h1>
<h1>${info["kindle"]}</h1>
4.在MVC中应用表达式语言
a. 定义vo , servlet,在servlet中生成vo 对象设置vo 对象的属性
最重要的一点要通过doGet的request参数将vo对象设置成一个属性info。
这样在之后的jsp中,就可以通过${info.成员变量}的方式来访问了
b. 对于servlet生成一个vo的对象集合的情况,还是在doGet中用request参数将vo对象集合 all设置为属性info
jsp中需要先通过request.getAttribute("info")获取到List集合对象 all。
然后通过iterator来对List集合对象进行迭代。 Iterator itr = all.iterator();
在while(itr.hasNext()){}循环中,需要先通过pageContext.setAttribure("dept",itr.next());
然后在通过${dept.成员变量}访问。
=====================================================================================================a
Servlet
public class ServletPeople extends HttpServlet{
private People pl = null;
List<People> all = null;
protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
all = new ArrayList<People>();
pl = new People();
pl.setName("李永盛");
pl.setSex("男");
pl.setSalary(60000);
all.add(pl);
pl = new People();
pl.setName("李宇扬");
pl.setSex("男");
pl.setSalary(80000);
all.add(pl);
req.setAttribute("info",all);
req.getRequestDispatcher("/people/people.jsp").forward(req,resp);
}
jsp
。。。
<%
List all = (List) request.getAttribute("info");
Iterator itr = all.iterator();
while(itr.hasNext()){
pageContext.setAttribute("dept",itr.next()) ;
%>
<h1>${dept.name}</h1>
<h1>${dept.sex}</h1>
<h1>${dept.salary}</h1>
<%}%>
。。。
java web 学习笔记 - 表达式语言的更多相关文章
- Java Web学习笔记之---EL和JSTL
Java Web学习笔记之---EL和JSTL (一)EL (1)EL作用 Expression Language(表达式语言),目的是代替JSP页面中复杂的代码 (2)EL表达式 ${变量名} ( ...
- Java Web学习笔记之---JSP
Java Web学习笔记之---JSP (一)JSP常用语法 (1)HTML注释 <!--所要注释的内容 --> 在客户端显示一个注释. (2)隐藏注释 <%--所要注释的内容--% ...
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Java Web 学习笔记 1
Java Web 学习笔记 1 一.Web开发基础 1-1 Java Web 应用开发概述 1.1.1 C/S C/S(Client/Server)服务器通常采用高性能的PC机或工作站,并采用大型数据 ...
- JAVA Web学习笔记
JAVA Web学习笔记 1.JSP (java服务器页面) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . JSP全名为Java Server Pages,中文名叫java服务器 ...
- [原创]java WEB学习笔记95:Hibernate 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- java web 学习笔记 编码问题总结
java web 学习笔记 编码问题总结 1.非form表单中提交的中文参数---------------------------传递给Servlet服务器时,默认以iso-8859-1解码 ...
- [原创]java WEB学习笔记11:HttpServlet(HttpServletRequest HttpServletRsponse) 以及关于 Servlet 小结
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
随机推荐
- cgi fastcgi wsgi nginx python Dispatching TurboGears Python via FCGI
https://www.nginx.com/resources/wiki/start/topics/examples/simplepythonfcgi/ 117 2018-06-28 19:56:42 ...
- 显示 目录 大小 du
[root@hadoop1 /]# du -BG -d 11G ./boot0G ./dev63G ./homedu: 无法访问"./proc/6689/task/6689/fd/4&qu ...
- YTU 2586: 填空题B-字画鉴别
2586: 填空题B-字画鉴别 时间限制: 1 Sec 内存限制: 128 MB 提交: 509 解决: 131 题目描述 注:本题只需要提交填写部分的代码,请按照C语言方式提交. 古玩店老板小勇 ...
- YTU 2555: 老大的烦恼
2555: 老大的烦恼 时间限制: 1 Sec 内存限制: 128 MB 提交: 176 解决: 47 题目描述 万恶的小黑,布置了一道题给老大做:给你一个n位的数,现在要求 你随意删除m位后,任 ...
- 谈一谈以太坊虚拟机EVM的缺陷与不足
首先,EVM的设计初衷是什么?它为什么被设计成目前我们看的样子呢?根据以太坊官方提供的设计原理说明,EVM的设计目标主要针对以下方面: 简单性(Simplicity) 确定性(Determinism) ...
- linux下离线安装svn服务器并配置
一.下载相应的包 subversion-1.8.18.tar.gz 下载地址:http://subversion.apache.orgsqlite-autoconf-3190300.tar.gz ...
- 并不对劲的bzoj4651:loj2084:uoj220:p1173:[NOI2016]网格
题目大意 有一个\(n*m\)(\(n,m\leq10^9\))的网格,每个格子是空地或障碍(\(障碍数\leq10^5\)) 定义两块空地连通,当且仅当它们是"相邻的两块空地"或 ...
- bzoj 2006 超级钢琴 —— ST表
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2006 本来应该是可以用主席树,找区间最小值,取出来后再找那段区间的次小值...... 但也可 ...
- java如何遍历map的所有的元素(各种方法)
JDK1.4中 Map map = new HashMap(); Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map ...
- c语言程序设计案例教程(第2版)笔记(一)—零散、输入输出、最小公倍数、选择排序、冒泡排序
零散知识点: 非格式化输入输出:getchar().putchar() 格式化输入输出 :scanf().printf() 字符串输入输出 :gets() 或 scanf().puts() 或 ...