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 学习笔记 - 表达式语言的更多相关文章

  1. Java Web学习笔记之---EL和JSTL

    Java Web学习笔记之---EL和JSTL (一)EL (1)EL作用 Expression  Language(表达式语言),目的是代替JSP页面中复杂的代码 (2)EL表达式 ${变量名} ( ...

  2. Java Web学习笔记之---JSP

    Java Web学习笔记之---JSP (一)JSP常用语法 (1)HTML注释 <!--所要注释的内容 --> 在客户端显示一个注释. (2)隐藏注释 <%--所要注释的内容--% ...

  3. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. Java Web 学习笔记 1

    Java Web 学习笔记 1 一.Web开发基础 1-1 Java Web 应用开发概述 1.1.1 C/S C/S(Client/Server)服务器通常采用高性能的PC机或工作站,并采用大型数据 ...

  5. JAVA Web学习笔记

    JAVA Web学习笔记 1.JSP (java服务器页面) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . JSP全名为Java Server Pages,中文名叫java服务器 ...

  6. [原创]java WEB学习笔记95:Hibernate 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. java web 学习笔记 编码问题总结

       java web 学习笔记 编码问题总结 1.非form表单中提交的中文参数---------------------------传递给Servlet服务器时,默认以iso-8859-1解码 ...

  9. [原创]java WEB学习笔记11:HttpServlet(HttpServletRequest HttpServletRsponse) 以及关于 Servlet 小结

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

随机推荐

  1. solr 命令

    本文为转载内容:源地址:http://blog.csdn.net/matthewei6/article/details/50620600 查看帮助 bin/solr -help            ...

  2. 深入分析linux调度机制

    一.说明 本文以linux-2.4.10 为例主要分析Linux 进程调度模块中的schedule 函数及其相关的函数.另外相关的前提知识也会说明.默认系统平台是自己的i386 架构的pc. 二.前提 ...

  3. beyond compare 比较文本 standard alignment VS unaligned

    在Rules里面 Standard Alignment 这种方式会比较找出相同的部分,可能会跨行找相同的 Unaligned 这种比较直接每一行之间相互比较,不跨行找相同的

  4. c++性能测试工具:google benchmark入门(二)

    上一篇中我们初步体验了google benchmark的使用,在本文中我们将更进一步深入了解google benchmark的常用方法. 本文索引 向测试用例传递参数 简化多个类似测试用例的生成 使用 ...

  5. UI:单例的写法

    单例设计模式 参考 UIApplication sharedApplocation 详细解释 :参考 通讯录的helper 类的读取本地plist 文件的时候,使用的单例单例的要点有三个:一个类只能有 ...

  6. 【黑金教程笔记之008】【建模篇】【Lab 07 数码管电路驱动】—笔记

    实验七的目的是设计实现最大为99数字在2个数码管上.采用同步动态扫描.即行信号和列信号同步扫描.这里数码管是共阳极的.选择端口也是共阳极的. 模块: /************************ ...

  7. Log4j日志等级

    Log4j根据日志信息的重要程度,分OFF.FATAL.ERROR.WARN.INFO.DEBUG.ALL 当然再细分的话 还有 FATAL(严重错误), 但是Log4j官方建议实际实用的话,Log4 ...

  8. Jedis线上的一个小坑:Redis有并发访问的数据错乱的问题

    问题现象: 业务数据有错乱,A的一些数据有好几个都是B的数据 这些业务数据在保存在Redis缓存中,怀疑是并发情况下Jedis错乱的问题 原因分析: JedisUtil里面在使用完Jedis 后释放资 ...

  9. ssh 公钥登录远程主机

    ssh-keygen 然后一路回车就可以了 ssh-copy-id user@host user代表用户名,host代表主机地址 然后根据提示输入远程主机的密码,成功,再登录就不用输入密码了

  10. 再谈spark部署搭建和企业级项目接轨的入门经验(博主推荐)

    进入我这篇博客的博友们,相信你们具备有一定的spark学习基础和实践了. 先给大家来梳理下.spark的运行模式和常用的standalone.yarn部署.这里不多赘述,自行点击去扩展. 1.Spar ...