移动商务应用软件开发第3章.ppt_第1页
移动商务应用软件开发第3章.ppt_第2页
移动商务应用软件开发第3章.ppt_第3页
移动商务应用软件开发第3章.ppt_第4页
移动商务应用软件开发第3章.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

移动商务应用软件开发 JavaEE,课 程 目 标,掌握JavaEE概念及开发环境的设置 熟练使用Jsp和Servlet完成简单的网站建设 掌握Struts和Struts2的原理及应用 熟练使用Hibernate完成数据持久化 理解并掌握JPA的产生和作用 掌握Spring框架的使用,熟练完成SSH框架的整合 掌握EJB概念及使用,第 3 章 Jsp在JavaEE中的高级应用,本章 目 标,掌握EL表达式应用,理解并熟练使用JSTL负责数据展示,理解并熟练使用Filter/Listenter,能够使用Jsp/Servlet完成简单的网站开发,理解并掌握AJAX技术的使用,使用脚本元素带来的问题,普通的Jsp表达式和脚本语言的缺点 用以产生不可移植的Jsp代码 常常因为代码的逻辑复杂或混乱而难于维护 功能的过分强大影响系统的分层和人员的分工,EL/JSTL表达式的优点,EL/JSTL使用的优点 可以削弱表达式或脚本语言过分强大的功能 将Java程序式代码替换为标签式的注释式代码,使得逻辑表述更加清晰,页面显示更加清爽,更利于代码的维护,EL表达式,EL即Expression Language 使用EL表达式语言可以不用担心类型转化的问题 EL原是JSTL 为方便使用而自定义的表达式语言,也可单独使用 仅能够用于支持JSP 2.0 (servlet 2.4) 的容器中,如Tomcat5.0及以上版本 EL使用的基本语法; $所要调用的变量; EL元素可以出现常规的JSP表达式可以出现的位置上,EL表达式,EL使用的支持; Jsp2.0的启用需要在web.xml进行如下的设置 ,EL表达式的限制性,EL没有声明变量的机制 如果希望在页面中声明变量而不使用小脚本元素的话,需要JSTL或者标准JavaBean动作声明变量 在MVC模式下,一般主要变量都通过控制器来声名,而不用在页面中声名,表达式语言的优势,能够简洁地访问请求参数、cookie和其他请求数据 如果要访问标准类型的请求数据,可以使用几个预定义的隐式对象 一套小但有用的简单运算符 在EL语言中操作对象时,可以任意地使用所提供的算术、关系、逻辑或空值测试运算符,表达式语言的优势,条件化输出 如果需要在不同的输出间做出选择,不必再采用Java脚本元素,取而代之,可以使用$test ? option1 : option2 自动类型转换 表达式语言排除了大部分类型转换的需要,同时也消除了很多将字符串解析成数字的代码 空值替代错误消息 大多数情况下,缺失的值或NullPointerExceptions会导致空串,而非抛出异常,EL内置对象,EL提供11个对象,分为5类 作用域对象 pageScope、requestScopt sessionScopt、applicationScope 页面对象 pageContext 参数访问对象 Param paramValues HTTP请求头部信息对象 Header、headerValues cookie 初始化参数对象 initParam,EL内置对象,作用域对象 pageScope、requestScopt sessionScopt、applicationScope 示例 $pageScope.pageValue /简化写法 $pageValue ,EL内置对象,页面对象 pageContext 示例 IP地址:$pageContext.request.remoteAddr session状态:$pageContext.session.new session编号:$pageContext.session.id 绝对路径:$pageContext.request.requestURL HTTP版本:$pageCtocol,EL运算符,运算符基本和Java语法中的运算符类似 比如,使用EL的条件运算符: /JSP脚本 性别: /EL条件运算符 $(user.male)?“男“:“女“ 另外:empty运算符是java中没有的,用来对一个空变量值进行判断:例如:null,一个空的String,空数组,空Map,没有条目的Collection集合,EL类型转换,EL是弱类型的语言,EL不必考虑对变量声明,EL需要自动的类型转换机制 首先,EL具备和JAVA 5类似的自动装箱,自动将基本型转换为对象类型,比如int转换为Integer。这种转换,主要用于EL自身的复杂表达式 其次,EL为页面显示,会自动将变量转换为字符串,如果变量是基本型,就转换为该基本型的值的字符串,如果是对象,使用对象的toString方法, 如果值为null, 返回“ 另外,EL可将字符串根据上下文自动转换为合适的基本型对应的对象,EL访问对象属性,通过EL可访问作用域变量的属性,使用“.“操作符 邮箱:$user.email 如果以上属性还包含属性,可以嵌套使用“.“操作符 邮箱:$user.address.email 取得属性还可以通过“操作符 姓名:$user“name“ ,EL访问集合,如果作用域中保存的对象是集合,比如Map,那么可以使用“.”和“”操作符通过键来访问对应的值 姓名:$userMap“name“ 邮箱:$userMap.email 如果是List,或者数组,只能使用“操作符通过下标访问 姓名:$userList0 邮箱:$userList1 ,JSTL,JSTL(JSP Standard Tag Library) 既JSP标准标签库是一个不断完善的开放源代码的JSP标签库 JSTL所需要的jar包 jstl.jar standard.jar 获取途径 下载网址是:/jsp/jstl/core 安装完Tomcat后,可以在以下路径找到:webapps-examples-WEB-INF-lib,JSTL,JSTL标签库由以下标记库组成: 核心标记库: 比如循环,表达式赋值等 国际化标记库:用来格式化数据的 数据库标签库:可以访问数据库 XML标签库:访问XML文件 函数标签库:用来读取已经定义的某个函数 JSTL的使用 将jar文件放在WEB-INF/lib目录下 在引用页添加要使用的标签库的引用字符串,JSTL标签库,JSTL的标签库: Core XML Datebase Functions Internationalization (i18n) ,JSTL的Core标签库,通用标签 ; 条件判断标签 ; 循环标签 ; URL处理标签 ; ,标签,标签是一个输出的标签,负责把计算出的结果输出到jspwriter,就向调用了out.println() 语法格式 没有body的情况 有body的情况 这里是BODY,可以是任何合法的jsp或者是html代码 ,标签,标签用于在某个范围(page, request, session, application)里面设置特定的值(默认为page),或者设置某个已经存在的javabean的属性 标签所包含属性 设定一个特定范围的内变量,变量名为:varName值为value 使用value属性设置一个特定范围里面的属性,带有BODY Body content ,标签,标签用于判断单一条件的情况,类似与java脚本中的 其语法格式如下 无嵌套内容的情况 有嵌套内容的情况 嵌套内容 ,标签,标签用于条件选择,和, 一起使用,它的条件选择是排斥性的 的格式为: Body内容(,) ,与,标签是的一个分支,它必须嵌入在标签中,并且出现在前面,其形式与相似 Body(body可以是任何hmtl、jsp、jstl标签或文本) 代表的最后选择,语法格式如下 ,标签,语法 第一种:迭代显示集合(collection)中的数据: Body 内容 第二种:迭代固定的次数 Body 内容 ,数字格式化, 标签实际是对应 java.util.NumberFormat 类,它可以根据locale或自定义的方式,将一个数值的格式设置为数字、金额或百分比。其语法如 fmt:formatNumber value=”numericValue” 被格式化的数字,String或number type=”number|currency|percent” 指定格式化类型,默认是数字 pattern=”customPattern” 定义格式样板 currencyCode=”currencyCode” ISO-4217货币代号 currencySymbol=”currencySymbol” 货币符号,数字格式化,groupingUsed=”true|false” 指定是否格式化的输出要包含分组用的分隔符 maxIntegerDigits=”maxIntegerDigits” 格式化输出额整数部分最多有多少位 mixIntegerDigits=”mixIntegerDigits” 格式化输出额整数部分最少有多少位 maxFractionDigits=”maxFractionDigits” 格式化输出额小数部分最多有多少位 mixFractionDigits=”mixFractionDigits” 格式化输出额小数部分最少有多少位 Var=”varName” 用来存储格式化结果的范围变量名称 scope=”page|request|session|application” 变量的存放范围 /,日期格式化, 标签用于解析一个日期,并将结果作为 java.lang.String 类型的实例返回。其语法如下 fmt:formatDate value=”date” 要设定格式的日期/时间 type=”time|date|both” 指定要设置格式的部分位时间/日期或两种 dateStyle=”default|short|medium|long|full” 预定的日期格式 timeStyle=”defaule|short|medium|long|full” 预定的时间格式 pattern=”customPattern” 自定义的日期和时间格式 timeZone=”timeZone” 格式化的时间所在的地区 var=”varName” 存储结果的变量,Filter过滤器,Filter技术是servlet 2.3新增加的功能,通过实现 javax.servlet.Filter接口实现功能 过滤器中的方法 Init()方法 ,在过滤器启动前被调用 doFilter()方法,该类主方法,一般要实现的功能逻辑在此执行,最后通过chain.doFilter()方法传递请求和响应。 Destroy()方法,过滤器关闭时被调用,Filter过滤器,过滤器的使用前要在web.xml中进行注册 Encode com.IMTI.filter.EncodeFilter encoding utf-8 Encode /* Filter配置的方式和Servlet十分相似,Listener监听器,Listener也是通过实现特定的接口和在web.xml进行配置来实现的。 过滤器类的类路径 Listener能够监听session, application 的创建和销毁以及其中一些属性的修改,但上述内容有变化时,监听器类中相应的方法就会被执行。,Listener监听器,常用的Listener接口有四个 ServletContextAttributeListener接口监听对ServletContext属性的操作 ServletContextListener接口监听对ServletContext 对象及属性的操作 HttpSessionListener接口监听对HttpSession对象的操作 HttpSessionAttributeListener接口监听HttpSession中属性变化的操作 Listener的作用 通过监听HttpSession对象的创建和销毁来统计当前网站的在线人数 通过监听ServletContext对象的创建可以通过读取配置文件中的值进行初始化,AJAX简介,Ajax是Asynchronous JavaScript and XML的缩写 Ajax并不是一门新的语言或技术,它实际上是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用,它包括 使用XHTML和CSS标准化呈现 使用DOM实现动态显示和交互 使用XML和XSLT进行数据交换与处理 使用XMLHttpRequest进行异步数据读取 最后用JavaScript绑定和处理所有数据,AJAX的优势,Ajax相对于传统的web应用的优势是 优化的性能;一些服务器端的工作可以转嫁到客户端,利用客房端闲置的处理能力来处理 无需刷屏;AJAX用XMLHTTP发送请求得到服务端应答数据,无需重新加载页面其他信息 基于标准化;AJAX不需要插件或下载小程序,利于日后维护和修改 方便外部数据调用;在需要页面与数据分离的情况下,可以应用AJAX技术来获取数据,从而达到分离目的,XMLHttpRequest对象,XMLHttpRequest对象最初是作为IE5中的一个ActiveX控件出现的,随后Mozilla 1.0、Netscape7、Safari1.2和Opera7.60都将它纳入自身 XMLHttpRequest对象在IE浏览器和非IE浏览器中实现方法不同 XMLHttpRequest对象的作用在于,允许用脚本程序通过HTTP连接到服务器,而不比通过HTTP请求响应模型与服务器通信。,创建XMLHttpRequest对象,在IE7、Firefox、safari和Opera中创建该对象的JavaScript代码为 var xmlRequet = new XMLHttpRequest(); 在IE5/6中代码为 var xmlRequest = new ActiveXObject(“Microsoft.XMLHTTP”); JavaScript区分大小写,如果大小写不正确,什么东西都创建不出来 使用XMLHttpRequest对象的方式有两种,同步和异步,XMLHttpRequest对象的属性,XMLHttpRequest对象的方法,XMLHttpRequest对象,/先判断浏览器是否是IE if(window.XMLHttpRequest) /非IE浏览器XMLHttpRequest的声明方式 xhr = new XMLHttpRequest(); else /IE浏览器的XMLHttpRequest声明方式 xhr = new ActiveXObject(“Microsoft.XMLHTTP“); ,AJAX应用中的常见问题(1),同源问题 XMLHttpRequest对象有些问题来自于同源问题。在较早版本的浏览器中,可以运行来自任何源的任何脚本,由此带来很严重的安全隐患。因此,处于安全的考量,“同源策略”被要求强制执行。即只有来自同一域、同一协议和同一端口的脚本才可以运行 IE不检验它从XMLHttpRequest对象中取回的字段。其中的一个字段就是HTTPREFERER,它包含用户所浏览页面的URL/域名 这意味着Referer完全可以在客户端进行伪造。IE这个的这个安全漏洞Referer值不可信。解决的办法之一是,我们可以在编写Cookie时,将域名/服务器添加到cookie中,以便验证发出的和接收的同源,AJAX应用中的常见问题(2),跨浏览器兼容问题 在使用Ajax技术时,最困难的问题是让应用程序在不同的浏览器中都能够正常运行。实际上,这种想法非常不实际在XMLHttpRequest应用中,用户使用的是IE还是Mozilla浏览器已成为次要问题,主要问题是创建哪个版本浏览器的XMLHttpRequest对象。我们需要注意以下问题 ActiveX控件不能使用在IE之外的浏览器中 动态HTTPjihe document.all只能在IE上工

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论