移动商务应用软件开发第3章.ppt

上传人:小飞机 文档编号:6596139 上传时间:2023-11-16 格式:PPT 页数:47 大小:1.10MB
返回 下载 相关 举报
移动商务应用软件开发第3章.ppt_第1页
第1页 / 共47页
移动商务应用软件开发第3章.ppt_第2页
第2页 / 共47页
移动商务应用软件开发第3章.ppt_第3页
第3页 / 共47页
移动商务应用软件开发第3章.ppt_第4页
第4页 / 共47页
移动商务应用软件开发第3章.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《移动商务应用软件开发第3章.ppt》由会员分享,可在线阅读,更多相关《移动商务应用软件开发第3章.ppt(47页珍藏版)》请在三一办公上搜索。

1、移动商务应用软件开发JavaEE,课 程 目 标,掌握JavaEE概念及开发环境的设置 熟练使用Jsp和Servlet完成简单的网站建设 掌握Struts和Struts2的原理及应用 熟练使用Hibernate完成数据持久化 理解并掌握JPA的产生和作用 掌握Spring框架的使用,熟练完成SSH框架的整合 掌握EJB概念及使用,第 3 章Jsp在JavaEE中的高级应用,本章 目 标,掌握EL表达式应用,理解并熟练使用JSTL负责数据展示,理解并熟练使用Filter/Listenter,能够使用Jsp/Servlet完成简单的网站开发,理解并掌握AJAX技术的使用,使用脚本元素带来的问题,普

2、通的Jsp表达式和脚本语言的缺点用以产生不可移植的Jsp代码常常因为代码的逻辑复杂或混乱而难于维护功能的过分强大影响系统的分层和人员的分工,EL/JSTL表达式的优点,EL/JSTL使用的优点可以削弱表达式或脚本语言过分强大的功能将Java程序式代码替换为标签式的注释式代码,使得逻辑表述更加清晰,页面显示更加清爽,更利于代码的维护,EL表达式,EL即Expression Language使用EL表达式语言可以不用担心类型转化的问题EL原是JSTL 为方便使用而自定义的表达式语言,也可单独使用仅能够用于支持JSP 2.0(servlet 2.4)的容器中,如Tomcat5.0及以上版本EL使用的

3、基本语法;$所要调用的变量;EL元素可以出现常规的JSP表达式可以出现的位置上,EL表达式,EL使用的支持;Jsp2.0的启用需要在web.xml进行如下的设置,EL表达式的限制性,EL没有声明变量的机制如果希望在页面中声明变量而不使用小脚本元素的话,需要JSTL或者标准JavaBean动作声明变量在MVC模式下,一般主要变量都通过控制器来声名,而不用在页面中声名,表达式语言的优势,能够简洁地访问请求参数、cookie和其他请求数据如果要访问标准类型的请求数据,可以使用几个预定义的隐式对象一套小但有用的简单运算符在EL语言中操作对象时,可以任意地使用所提供的算术、关系、逻辑或空值测试运算符,表

4、达式语言的优势,条件化输出如果需要在不同的输出间做出选择,不必再采用Java脚本元素,取而代之,可以使用$test?option1:option2自动类型转换表达式语言排除了大部分类型转换的需要,同时也消除了很多将字符串解析成数字的代码空值替代错误消息大多数情况下,缺失的值或NullPointerExceptions会导致空串,而非抛出异常,EL内置对象,EL提供11个对象,分为5类作用域对象pageScope、requestScoptsessionScopt、applicationScope页面对象pageContext参数访问对象ParamparamValuesHTTP请求头部信息对象He

5、ader、headerValuescookie初始化参数对象initParam,EL内置对象,作用域对象pageScope、requestScoptsessionScopt、applicationScope示例$pageScope.pageValue/简化写法$pageValue,EL内置对象,页面对象pageContext示例IP地址:$pageContext.request.remoteAddr session状态:$pageContext.session.newsession编号:$pageContext.session.id绝对路径:$pageContext.request.reque

6、stURL HTTP版本:$pageContext.request.protocol,EL运算符,运算符基本和Java语法中的运算符类似比如,使用EL的条件运算符:/JSP脚本性别:/EL条件运算符$(user.male)?男:女另外:empty运算符是java中没有的,用来对一个空变量值进行判断:例如:null,一个空的String,空数组,空Map,没有条目的Collection集合,EL类型转换,EL是弱类型的语言,EL不必考虑对变量声明,EL需要自动的类型转换机制首先,EL具备和JAVA 5类似的自动装箱,自动将基本型转换为对象类型,比如int转换为Integer。这种转换,主要用于E

7、L自身的复杂表达式其次,EL为页面显示,会自动将变量转换为字符串,如果变量是基本型,就转换为该基本型的值的字符串,如果是对象,使用对象的toString方法,如果值为null,返回“另外,EL可将字符串根据上下文自动转换为合适的基本型对应的对象,EL访问对象属性,通过EL可访问作用域变量的属性,使用.操作符邮箱:$user.email 如果以上属性还包含属性,可以嵌套使用.操作符邮箱:$user.address.email 取得属性还可以通过操作符姓名:$username,EL访问集合,如果作用域中保存的对象是集合,比如Map,那么可以使用“.”和“”操作符通过键来访问对应的值姓名:$user

8、Mapname 邮箱:$userMap.email 如果是List,或者数组,只能使用操作符通过下标访问姓名:$userList0 邮箱:$userList1,JSTL,JSTL(JSP StandardTagLibrary)既JSP标准标签库是一个不断完善的开放源代码的JSP标签库 JSTL所需要的jar包jstl.jarstandard.jar获取途径下载网址是:安装完Tomcat后,可以在以下路径找到:webapps-examples-WEB-INF-lib,JSTL,JSTL标签库由以下标记库组成:核心标记库:比如循环,表达式赋值等国际化标记库:用来格式化数据的数据库标签库:可以访问数

9、据库XML标签库:访问XML文件函数标签库:用来读取已经定义的某个函数JSTL的使用将jar文件放在WEB-INF/lib目录下在引用页添加要使用的标签库的引用字符串,JSTL标签库,JSTL的标签库:CoreXMLDatebaseFunctionsInternationalization(i18n),JSTL的Core标签库,通用标签;条件判断标签;循环标签;URL处理标签;,标签,标签是一个输出的标签,负责把计算出的结果输出到jspwriter,就向调用了out.println()语法格式没有body的情况有body的情况这里是BODY,可以是任何合法的jsp或者是html代码,标签,标签

10、用于在某个范围(page,request,session,application)里面设置特定的值(默认为page),或者设置某个已经存在的javabean的属性标签所包含属性设定一个特定范围的内变量,变量名为:varName值为value使用value属性设置一个特定范围里面的属性,带有BODYBody content,标签,标签用于判断单一条件的情况,类似与java脚本中的 其语法格式如下无嵌套内容的情况有嵌套内容的情况嵌套内容,标签,标签用于条件选择,和,一起使用,它的条件选择是排斥性的的格式为:Body内容(,),与,标签是的一个分支,它必须嵌入在标签中,并且出现在前面,其形式与相似

11、Body(body可以是任何hmtl、jsp、jstl标签或文本)代表的最后选择,语法格式如下,标签,语法第一种:迭代显示集合(collection)中的数据:Body 内容第二种:迭代固定的次数 Body 内容,数字格式化,标签实际是对应 java.util.NumberFormat 类,它可以根据locale或自定义的方式,将一个数值的格式设置为数字、金额或百分比。其语法如fmt:formatNumber value=”numericValue”被格式化的数字,String或number type=”number|currency|percent”指定格式化类型,默认是数字pattern=

12、”customPattern”定义格式样板 currencyCode=”currencyCode”ISO-4217货币代号currencySymbol=”currencySymbol”货币符号,数字格式化,groupingUsed=”true|false”指定是否格式化的输出要包含分组用的分隔符maxIntegerDigits=”maxIntegerDigits”格式化输出额整数部分最多有多少位mixIntegerDigits=”mixIntegerDigits”格式化输出额整数部分最少有多少位maxFractionDigits=”maxFractionDigits”格式化输出额小数部分最多有

13、多少位mixFractionDigits=”mixFractionDigits”格式化输出额小数部分最少有多少位Var=”varName”用来存储格式化结果的范围变量名称scope=”page|request|session|application”变量的存放范围/,日期格式化,标签用于解析一个日期,并将结果作为 java.lang.String 类型的实例返回。其语法如下fmt:formatDate value=”date”要设定格式的日期/时间type=”time|date|both”指定要设置格式的部分位时间/日期或两种dateStyle=”default|short|medium|lo

14、ng|full”预定的日期格式timeStyle=”defaule|short|medium|long|full”预定的时间格式pattern=”customPattern”自定义的日期和时间格式timeZone=”timeZone”格式化的时间所在的地区var=”varName”存储结果的变量,Filter过滤器,Filter技术是servlet 2.3新增加的功能,通过实现 接口实现功能 过滤器中的方法Init()方法,在过滤器启动前被调用doFilter()方法,该类主方法,一般要实现的功能逻辑在此执行,最后通过chain.doFilter()方法传递请求和响应。Destroy()方法,

15、过滤器关闭时被调用,Filter过滤器,过滤器的使用前要在web.xml中进行注册 Encode com.IMTI.filter.EncodeFilterencodingutf-8Encode/*Filter配置的方式和Servlet十分相似,Listener监听器,Listener也是通过实现特定的接口和在web.xml进行配置来实现的。过滤器类的类路径 Listener能够监听session,application 的创建和销毁以及其中一些属性的修改,但上述内容有变化时,监听器类中相应的方法就会被执行。,Listener监听器,常用的Listener接口有四个ServletContextA

16、ttributeListener接口监听对ServletContext属性的操作 ServletContextListener接口监听对ServletContext 对象及属性的操作HttpSessionListener接口监听对HttpSession对象的操作 HttpSessionAttributeListener接口监听HttpSession中属性变化的操作 Listener的作用通过监听HttpSession对象的创建和销毁来统计当前网站的在线人数通过监听ServletContext对象的创建可以通过读取配置文件中的值进行初始化,AJAX简介,Ajax是Asynchronous Jav

17、aScript and XML的缩写Ajax并不是一门新的语言或技术,它实际上是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用,它包括使用XHTML和CSS标准化呈现使用DOM实现动态显示和交互使用XML和XSLT进行数据交换与处理使用XMLHttpRequest进行异步数据读取最后用JavaScript绑定和处理所有数据,AJAX的优势,Ajax相对于传统的web应用的优势是优化的性能;一些服务器端的工作可以转嫁到客户端,利用客房端闲置的处理能力来处理无需刷屏;AJAX用XMLHTTP发送请求得到服务端应答数据,无需重新加载页面其他信息基于标准化;AJAX不需要插件或下载小程序,利

18、于日后维护和修改方便外部数据调用;在需要页面与数据分离的情况下,可以应用AJAX技术来获取数据,从而达到分离目的,XMLHttpRequest对象,XMLHttpRequest对象最初是作为IE5中的一个ActiveX控件出现的,随后Mozilla 1.0、Netscape7、Safari1.2和Opera7.60都将它纳入自身XMLHttpRequest对象在IE浏览器和非IE浏览器中实现方法不同XMLHttpRequest对象的作用在于,允许用脚本程序通过HTTP连接到服务器,而不比通过HTTP请求响应模型与服务器通信。,创建XMLHttpRequest对象,在IE7、Firefox、sa

19、fari和Opera中创建该对象的JavaScript代码为var xmlRequet=new XMLHttpRequest();在IE5/6中代码为var xmlRequest=new ActiveXObject(“Microsoft.XMLHTTP”);JavaScript区分大小写,如果大小写不正确,什么东西都创建不出来使用XMLHttpRequest对象的方式有两种,同步和异步,XMLHttpRequest对象的属性,XMLHttpRequest对象的方法,XMLHttpRequest对象,/先判断浏览器是否是IE if(window.XMLHttpRequest)/非IE浏览器XML

20、HttpRequest的声明方式 xhr=new XMLHttpRequest();else/IE浏览器的XMLHttpRequest声明方式 xhr=new ActiveXObject(Microsoft.XMLHTTP);,AJAX应用中的常见问题(1),同源问题XMLHttpRequest对象有些问题来自于同源问题。在较早版本的浏览器中,可以运行来自任何源的任何脚本,由此带来很严重的安全隐患。因此,处于安全的考量,“同源策略”被要求强制执行。即只有来自同一域、同一协议和同一端口的脚本才可以运行IE不检验它从XMLHttpRequest对象中取回的字段。其中的一个字段就是HTTPREFER

21、ER,它包含用户所浏览页面的URL/域名这意味着Referer完全可以在客户端进行伪造。IE这个的这个安全漏洞Referer值不可信。解决的办法之一是,我们可以在编写Cookie时,将域名/服务器添加到cookie中,以便验证发出的和接收的同源,AJAX应用中的常见问题(2),跨浏览器兼容问题在使用Ajax技术时,最困难的问题是让应用程序在不同的浏览器中都能够正常运行。实际上,这种想法非常不实际在XMLHttpRequest应用中,用户使用的是IE还是Mozilla浏览器已成为次要问题,主要问题是创建哪个版本浏览器的XMLHttpRequest对象。我们需要注意以下问题ActiveX控件不能使

22、用在IE之外的浏览器中动态HTTPjihe document.all只能在IE上工作在某些版本的Firefox上运行XMLHttpRequest会崩溃IE不区别大小写,而Mozilla却区别大小写不同的IE版本,必须调用不同版本的MSXML,AJAX应用中的常见问题(3),缓存控制:IE主动缓存为了节约带宽资源,浏览器会在本地缓存页面,然后从缓存中找出该页面而不是从源服务器下载页面。这样一来,当页面更新后,可能页面并没有显示这种更新。解决的办法是,强制停止缓存。可以在网页中插入如下代码:使用以上代码足以使浏览器重载该页面。但如果使用XMLHttpRequest对象,且请求中包含GET指令,那么

23、IE将始终缓存该页面,而决不会重载该页面,缓存问题的解决方法,我们有三种办法来解决缓存造成的问题1、在GET请求后添加querystring,并确保每次运行时,querystring值都不一样。将日期作为querystring值是一个好主意xHRObject.open(“GET”,”display.php?id=“+Number(new Date)+”这种“每次输入不同的querystring值”的解决方法,从原理上将是一种回避策略,缓存问题的解决方法,2、设置HTTP头部的If-Modified-Since为一个过期的时间:xHRObject.open=(“GET”,“display.php?value=“+data,true);xHRObject.setRequestHeader(“If-Modified-Since”,“Sat,1,Jan 2000 00:00:00 GMT”);使用这种方法,可以阻止缓存3、使用POST 请求一般来说,前两种方法用起来比较顺手,第3种方法可以完全避免缓存的困扰,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号