版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.1任务1:使用EL表达式实现一项问卷调查任务描述在漫画网站上做如下统计:让用户输入昵称、所在城市,并以多选的方式让用户选择所喜欢的漫画类型,然后用EL表达式显示在页面上(无需访问数据库)。任务描述技能目标理解EL表达式的概念与应用能够使用EL表达式完成数据显示技能目标6.1.1EL表达式概述一、EL简介EL的全称是ExpressionLanguage,它是一种借鉴了JavaScript和XPath的表达式语言。EL表达式定义了一系列的隐含对象和操作符,使开发人员能够很方便地访问页面的上下文,以及不同作用域内的对象,而无须在JSP页面嵌入Java代码,从而使开发人员即使不熟悉Java也能轻松地编写JSP程序。二、EL的特点和使用范围EL表达式提供了在Java代码之外,访问和处理应用程序数据的功能,通常用于在某个作用域(page、request、session、application)内通过变量名取值、获取对象的属性值、获取集合元素或者执行表达式。
EL表达式有以下特点:1、自动转换类型。在使用EL得到某个数据时可以自动转换数据类型。2、EL不显示null。当EL表达式的值为null时,会在页面上显示空白。3、使用简单。与JSP页面中嵌入的Java代码相比,EL表达式使用起来非常简单。6.1.2EL表达式的语法语法格式:${EL表达式}EL表达式语法有两个要素:$和{},两者缺一不可,例如${1+2}。一、点操作符EL表达式通常由两部分组成:对象和属性。就像在Java代码中一样,在EL表达式中也可以用点操作符“.”来访问对象的某个属性。例如,通过${cartoon.type}可以访问cartoon对象的type属性.6.1.2EL表达式的语法二、[]操作符与点操作符类似,"[]"操作符也可以访问对象的某个属性,如${cartoon["type"]}可以访问漫画的类别属性。除此之外,"[]"操作符还提供了更加强大的功能。1、当属性名中包含了特殊字符如"."或"-"等的情况下,就不能使用点操作符来访问,这时只能使用"[]"操作符。2、访问数组,如果有一个对象名为array的数组,可以根据索引值来访问其中的元素,如${array[0]}、${array[1]}等。3、"[]"操作符中可以使用变量实现动态访问,如${cartoon[propertyName]},其中的propertyName是另一个变量,改变其值可以动态访问cartoon对象的不同属性。6.1.2EL表达式的语法【示例】6.1.2EL表达式的语法【运算符】6.1.3EL表达式隐式对象在EL表达式语言中提供了一系列可以直接使用的隐式对象。EL隐式对象按照使用途径的不同分为作用域访问对象、参数访问对象和JSP隐式对象。6.1.3EL表达式隐式对象一、作用域访问对象当使用EL表达式访问某个变量时,应该指定查找的范围,如${requestScope.cartoon}(等同与request.getAttribute("cartoon")),即在请求作用域范围内查找cartoon变量。如果不指定查找范围,即${cartoon},则会按照page
request
session
application的顺序依次查找cartoon变量。6.1.3EL表达式隐式对象二、参数访问对象参数访问对象是与页面输入参数有关的隐式对象,通过它们可以得到用户的请求参数。param和paramValues的不同之处在于,param对象用于得到请求中单一名称的参数,而paramValues对象用于得到请求中的多个值。【例如】
在用户注册时,通常会填写一个名为userName的参数,这就可以用${param.userName}来访问此参数,等同于调用request.getParameter("userName");
用户注册时,也可能会选择多个业余爱好(habits),这样通过${paramValues.habits}可以得到用户所有选择的值,等同于调用request.getParameterValues("habits")。6.1.3EL表达式隐式对象三、JSP隐式对象为了能够方便地访问JSP隐式对象,EL表达式语言引入了pageContext。它是JSP和EL的一个公共对象,通过pageContext可以访问其他八个JSP内置对象(如request、response等),这也是EL表达式语言把它作为内置对象的一个主要原因。任务实现一、创建问卷调查表单页
新建问卷页面(question.jsp),其表单的action属性设置为用于处理提交请求的QuestionServlet。任务实现二、创建问题实体类
在com.ct.entity包中,创建问卷实体类Question,其中,用户所选的漫画类型列表,为List集合。任务实现三、完成用于处理提交请求的Servlet代码获取表单数据姓名name、城市city及漫画类型数组types,并把types用Arrays的asList方法转换成集合对象;然后把所有的表单数据封装到一个问卷实体对象中,存入request作用域;最后,将请求转发给问卷结果页面(answer.jsp)。任务实现四、完成问卷结果的显示新建问卷结果页面(answer.jsp),并通过EL表达式读取request作用域中问卷对象的各个属性。拓展与提高在JSP1.2中默认禁用EL表达式,因此,在JSP1.2的JSP页面中出现EL表达式,将会被忽略。可以通过两种方式禁用EL表达式:使用page指令的isELIgnored属性,其语法格式为:<%@pageisELIgnored="true"%>isELIgnored属性值为boolean类型,true表示将会被忽略;false表示EL表达式将被计算,JSP2.0中isELIgnored默认值为false。在WEB-INF/web.xml中使用jsp-property-group标签批量禁用EL表达式<jsp-config><jsp-property-group>
<url-pattern>*.jsp</url-pattern><el-ignored>true</el-ignored></jsp-property-group></jsp-config>jsp-property-group标签是JSP2.0中的新增功能,
因此,在低版本的web.xml中是不能使用该标签的。总结EL表达式概述
EL表达式的语法
EL表达式隐式对象
谢谢大家观看
6.2任务2:使用JSTL和EL显示漫画列表任务描述使用JSTL和EL显示漫画列表(暂不考虑分页)。任务描述技能目标理解JSTL的概念与应用能够使用JSTL进行逻辑控制技能目标6.2.1JSTL概述JSTL的全称是JSPStandardTagLibrary,即JSP标准标签库。它包含了在开发JSP页面时经常用到的一组标准标签,这些标签提供了一种不用嵌入Java代码就可以开发复杂的JSP页面的途径。在项目中如何使用JSTL标签?需要如下两个步骤:1、在工程中引用JSTL的两个jar文件和标签库描述符文件(扩展名为.tld)。和使用JDBC连接数据库类似,使用JSTL标签库也必须在工程中导入相关的包(jstl.jar和standard.jar)。另外,标签库描述符文件也是必需的。(MyEclipse中已经集成了JSTL)6.2.1JSTL概述2、在需要使用JSTL的JSP页面中使用taglib指令导入标签库描述符文件。要使用JSTL核心标签库,必须在JSP页面上方增加如下taglib指令:<%@tagliburi="/jsp/jstl/core"prefix="c"%>其中,taglib指令通过uri属性引用某个标签库的配置文件,JSP页面中通过prefix属性指定的前缀即可使用该标签库中的某个标签功能,语法为<c:标签名>。6.2.2JSTL核心标签库简介JSTL由四个定制标签库(core、fmt、xml、sql)组成。其中,最常用的core即是JSTL核心标签库,它提供了定制操作,通过限制作用域的变量管理数据,以及执行页面内容的条件和迭代操作。6.2.3通用标签库通用标签用于在JSP页面内设置、显示和删除变量,它包含三个常用标签:<c:set>、<c:out>和<c:remove>。一、<c:set>标签用于设置作用域变量的值或者作用域变量的属性值,其语法格式分为如下两种:1、将value值存储到范围为scope的变量variable中。语法:<c:setvar="variable"value="value"scope="scope"/>其中,var属性的值是设置的变量名;value属性的值是赋予变量的值;scope属性对应的是变量的作用域,可选值有page、request、session和application。例如,在请求范围内将变量currentIndex的值设置为6,用<c:set>标签可以写成<c:setvar="currentIndex"value="6"scope="request"/>6.2.3通用标签库2、将value值设置到对象的属性中。语法:<c:setvalue="value"target="target"property="property"/>其中,target属性对应操作的JavaBean对象,可以使用EL表达式来表示;property属性对应JavaBean对象的属性名;value属性是赋予JavaBean对象属性的值。6.2.3通用标签库二、<c:out>标签<c:out>标签用于将计算的表达式结果输出显示,类似于JSP中的<%=%>。但是功能更加强大,代码也更加简洁,方便页面维护。其语法格式分为指定默认值和不指定默认值两种形式。1、不指定默认值的语法:<c:outvalue="value"/>其中,value属性表示需要输出的表达式的运算结果,可以通过EL表达式来获取。2、指定默认值的语法:<c:outvalue="value"default="default"/>其中,default属性是value属性的值为空时输出的默认值。另外,<c:out>标签还有一个escapeXml属性,表示是否转换特殊字符,用于指定在使用<c:out>标签输出诸如<、>、'、"、&之类在HTML和XML中具有特殊意义的字符时是否应该进行转义。escapeXml属性默认为true,表明会自动进行转义处理。6.2.3通用标签库【例1】${"<ahref=''>百度</a>"}<c:outvalue="<ahref=''>百度</a>"></c:out><c:outescapeXml="false"value="<ahref=''>百度</a>"></c:out>6.2.3通用标签库【例2】用<jsp:useBean>动作创建对象type,用<c:set>标签为其typeName属性赋值,用<c:out>标签输出结果。6.2.3通用标签库三、<c:remove>标签与<c:set>标签的作用相反,<c:remove>标签用于移除指定作用域内的指定变量。语法:<c:removevar="variable"scope="scope"/>其中,var属性是指待移除的变量名;scope属性对应待移除变量的所在访问,可选值有page、request、session和application,默认为page。没有值:<c:outvalue="${msg}"default="nomsg"/><br><c:setvar="msg"value="HelloJSTL"scope="page"/>设置值:<c:outvalue="${msg}"default="nomsg"/><br><c:removevar="msg"/>移除后:<c:outvalue="${msg}"default="nomsg"/><br>6.2.4条件标签库JSTL的条件标签包括<c:if>、<c:choose>、<c:when>和<c:otherwise>标签。一、<c:if>标签<c:if>标签用于实现Java语言中if语句的功能。语法:<c:iftest="condition"var="varName"scope="scope"/>主体内容</c:if>其中,test属性是判断条件,当condition(可以用EL表达式表示)的结果为true时,会执行主体内容,如果为false则不会执行;var属性用于定义变量,该变量存放判断的结果,该属性可以省略;scope属性是指var定义变量的存储范围,可选值有可选值有page、request、session和application,该属性可以省略。<c:setvar="a"value="hello"/><c:iftest="${notemptya}"><c:outvalue="${a}"/></c:if>6.2.4条件标签库二、<c:choose>标签<c:choose>、<c:when>和<c:otherwise>一起实现互斥条件的执行,类似于Java语言的if-elseif-else语句。语法:<c:choosevar="varName"scope="scope"><c:whentest="condition">主体内容</c:when><c:otherwise>其他内容</c:otherwise></c:choose>其中,<c:choose>是作为<c:when>和<c:otherwise>的父标签使用的,除了空白字符外,<c:choose>的标签体只能包含这两个标签;<c:when>标签必须有一个直接的父标签<c:choose>,而且必须在同一个父标签下的<c:otherwise>标签之前出现;在同一个父标签<c:choose>中,可以有多个<c:when>标签;<c:otherwise>标签必须有一个直接的父标签<c:choose>,而且必须是<c:choose>标签中最后一个嵌套的标签。在运行时,判断<c:when>的测试条件是否为true,第一个测试条件为true的<c:when>标签体被JSP容器执行。如果没有满足条件的<c:when>标签,那么<c:otherwise>的标签体将被执行。6.2.4条件标签库6.2.5迭代标签库<c:forEach>标签有两种语法格式,一种用于遍历集合对象的成员,另一种用于使语句循环执行指定的次数。1、遍历集合对象的成员语法格式如下:<c:forEachvar="varName"items="collectionName"varStatus="varStatusName"begin="beginIndex"end="endIndex"step="step">主体内容</c:forEach>其中,var属性是对当前成员的引用;items指被迭代的集合对象;varStatus属性用于存放var引用的成员的相关信息,如索引等;begin属性表示开始位置,默认为0,该属性可以省略;end属性表示结束位置,该属性可以省略;step表示循环的步长,默认为1,该属性可以省略。6.2.5迭代标签库6.2.5迭代标签库2、指定语句的执行次数语法格式如下:<c:forEachvar="varName"varStatus="varStatusName"begin="beginIndex"end="endIndex"step="step">主体内容</c:forEach>任务实现一、修改漫画实体类由于在漫画列表中包含漫画类别名称,所以需要对漫画实体类Cartoon进行修改,为其增加类别对象成员。关键代码如下:publicclassCartoon{
//其他代码省略privateCartoonTypetype;//把类别对象作为属性
publicCartoonTypegetType(){returntype;}publicvoidsetType(CartoonTypetype){this.type=type;}}任务实现二、完成数据访问层代码1、新增数据访问接口方法
在数据访问接口CartoonDao中,新增List<Cartoon>getCartoonList()方法,用于获取漫画列表。任务实现2、实现数据访问方法在数据访问类(CartoonDaoImpl)中,结合通用BaseDao,实现数据访问接口中新增的方法。任务实现三、完成业务逻辑层代码在业务逻辑接口(CartoonBiz)中,新增List<Cartoon>getCartoonList()方法,用于获取漫画列表;并在业务逻辑类(CartoonBizImpl)中,通过调用数据访问层的方法,实现这个方法。任务实现四、完成漫画列表页面在WebRoot\adminpages下创建漫画列表页面cartoonList.jsp,并在页面中调用业务逻辑方法,获取漫画列表。然后运用<c:forEach>标签和EL表达式显示漫画列表。关键代码如下:<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><%@pageimport=".*,.impl.*,com.ct.entity.*"%><%@tagliburi="/jsp/jstl/core"prefix="c"%><!--其他代码省略--><%CartoonBizctb=newCartoonBizImpl();
List<Cartoon>ctList=ctb.getCartoonList();//一次性获取所有数据,暂不考虑分页
request.setAttribute("cartoonList",ctList);%>
任务实现四、完成漫画列表页面(续)<tableborder=0width="50%"><c:forEachvar="cartoon"items="${requestScope.cartoonList}"><tr><td>${cartoon.ctitle}</td>
<td>【${cartoon.type.typeName}】</td>
<td>编辑:${cartoon.issuer}</td>
<td><ahref='#'>查看详情</a></td></tr></c:forEach></table>拓展与提高JSTL核心标签库包含三个与URL操作有关的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年预防校园欺凌专题教育课件
- 广东省茂名市2026年重点学校高一入学英语分班考试试题及答案
- 2026农信定向面试题及答案
- 2026平安保险查勘员面试题及答案
- 2026青春志愿者面试题及答案
- 2026全职备考面试题及答案
- 2026融资经理面试题目及答案
- 2026设计院模拟面试题及答案
- 2026生物讲课面试题及答案
- 妊娠合并癫痫的护理查房
- GB/T 46875-2025进入二氧化碳长输管道介质质量要求
- 2025年广西职业师范学院招聘真题
- 中国双相障碍防治指南(2025版)
- 安全生产明白人培训
- “大思政课”与高中历史学科融合育人的策略研究
- 2025年建行风险管理岗位题库及答案
- 2025年株洲市事业单位财务岗考试(财务会计)细选试题及试题答案解析
- 2025年红木家私行业深度研究报告
- 《管理学》(第二版)课件全套 高教版马工程 第0-16章 绪论 - 组织变革与创新
- 移动式脚手架安装规范标准
- T-CWPIA 19-2025 传统天然香产品
评论
0/150
提交评论