




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、AJAX,苞律亩锣霞膘吊益点毒镁疥留缸幸露廓竣晤眺畏批抗穆速汇液毅柔摆棒腋ajax培训课件ajax培训课件,内容大纲,用传统方式校验用户名是否重复 用Ajax方式校验用户名是否重复 使用超连接的技巧 封装Formbean数据时的问题 防止表单重复提交 使用复选框的技巧 使用下拉列表框的技巧 文件上传 DispatchAction的应用 Validator框架 Struts请求处理过程的源码分析与digester,须郡鸟捉追品吓腊狂拥鸿井灌困蝎泽净底姨杨鳃哇疼斩伙腐宗抓练叙脉尿ajax培训课件ajax培训课件,用传统方式校验用户名是否重复,效果展示与设计分析: 效果展示与要求:注册页面的表单保持
2、可见状态 设计分析(见下页) 实现方式: 在原来的主窗口中回显结果 用弹出的新窗口回显结果,洁蚁侯击哀燃辨鳞捅淆渔渝花弟省锯榴氦褪炙沤调扁扳斜椿囱仲袭副诉骸ajax培训课件ajax培训课件,传统方式校验用户名是否重复的设计分析,Reguser.jsp,RegUser,Main.jsp,注册,校验用户名 是否重复,VerifyUserName,返回怎样的 一个页面,缩驯屡壹妨临屈素彩形萤区舆黑轨误碑府绎股柬抽材绊纶锤谊促槛混岛财ajax培训课件ajax培训课件,传统实现方式1 :在原来的主窗口中回显结果,问题 1:回显的页面在原来网页效果的基础上增加一点内容,可是服务器的响应结果会覆盖掉窗口中原
3、来显示的那个网页内容, 如果服务器在响应时仅仅回送要新增的内容,则会覆盖掉原来的整个网页,怎样做才能看到原来网页效果的基础上增加一点 内容? 2:怎样用javascript代码将请求发送给服务器,在发送请求时,怎样将文本框中填写的用户名作为参数传递给服务器。 3:怎样在标签中触发javascript函数调用?触发函数时要注意返回值。 实现思路: 让VerifyUserName仍然返回Reguser.jsp,这时候需要在Reguser.jsp页面中增加一条有时候显示, 有时候不显示的提示信息。或者是通过生成一段javascript代码,然后用一个弹出对话框来显示提 示信息。 在标签中可以用使用j
4、avascript协议或onclick事件来触发javascript函数调用,然后用 window.location.href属性(replace方法)或模拟表单提交的方式向服务器发送请求,把两种方式都要 做一下。 缺点: 要为电脑增加一个鼠标,由于浏览器的特点是买回鼠标就会覆盖掉原来的电脑,所以,要想显示出电脑加 鼠标的效果,只能同时去买回一个电脑和鼠标,亲扑卧投改法办已适钝诵肮壁续攀激吾废性蝉郁蔽牵茄碴滇瓷台平廉挽髓ajax培训课件ajax培训课件,传统实现方式2 :用弹出的新窗口回显结果,实现方式:在弹出窗口中回显结果 弹出窗口演示 模态对话框演示 实现思路: 由弹出窗口打开一个网页的方
5、式发出校验用户名的请求,回送 的应该是一个网页,只是这个网页的内容很简单,但是,如果 要有关闭按钮,必须加上相应的按钮和javascript代码。 模态对话框的好处在于避免了受浏览器显示新窗口的方式的差异 的影响,并可要求用户必须关闭弹出窗口后才能进行其他操作,伯嚼让霜扛挽掠省熬娱慧钥肢昭调定富浪斯俞长捡琐娶扇慈睁滤浮拘敛资ajax培训课件ajax培训课件,AJAX的概念,Ajax的概念: 是asynchronous javascript and xml的简写。 不是一项具体的技术,而是几门技术的综合应用。 其核心只不过是要在javascript中调用一个叫 XMLHttpRequest的ja
6、vascript类,这个类可以与Web服务器使 用HTTP协议进行交互,程序不通过浏览器发出请求,而是用这个 特殊的JavaScript对象发送请求,再由这个JavaScript对象接收 响应,并将响应结果用DOM编程方式挂到原来的网页上(见下 页的图),从而使得javascript借助这个api类可以干出比较有意义的 事情。 XMLHttpRequest对象在网络上的俗称为XHR对象,尺缺荡艰啦斯鸡骚明鱼乡导宣光优乎拆希际由疵版复弹炯靶己士木景众遥ajax培训课件ajax培训课件,AJAX工作原理图,造竿悔违笔巧颓糙楔劫捐顷端宁冲孪命腥总溢披抿史谦圭紧还拾溉碱撮纸ajax培训课件ajax培训
7、课件,用传统方式校验用户名是否重复,效果展示与设计分析: 效果展示与要求:注册页面的表单保持可见状态 设计分析(见下页) 实现方式: 在原来的主窗口中回显结果 用弹出的新窗口回显结果,知臻寝券钢睬讳戴遗卫孔阜嫁钢茎设装幼检淖挡算犯酉寄咒败耘俞蛮隶席ajax培训课件ajax培训课件,用传统方式校验用户名是否重复,效果展示与设计分析: 效果展示与要求:注册页面的表单保持可见状态 设计分析(见下页) 实现方式: 在原来的主窗口中回显结果 用弹出的新窗口回显结果,站廓延颧冶赋孕钵武糊厨兔盒僳咀胆垦向殃赎昔佯冷妹膳跺响病皮丫瑶碳ajax培训课件ajax培训课件,AJAX的概念与特点,Ajax的特点: 浏
8、览器中显示一个页面后,所有的操作请求都由这个网页中的 javascript代码发出,所有的结果都由javascript代码增加到这个页面上, 浏览器窗口中显示的网页始终都是初始的那个网页。(见下面两页的图) 增强用户体验:可以在用户浏览网页的同时与服务器进行异步交互和实 现网页内容的局部更新,例如,126邮箱密码安全性判断和google suggest;可以按需取数据,改善页面显示速度,例如,树状菜单和 babasport的首页(整合多个信息的页面);视觉流畅的定时刷新,例如, 聊天室。(用下几页的图举例说明) 学习ajax和应用ajax的难点不在于XMLHttpRequest本身,而在于 j
9、avascript和DOM编程,没有较好的javascript和DOM编程基础,你就很难做出 有意义的ajax应用,杯信筒过蓖复初钟笨做狼回玛浑樟臻墩谢冤墒冻司丘脏辰谎扮盂训怔由扁ajax培训课件ajax培训课件,浏览器的普通交互方式,潘毖尺腮嗽械望百役梯踩稳瞬零滇佩洱檄衅侨肆兴诌郁咐郴团色僳氧滚稀ajax培训课件ajax培训课件,AJAX的交互方式,皑叉夫咸被帚染垄辉庙呛族竭虏柒烽祈麦券寺跑核柳拿额揉咙梨郴恳磊永ajax培训课件ajax培训课件,AJAX的应用场景,巢蛾邑拉噎机霸饺旦辨逞阶冷峡伪狰枉痉五闹劳屑颂逃拯揪钳拐炎慨烯距ajax培训课件ajax培训课件,AJAX的应用场景:财富通网吧
10、充值界面,仿俯藩扇撬桔甩御赘筷熊阶遂莱铰暇串戳管撅晋同雄谊淌堆套艺败滥趟捕ajax培训课件ajax培训课件,AJAX的应用场景,剩脑忠寺栽吗远桅折悯负纫涸节更掉有蚂淳驯坞劝担书恿哩直扒俐呵法爹ajax培训课件ajax培训课件,XMLHTTPREQUEST对象的创建,创建: IE7.0以下的浏览器以ActiveX组件的方式来创建XMLHttpRequest对象,代码 如下: var xmlhttp = null; var MSXML = MSXML2.XMLHTTP.6.0,MSXML2.XMLHTTP.5.0, MSXML2.XMLHTTP.4.0,MSXML2.XMLHTTP.3.0, MS
11、XML2.XMLHTTP,Microsoft.XMLHTTP; for(var n = 0; n MSXML.length; n +) try xmlhttp = new ActiveXObject(MSXMLn); break; catch(e) 其他浏览器则可以直接创建javascript的XMLHttpRequest对象,代码如下: var xmlhttp = new XMLHttpRequest(,乐制销舟峡等适扛又腕纽浙氓揩比总蔬驼哺镑款惠辟忘牵嫩靖缆晒藻起敲ajax培训课件ajax培训课件,XMLHTTPREQUEST对象的方法,void open(in DOMString met
12、hod, in DOMString url); void open(in DOMString method, in DOMString url, in boolean async); void open(in DOMString method, in DOMString url, in boolean async, in DOMString user); void open(in DOMString method, in DOMString url, in boolean async, in DOMString user, in DOMString password); void setReq
13、uestHeader(in DOMString header, in DOMString value); void send(); void send(in DOMString data); void send(in Document data); void abort(); DOMString getAllResponseHeaders(); DOMString getResponseHeader(in DOMString header,酵巍孙份旗勉位唆记蘑悦计号噪胶居锅荚焰鸿洋苍吴锹牵腊秸曼睹谓云患ajax培训课件ajax培训课件,XMLHTTPREQUEST对象的属性,attribute
14、 EventListener onreadystatechange; readonly attribute unsigned short readyState; readonly attribute DOMString responseText; readonly attribute Document responseXML; readonly attribute unsigned short status; readonly attribute DOMString statusText,满嘛赚敝电罚奸烧险妇巡羔驴客作咽氰踌归克醉爸可誓统穆俘潞完巨妥潜ajax培训课件ajax培训课件,用XHR
15、底层API校验用户名是否重复,编写服务器端的程序: xhr所要访问的服务器程序,应先直接使用浏览器访问,看返回的结果是否正确, 只有结果正确成功后才使用xhr对象进行访问,这样可节省调试时间。 编写和注册事件处理函数 : 创建XMLHttpRequest对象(其代码可以封装为一个独立的函数) 为XMLHttpRequest对象注册回调函数 使用XMLHttpRequest对象发送请求。用XMLHttpRequest对象发送请求,就是要拼 凑出一个HTTP请求消息,所以发送请求的过程分成了三步: 调用open方法设置请求消息的请求行 调用setRequestHeader方法设置请求消息的头信息(
16、可选) 调用send方法连接服务器和发送请求消息 编写回调函数 通过responseText或responseXML读取响应结果 处理响应结果,并借助页面上容器元素将结果展现出来。 定义容器元素,藻略孙剑疯浸遁激省碗挛贺碱菜厘唐吼兽撰挑椅啡侍畅美揍央倘买柜误人ajax培训课件ajax培训课件,AJAX框架必备技术JSON,概念: 全称为JavaScript Object Notation,是JavaScript的一个子集,是 一种轻量级的数据交换格式,易于人阅读和编写。 JSON定义了表示对象(或哈希表)和数组的格式,注意:Javascript中用同一种数据结 构来表示对象和哈希表。 对象(或
17、哈希表)的构建格式: 用一对表示,其中可以包含多对“名称和值”,名称和值之间用“:”分隔,每对“名称 和值”之间用“,”分隔。名称可以用单引号或双引号引起来,如果名称中包含了空格字符,则必 须用引号引起来。 举例:name:”zxx” , weight:120 , ”birthday” : new Date(1973,3,8) 数组的构建格式: 用一对表示,每个元素值之间用用“,”分隔。 对象和数组中的值可以还是JSON格式的对象或数组,即对象和数组可以相互嵌套,兵叹宗苍捡喳硷震忘拽妄莆捣帆茵逮义夸完搭皇傈溢窜云惦诱苔径风蛮侍ajax培训课件ajax培训课件,PROTOTYPE框架,概念: P
18、rototype是一个Javascript工具库,与服务器端的编程语言没有关系,可用于java ee和.net项目中。 三个主要的功能: 为DOM编程操作提供了诸多便利和加强的API类。 提供了对XMLHttpRequest对象进行封装的Ajax API类,简化了XMLHttpRequest对象创建和调用细节。 提供了构造和解析JSON对象的扩展方法。 技巧: 在实际项目中最好是使用压缩版本的Prototype库,网醋碌躇爷霞瀑扰丛吠炭辰翱狙让纠晰郭捎封徊甄稳描入慎统吻鸯黔邑较ajax培训课件ajax培训课件,用PROTOTYE框架校验用户名是否重复,实验步骤: 在用户名文本框的onblur事
19、件中注册事件处理函数。 参看和复制prototype的API帮助文档中的Ajax.Request类的相关例子代码,进行相应修改。 利用Element.update方法显示响应结果,然后将Element.update方法改写为$函数的形式。 参看和复制prototype的API帮助文档中的Ajax.Updater类的相关例子代码来直接发请求和更新结果,并进行相应修改。 实验常见错误: 在编写JSON格式的options参数对象时,当出现JSON格式的对象嵌套关系导致代码复杂后,一不小心就会漏掉属性之间逗号,纤嫩距拓鞠芬苛抛沿屿褪亲革答芝雁宜志则砾菠鸥岸拔湖缓擞土寅姥契煽ajax培训课件ajax培
20、训课件,省份与城市的联动下拉列表框用普通JAVASCRIPT方式实现,实验步骤: 演示程序运行的效果。 编写和分析在一个静态province.html页面中如何实现省份与城市的联动下拉列表框,使用一个二维数组来装载所有数据。 用MVC模式和思想来动态生成出省份与城市的联动下拉列表框的html页面内容,步骤如下: 创建代表省份与城市的province和City实体类,然后将相应的实体对象存放在一个单例的MemoryDao中,用一个数组存储所有Province对象,Province对象中保存有一个City对象的集合,在MemoryDao中构建出各个对象及关系。 创建ProvinceService类
21、获取所有省份列表。 编写一个ListProvince的Action和相应的province.jsp页面。 将程序改为用JSON对象来装载所有数据,分别修改服务器和客户端的代码,在各个实体对象中覆盖toString方法比在外面最后统一转换成一个JSON字符串的做法要优雅很多,侍戍慷它氟毋粤泣熊躯沃熬粟满留刊来钦屁长季虫膝裂渴所歼譬侣龟五偶ajax培训课件ajax培训课件,省份与城市的联动下拉列表框用AJAX方式实现的思路分析,传统方式与Ajax实现方式的对比与选择: 好比饭馆上菜的方式:一种是先让用户等较长时间,最后一下子将所有的菜全部上上来,一般的火锅店都是这么做的,还有一种方式就是做好一盘菜
22、就上一盘菜,用户等待的时间较短,但送餐服务员要跑好多次,一般的家常菜饭店都是这么做的。 如何选择:传统方式是一下子把所有数据搞到手,以后只是用js把到手的数据显示出来即可,第一次得到数据的时间比较长,如果这个时间长得影响了用户的感受,那就考虑用ajax进行改进,否则,可以直接使用传统方式。 如果将传统方式改造为ajax方式的总结:将原有的一个jsp页面改为两个jsp页面来实现,第一个页面为那些固定不变的内容和javascript代码,第二个页面为那些要改变的区域的代码,因此原来用一个action或servlet实现的代码要改变为用两个action或servlet来实现。 实现的思路剖析: 第一
23、次要获得一个页面,浏览器以后一直显示这个页面,以后的每个操作都触发这个页面内部的一个javascript函数,由这个javascript函数去发请求和处理回应结果。 第一次获得的页面应该包含什么信息?页面的初始内容和javascript函数。 以后的每次请求要获得什么样的结果,瀑会牺梨旁墒煤呸儿啤肥焰尚闯呀贺想侗丸纹苞块碍炔胸阮兑喘卧哺拥苑ajax培训课件ajax培训课件,省份与城市的联动下拉列表框用JSON数据传输格式的AJAX方式实现,步骤: 编写AjaxListProvince的Action和ajaxProvince.jsp页面,在一个下拉列表框中列出所有省份,编写触发和发送获取某个省份
24、下面的城市的请求消息的代码,先简单的alert一下响应结果。 根据客户端的请求信息,分析和编写一个ListCity的Action和一个CityService类获取某个省份下的所有城市,Action返回一个包含有某个省份下的所有City的json格式的数组。 在ajaxProvince.jsp页面中编写处理返回结果的javascript代码。 由于本例子程序返回的城市对象很简单,可以使用一个map来表示某个省份下的所有City信息,同时简化客户端的javascript代码,沪殊疵郧钒锥宝绦憎扛耸拦摔莱萄渺悲名闽乘说伞膨炽言近堰起善哀帚肃ajax培训课件ajax培训课件,解决AJAX的缓存问题,步
25、骤: 使用httpwatch分析这里有缓存问题,由于prototype没有提供控制缓存的选项,所以,我们自己要增加一个时间参数。 演示切换校验码图片的例子,这与ajax没有关系,时孵畦炳养仆先填这景兑峙禽绩英命狞侥食掸穆钓畅捕瞬垂接漠胳槛满愁ajax培训课件ajax培训课件,省份与城市的联动下拉列表框用XML数据传输格式的AJAX方式实现,步骤: 编写一个ListCity2的Action,返回一个包含有某个省份下的所有City的xml文档。 直接用浏览器访问ListCity2,测试查看返回的xml文档内容是否正确。 客户端页面改为ajaxProvince2.jsp,在其中编写解析xml文档内容
26、和将结果显示在下拉列表框中的代码,并且将AjaxListProvince配置为/ AjaxListProvince2.do,临诸忱剁平伸喀恍迁夸臃赛虏厄拥戎航梦刀德泵胎鱼委撵矫颇粘作觉痘依ajax培训课件ajax培训课件,省份与城市的联动下拉列表框返回整个下拉列表框的HTML代码,步骤: 编写一个ListCity3的Action,返回一个包含有某个省份下的所有City的下拉列表框的html代码。 直接用浏览器访问ListCity3,测试查看返回的html代码是否正确。 客户端页面改为AjaxProvince3.jsp 和在其中定义一个元素来容纳服务器返回的下拉列表框,并且将AjaxListPr
27、ovince配置为/ AjaxListProvince3.do,栓浓庆久栅艘抛宠立京痈绑炕寞腋风哪卷多沏聋烈唐势淤炉臻辽尺探淮免ajax培训课件ajax培训课件,省份与城市的联动下拉列表框返回向下拉列表框填充选项的JS代码,步骤: 编写一个ListCity4的Action,返回一个用于将某个省份下的所有City添加进下拉列表框的javascript代码。 直接用浏览器访问ListCity4,测试查看返回的javascript代码是否正确。 客户端页面改为AjaxProvince4.jsp 和使用eval方法执行服务器端返回的javascript代码,并且将AjaxListProvince配置为
28、/ AjaxListProvince4.do,银悲负如赁渗淹伏全汉息绣狰拖趾蓝洛书拘粉揍袒敌融缅吮盏燥唇讣奴媳ajax培训课件ajax培训课件,多级地区的动态展现,实验步骤: 演示和分析程序运行的效果。(待改进:每选择一个区域,则显示一个包含有其所有子区域的下拉列表框,并清除其他不相关的下拉列表框;当选择了某个没有子区域的选项后,不再显示出新的下拉列表框,而是显示该区域的网吧) 分析数据库表结构该如何设计,并执行预备的脚本文件创建表结构和数据。 分析JSP页面该如何设计: 第一个返回的页面应该包含哪些内容? 以后每次请求获得的结果是什么?返回的结果怎样展现在返回的第一个页面中?动态生成出下拉列
29、表框和将下拉列表框追加到其他列表框后面,或者提前预定义若干span元素,将新增的下拉列表框添加到相应的span元素中。 编码实现:用prototype可以很方便得到所有弟弟并删除,增加新弟弟。如果要实现用表格来显示某个区域的网吧,服务器端返回的要么是select元素,要么是table元素,客户端要判断结果的类型,谷漏锨痊蛰沪加鞘辑胺嵌桓酗失霍臭沼便毖楔嫡菇振抛涕智秤恰创畸斡靴ajax培训课件ajax培训课件,STRUTS中的类型转换器FORMBEAN属性的整数与日期类型,步骤: 1. 由注册页面中的int类型的height字段的显示问题想到将height属性改为Integer类型。 2.在fo
30、rmbean中增加java.util.Date类型的birthday属性和在jsp页面中增加对应的标签。 3.由无法完成Date类型转换问题,引出了Struts中的类型转换器问题,自己编写Date类型转换器。 4.编写ActionServlet的子类ItcastActionServlet,在init方法中注册Date类型转换器。 5.用jstl的标签回显日期。 6.由表单校验出错后回到输入jsp页面时的height字段的显示问题引出ActionServlet的convertNull初始化参数的讲解,婆撮敏漓鉴搐座贱绩狙葬锨郑秋桂截筒驮丸稠景嘲涝碍涌枢毒凋倾刑贾仆ajax培训课件ajax培训课件
31、,用户注册案例的实验增加一组复选框,步骤: 1.用原始的html标签在网页中写出复选框列表,属性名称为specialities; 2.在formbean中定义接受复选框参数的数组属性,并在action中打印出数组结果; 3.将jsp页面中的复选框列表项的信息改为由控制器组件提供和用JSTL标签渲染,每一个列表项的信息需要用一个JavaBean对象表示; 4.由表单校验出错后回到输入jsp页面无法正常显示复选框列表,引出action元素的input属性配置问题; 5.完成表单校验出错后回到输入jsp页面时还能保留复选框的上次选择结果的jstl代码; 6.使用完成复选框列表的自动生成和自动填充复选
32、框内容,纫检硅冈滓电擒啄疤睁忿燎搀证折撵勤启沟迎椽授赌蝴倘吗蛇机臭兔斜饶ajax培训课件ajax培训课件,增加下拉列表框与ENUM技术,需求:用性别引出下拉列表框的讲解,性别用一个枚举类型表示。 步骤: 1. 编写枚举类Gender的基本数据,暂不在枚举中引入方法。 2.在控制器组件中提供性别列表的集合和用JSTL标签渲染出下拉列表框,从而引出在Gender枚举类增加额外方法的问题。 3.在user中定义Gender成员变量,由提交数据不能生成Gender类型,编写Gender的类型转换器。 4.在ActionServlet的子类ItcastActionServlet的init方法中注册Gen
33、der类型转换器。 5.完成表单校验出错后回到输入jsp页面时还能保留性别下拉列表框的上次选择结果的jstl代码,崩洱唱峨庆烯组灌叁家哆而劫下眯践募骑讣于哼侯也只搔雾穴改抖赏检姬ajax培训课件ajax培训课件,标签与标签,步骤 1.将性别下拉列表框改为用标签实现 2.使用标签迭代Gender枚举集合,发现这个标签不能访问枚举对象的属性。 3.在课堂时间和同学们接收情况都允许的情况下,可以考虑通过底层代码来分析下标签不能访问枚举对象的属性的具体原因。 4.定义了一个与枚举类Gender具有相同属性的普通Sex类,然后将第一个Action中存储的Gender数组改为直接new出来的Sex数组,以
34、完成标签的效果。 5.顺便总结一下struts标签中的重点和特点,民轻呵戮翠合懒帛裳倘托橙吵数是凰境舰腔狈撬汰秀诸段鸯呆烬伟圈臀殊ajax培训课件ajax培训课件,STRUTS文件上传,步骤: 1.通过查看请求信息来说明html页面中的form表单该如何设置才能实现文件上传。 2.结合httpwatch分析请求信息和回顾fileupload组件的基本实现原理。 3.在formbean中定义FormFile类型的成员变量接收浏览器上传的文件。只要在Formbean中定义一个FormFile类型的变量,struts框架会自动把文件上传的内容变成FormFile对象并注入进来,即使没有上传文件,对应
35、的FormFile变量也会有值,只是得到文件名为”和文件大小为0。 4.分析按商业产品质量的要求该如何完善上传文件的程序,并实现部分代码。 5.在struts-config.xml文件中配置文件上传的限额,当上传的文件内容超过限制的大小后,对应的FormFile变量的值为null,并且在这种情况下,其他字段也未被赋值,表单校验会失败,回到的输入页面也无法回显原来的输入信息。 6.通过源码分析Struts处理文件上传超限时的问题,发现原因在于文件超限时,struts将不会把请求参数填充到包装Request对象中,请求参数也就不会被填充到formbean中,所以回到输入页面时就无法回显原来的输入信
36、息了。 问题: 在一个请求中可以同时上传多个文件吗?用struts具体怎么做,理荡唉坡锰谢消让革邪葡就衣荷他毛息烃畦蝎障架菠冯贫仰饰跌逻睫犀恃ajax培训课件ajax培训课件,原request,包装Request,后续处理代码,1.调用文件上传组件得到所有参数 2.将参数保存进map中 3.对外提供的getParameter方法从map中获取并返回参数,帚瞄痕纤般龚蜂李短铀底辆雨碰涟柬须事迫砒聊欲攻顽盒美苟颗罕犹臭瘪ajax培训课件ajax培训课件,带文件上传的表单页,ActionServlet,原始request,第2个 Action,包装request,第1个 Action,返回Actio
37、nForward,处理ActionForward,原始request(实验结果是包装request,包装request,可号播绘扎扮宋拆标树数曝篮衬浓言荆琼下檀硅阑杠岁搐辆公非疫祖瞩葛ajax培训课件ajax培训课件,用户注册案例的实验 增加FECKEDITOR,步骤: 1.将feckeditor包加入到项目中; 2.看feckeditor的第一个例子的源码,将相关源码加入到jsp页面中,并作适当修改; 3.在formbean中增加与feckeditor编辑框相对应的属性; 4.完成表单校验出错后回到输入jsp页面时还能保留fckeditor中的上次选择结果的代码,赐类愿侧乘缩萍块蔷合梢挤驯脂
38、亏估浦舵梗域卒闺兰阎淮篙摄缸栋彦基化ajax培训课件ajax培训课件,MYECLIPSE工具提供的STRUTS支持,步骤: 创建一个新Web工程 使用MyEclipse增加struts功能 单独创建ActionForm、Action,注意要设置use case的名字 一次性创建ActionForm、Action和用作input的jsp页面 借机提示一下DynaActionForm的应用,仿浸摧耪疗聂谎杏狡寻藤笋矩僻矾钎篓千诊淋兽阜肪惠郊眶船霖氏梢蔡净ajax培训课件ajax培训课件,DISPATCHACTION&MAPPINGDISPATCHACTION的应用,注意: 使用DispatchAc
39、tion时不能覆盖execute方法。 问题: 如果覆盖DispatchAction的execute方法,将有什么效果? 对一个实体对象的所有业务操作,浏览器通常可能发出多少种请求? DispatchAction也是一种防止struts-config.xml文件膨胀的方式,刑链甄窍粘莽克师鉴汪吴湛绳捞各拼圾铃舀藤迢睁擅傅炎府臀努奴气江虎ajax培训课件ajax培训课件,其他ACTION,其他Action: ForwardAction与forward属性 IncludeAction与include属性 LocaleAction DownloadAction LookupDispatchActio
40、n 阶段与面试有关的目标: Struts中有哪些Action,请列出5个,苫咸镑范腑佛亭嘶铣熔倘渺澜搁年褐洒毫擎拂傀召秽肯兰弹霓嫉旋层倘躺ajax培训课件ajax培训课件,STRUTS中的异常处理,在Action中抛出一个ArithmeticException异常,并由Web容器去处理这个异常,在web.xml文件中如何配置?需要配置ServletException,并参看源代码进行讲解。 以Struts的配置方式处理异常 全局异常 局部异常 以模板方法设计模式编程处理异常 4.4.1 Action Class Design Guidelines (from struts documentat
41、ion) Dont throw it, catch it! - Ever used a commercial website only to have a stack trace or exception thrown in your face after youve already typed in your credit card number and clicked the purchase button? Lets just say it doesnt inspire confidence. Now is your chance to deal with these applicati
42、on errors - in the Action class. If your application specific code throws expections you should catch these exceptions in your Action class, log them in your applications log (servlet.log(Error message, exception) and return the appropriate ActionForward,于诡瘟衰走广皿匿浙镜瑟阐去刨宋伏恍提抡挺签鹅邻枉美稀蚕祥坪搞歇狙ajax培训课件ajax培
43、训课件,STRUTS的PLUG-IN,作用:将自己的一些程序代码插入进ActionServlet的声明周期中,即在ActionServlet启动和停止的过程中加入自己的代码,但不需要编写ActionServlet的子类,相比ServletContextListener的好处在于可以获得Struts内部的一些特定信息。 案例:编写一个用于注册日期类型转换器的PlugIn,步骤: 编写实现PlugIn接口的类,其中包含一个名为Converter的属性。 在struts-config.xml文件中配置和元素,母傈俄耗谆烧指毗价戳滩噪铁挡舰合梯槐风芜财辫叶薪偷勘祝锌杰捍拴柄ajax培训课件ajax培训
44、课件,定制自己的REQUESTPROCESSOR类,编写一个自己的RequestProcessor,覆盖RequestProcessor类的process方法,再其中设置request的编码方式,然后再调用super方法。 在struts-config.xml文件中可以通过元素来配置RequestProcessor的类和相关属性,杯丫致姓宜唤动障碉莲嫂尼妖颜脑作鲸湾啃灸里加蜗恫惕绸慎靳券命母簿ajax培训课件ajax培训课件,STRUTS框架的源码分析(准备工作,因为struts使用的是digester框架来将xml文档中的各个元素映射成为相应java对象的,为了便于顺利读懂struts的源代
45、码,必须先讲清楚digester框架。(见下页) 在工程项目中选择struts.jar,右键打开其属性对话框,然后关联上struts的源码包。 回顾struts的请求处理过程的时序图,涉及ActionServlet、RequestProcessor、ActionForm、Action、ActionForward等对象,陆炸莱篡猫穗宵樟修宴颅绞碗捶蹦冶牺菜譬窝仕恐赣遁腑厄谰牙中杰瞅仟ajax培训课件ajax培训课件,DIGESTER框架,Digester框架的作用 Digester框架的第一个例子与工作原理 规则分类: 创建JavaBean对象的规则 :ObjectCreateRule/Fact
46、oryCreateRule 设置JavaBean对象的属性的规则: SetPropertyRule/SetPropertiesRule/BeanPropertySetterRule/SetNestedPropertiesRule 管理父子关系的规则 :SetNextRule/SetTopRule/SetRootRule 调用任意方法的规则 :CallMethodRule/CallParamRule,敢标晕箱永尝伍傅忍磅庚嗡跺氓苇陵一解呐玩绞拽割浅猾摆意臃沃炔租骤ajax培训课件ajax培训课件,分析ACTIONSERVLET的INIT方法,在eclipse中按下crtl+shift+t,打开ActionServlet的源码,按下ctrl+o,在其方法列表中选择init方法,其内部调用顺序如下: 首先调用initInternal方法;初始化struts内部使用的国际化资源包; 接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出售电梯塔吊合同范本
- 奶茶店商铺合同范本
- 病句主客颠倒22题及答案
- 2025版标准工程合同管理协议模板
- 2025合同履行的全面履行原则
- 2025年个体商户门面租赁合同范本
- 2025 北京市房屋买卖合同 北京房产交易平台
- 2025土地使用权转让合同样本
- 2025光伏发电承包协议承包合同范本
- 2025呼和浩特租房合同范本
- 信息安全等级保护管理办法
- 2025年光大银行校园招聘笔试参考题库(带答案)
- 消防更换设备方案范本
- 2024年环境影响评估试题及答案
- 【初中历史】2024-2025学年部编版七年级下学期历史中考复习提纲
- 《电力建设工程施工安全管理导则》(nbt10096-2018)
- 全过程工程咨询投标方案(技术方案)
- 湖南省2025届高三九校联盟第二次联考历史试卷(含答案解析)
- 2025年营销技能考试试题及答案
- 家具全屋定制的成本核算示例-成本实操
- 在线预订平台在旅行社人力资源管理中的应用研究-深度研究
评论
0/150
提交评论