付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EL&JSTL今日内容学习目标能够说出 el 表达式的作用能够使用 el 表达式获取 javabean 的属性能够使用 jstl库的 if能够使用 jstl库的 foreach能够说出开发模式的作用能够使用三层架构模式完成显示商品案例第1章 EL 表达式1.1 EL 表达式的概述在 JSP 开发中,为了获取 Servlet 域对象中的数据,经常需要书写很多 Java 代码,这样的做使 JSP 页面,难以,为此,在 JSP2.0 规范中提供了 EL 表达式。EL 是ExpresLanguage 的缩写,它是一种简单的数据语言。本节将针对 EL 表达式进行详细的讲解。EL(Express Lanu
2、age)表达式可以嵌入在 jsp 页面,减少 jsp的编写,EL出现的目的是要替代jsp 页面中的编写。EL 是 jsp 原生支持的。1.2 EL 的语法由于 EL 可以简化 JSP 页面的书写,因此,在 JSP 的学习中,掌握 EL 是相当重要的。要使用 EL 表达式,首先要学习它的语法。EL 表达式的语法非常简单,都是以“$”符号开始,以“”符号结束的,具体格式如下:$表达式1.3 EL 的使用:获得数据jsp 方式=$requestSEL 最主要的作用是获得四大域中的数据,格式$EL 表达式EL 获得 pageContext 域中的值:$pageScope.key; EL 获得 requ
3、est 域中的值:$requestScope.key;EL 获得 ses域中的值:$sesScope.key;EL 获得 application 域中的值:$applicationScope.key;EL 从四个域中获得某个值$key;= pageContext.findAttribute(name);同样是依次从 pageContext 域,request 域,ses取属性,在某个域中获取后将不在向后寻找域,application 域中 获%page import=com.itheima.User%charset=UTF-8HTML4.01Transitional/ENInsert titl
4、e here pageContext: $pageS request: $requestS ses: $sesS application: $applicationS Insert title here%/el 表达式取出复杂数据User user = new User(); Address addr = new Address(); user.setId(100);user.setUsername();Insert title here$user.addr.cityInsert title here%/el 表达式取出复杂数据addr.setCity( 市); addr.setArea(昌平
5、区); user.setAddr(addr);User user2 = new User(); Address addr2 = new Address(); user2.setId(200);user2.setUsername(); addr2.setCity(市); addr2.setArea(浦东); user2.setAddr(addr2);List list = new ArrayList(); list.add(user);list.add(user2);pageContext.setribute(list, list);%$pageScope.list1.addr.city1.4
6、EL 的使用:内置对象分类内置对象名称描述作用域pageScopepage 作用域requestScoperequest 作用域sesScopeses作用域applicationScopeapplication 作用域请求参数param获得一个参数paramValues获得一组参数请求头header获得一个请求头headerValues获得一组请求头JSP 上下文对象pageContext全局初始化参数initParamUser user = new User(); Address addr = new Address(); user.setId(100); user.setUsername(
7、);addr.setCity(市);addr.setArea(昌平区); user.setAddr(addr);User user2 = new User(); Address addr2 = new Address(); user2.setId(200);user2.setUsername(); addr2.setCity(市); addr2.setArea(浦东); user2.setAddr(addr2);Map map = new HashMap(); map.put(u1,user);map.put(u2,user2);pageContext.setribute(map, map);
8、%$pageScope.map.u2.addr.city$pageScope.mapu2.addr.city1.5 EL 的使用:运算符模拟数据算术运算符$ n1 + n2 + n3 $1+1 Insert title hereDemoServletahref=/demoServlet DemoServlet DemoServlet关系运算符逻辑运算符三元运算符empty 运算符$ n1 n2 ? 正确:错误 $ n1n2 & n3 n4 - $ n1n2 and n3 n4 $ n1n2 | n3 n4 - $ n1n2 or n3 n4 $ !(n1 n2) - $ not(n1n2) $
9、 n1 n2 - $ n1 lt n2 $ n1 n2 - $ n1 gt n2 $ n1 = n2 - $ n1 le n2 $ n1 = n2 - $ n1 ge n2 $ n1 = n2 - $ n1 eq n2 $1+1 $1+1 $a+1 $a + 1 Insert title here%request.setribute(num, 5); User user = new User();request.setribute(user, user); String strs = new String3; request.setribute(strs, strs);List list =
10、new ArrayList(); list.add();request.setribute(list, list);request.setribute(userInfo, sss);%$1+num $1num?:yyy $empty num $empty user $empty strs $empty list $userInfo $ user = null - $ empty user $ user != null - $ not empty user 1.6 案例:记住上次登录的用户名public class LoginServlet extends HttpServlet public
11、void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException String username = request.getParameter(username); String password = request.getParameter(password); String remName = request.getParameter(remName); response.setContentType(text/html;charset=utf-
12、8); if(yes.equals(remName)= new(username, username);.setMaxAge(60*10);.setPath(request.getContextPath(); response.add();Insert title here用户名:密码:记住用户名第2章 JSTL2.1JSTL从 JSP1.1 规范开始,JSP 就支持使用自定义,使用自定义大大降低了 JSP 页面的复杂度,同时增强了代码的重用性。为此,许多 Web 应用厂商都定制了自身应用的库,然而同能的由不同的Web 应用厂商制定可能是不同的,这就导致市面上出现了很多功能相同的,令网页制作者
13、无从选择,为了解决这个问题,Sun 公司制定了一套ages Standard Tag Library),简称 JSTL。标准库(JavaServJSTL 虽然被称为标准库,而实际上这个库是由 5 个不同功能的库共同组成的。在 JSTL1.1 规范中,为这 5 个1-7 所示。库分别指定了不同的 URI 以及建议使用的前缀,如表JSTL 包含的库库库的 URI前缀Coreh/jsp/jstl/corecI18Nh/jsp/jstl/fmtfmtSQLh/jsp/jstl/sqlsqlXMLh/jsp/jstl/xmlxFunctionsh/jsp/jstl/functionsfnif(tom.e
14、quals(username)&123.equals(password) response.getWriter().write(登录成功);elseresponse.getWriter().write(登录失败);public void dot(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doGet(request, response);2.2JSTL 的安装和测试1JSTL 包从 Apache 的JSTL 的 JAR 包。进入“jakar”JSTL
15、 的安装包aglibs-standard-1.1.2.zip,然后将好的 JSTL 安装包进行解压,此时,在 lib 目录下可以看到两个 JAR 文件,分别为 jstl.jar 和 standard.jar。其中,jstl.jar 文件包含 JSTL 规范中定义的接口和相关类,standard.jar 文件包含用于实现 JSTL 的.class 文件以及 JSTL 中 5 个库描述符文件(TLD)。2安装 JSTL将 jstl.jar 和 standard.jar 这两个文件到 day18 项目的 lib 目录下,如图 1-16 所示。图1-1导入 jstl.jar 和 standard.ja
16、r 文件从图 1-8 可以看出,jstl.jar 和 standard.jar 这两个文件已经被导入到 day18 项目的 lib 文件夹中,这个过程就相当于在 day18 项目中安装 JSTL,安装完 JSTL 后,就可以在 JSP 文件中使用 JSTL库。3测试 JSTLJSTL 安装完成后,就需要测试 JSTL 安装是否成功。由于在测试的时候使用的是,因此,需要使用 taglib 指令导入 Core库,具体代码如下:在上述代码中,taglib 指令的 uri 属性用于指定引入库描述符文件的 URI,prefix 属性用于指定引入库描述符文件的前缀,在 JSP 文件中使用这个库中的某个时,
17、都需要使用这个前缀。库:if2.3Core在程序开发中,经常需要使用 if 语句进行条件判断,如果要在 JSP 页面中进行条件判断,就需要使用 Core库提供的,该专门用于完成 JSP 页面中的条件判断,它有两种语法格式,具体如下:语法 1:没有体的情况,将结果存放到指定的作用域(不常用)语法 2:有体的情况,在体中指定要输出的内容body content在上述语法格式中,可以看到解,具体如下:有三个属性,接下来将针对这三个属性进行讲test 属性用于设置逻辑表达式;var 属性用于指定逻辑表达式中变量的名字;scope 属性用于指定 var 变量的作用范围,默认值为 page。如果属性 te
18、st 的计算结果为 true,那么体将被执行,否则体不会被执行。通过前面的讲解,对来演示如何在 JSP 页面中使用有了一个简单的认识,接下来通过一个具体的案例。Insert title here1 xc:if test=$1 yyyy5 num 大于 5库:forEach2.4Core在 JSP 页面中,经常需要对集合对象进行循环迭代操作,为此,Core库提供了一个,该专门用于迭代集合对象中的元素,如 Set、List、Map、数组等,并且能重复执行体中的内容,它有两种语法格式,具体如下:语法 1:迭代包含多个对象的集合语法 2:迭代指定范围内的集合在上述语法格式中,可以看到解,具体如下:有多
19、个属性。接下来针对这些属性进行讲var 属性用于指将当前迭代到的元素保存到 page 域中的名称;items 属性用于指定将要迭代的集合对象;varSus 用于指定当前迭代状态信息的对象保存到 page 域中的名称;begin 属性用于指定从集合中第几个元素开始进行迭代,begin 的索引值从 0 开始,如果没有指定 items 属性,就从 begin 指定的值开始迭代,直到迭代结束为止; step 属性用于指定迭代的步长,即迭代因子的增量。在程序开发中经常会被用到,因此熟练掌握是很有必要的,接下来,通过几个具体的案例来学习的使用。分别使用迭代数组和 Map 集合,首先需要在数组和 Map 集
20、合中添加几个元素,然后将数组赋值给的 items 属性,而 Map 集合对象同样赋值给的 items 属性,之后使用 getKey()和 getValue()方法就可以获取到 Map 集合中的键和值Insert title here!-body contentbody contentInsert title here%/模拟域中的集合数据foreach 循环 begini=0 end i$i%List list = new ArrayList(); list.add();list.add(itheima); list.add(java);request.setribute(list, list
21、);%$str $ vs.countList list = new ArrayList();User user = new User(); Address addr = new Address(); user.setId(100); user.setUsername(); addr.setCity();addr.setArea(海淀);user.setAddr(addr);User user2 = new User(); Address addr2 = new Address(); user2.setId(100); user2.setUsername(); addr2.setCity();a
22、ddr2.setArea(浦东);user2.setAddr(addr2);list.add(user); list.add(user2);pageContext.setribute(list, list);%$user.username =$user.addr.city Insert title here%/模拟域中的集合数据Map map = new HashMap();User user = new User(); Address addr = new Address(); user.setId(100);user.setUsername();addr.setCity();addr.se
23、tArea(海淀);user.setAddr(addr);User user2 = new User(); Address addr2 = new Address(); user2.setId(100);user2.setUsername();addr2.setCity();addr2.setArea(浦东);user2.setAddr(addr2);map.put(u1, user);map.put(u2, user2);request.setribute(map, map);%$entry.key =$entry.value.username =$entry.value.addr.city
24、2.5MVC 设计模式MVC 设计模式: M-View-Controller 简写。MVC 是法。它把工程中的一种架构模式,它是一种分离业务逻辑与显示界面的设计方系统分为三个基本部分:模型(M)、视图(View)和控制器(Controller)。控制器Controller:对请求进行处理,负责请求转发;视图 View:界面设计进行图形界面设计;模型 M:编写程序应用的功能(实现算法等等)、数据库管理;MVC 可对程序的后期和扩展提供了方便,并且使程序某些部分的重用提供了方便。而且 MVC 也使程序简化,更加直观。注意,MVC 不是 Java 的特有的,几乎现在所有 B/S 结构的都采用了MVC
25、 设计模式。2.6JSP 开发模式当 SUN 公司推出 JSP 后,同时也提供相应的开发模式,JavaWeb 经历了 JSP M1 第一代,JSPM1 第二代,JSP M2 三个时期。2.6.1 JSP M1 第一代JSP M1 是 JavaWeb 早期的模型,它适合小型 Web 项目,开发成本低!M1 第一代时期,服务器端只有 JSP 页面,所有的操作都在 JSP 页面中,连数据库的 API 也在 JSP页面中完成。也就是说,所有的东西都耦合在一起,对后期的(高内聚低耦合:)和扩展极为不利。2.6.2 JSP M1 第二代JSP M1 第二代有所改进,把业务逻辑的内容放到了 JavaBean 中,而 JSP 页面负责显示以及请求调度的工作。虽然第二代比第一代好了些,但还让 JSP 做了过多的工作,JSP 中把
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026北京西城区教委人才引进(含博士后出站人员)招聘16人参考考试题库及答案解析
- 喜鹊策划婚礼活动方案(3篇)
- 2026上半年玉溪师范学院招聘6人备考考试试题及答案解析
- 门诊处方管理制度课件下载(3篇)
- 伪装门施工方案(3篇)
- 2026浙江浙建好房子装饰科技有限公司招聘备考考试试题及答案解析
- 2026广东茂名市电白区旦场中学2026年招聘部分学科临聘教师备考考试题库及答案解析
- 2026重庆市南岸区弹子石小学校信科教师招聘1人参考考试题库及答案解析
- 2026吉林大学第二医院招聘劳务派遣制护理员岗位人员10人备考考试试题及答案解析
- 2026年临沂市市直部分事业单位公开招聘综合类岗位工作人员(21名)考试备考试题及答案解析
- 年产30万吨木薯燃料乙醇项目一期工程(年产15万吨)可行性研究报告
- 2024年水合肼行业发展现状分析:水合肼市场需求量约为11.47万吨
- 肺炎性假瘤误诊为肺癌的HRCT表现及浅析
- (正式版)JBT 14933-2024 机械式停车设备 检验与试验规范
- 幼儿园劳动教育计划及实施
- 新人教版五年级小学数学全册奥数(含答案)
- 志愿服务证明(多模板)
- 术后肠麻痹学习课件
- 顶管施工方案非开挖电缆管道专项施工方案
- XX小学传统体育游戏集锦
- GB/T 33091-2016聚氨酯筛板
评论
0/150
提交评论