数据专栏

智能大数据搬运工,你想要的我们都有

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

相关推荐: DWR学习 Spring2结合DWR2的用户注册的例子 DWR使用初探 dwr用到的2个js文件 Dwr3.0 与 Dwr2.0 区别 DWR2.0 整合Spring2.0 DWR 处理各种form表单 dwr相关jar包
推荐群组: Tapestry
更多相关推荐
DWR 我刚开始学习dwr 配置好所以文件后 在测试dwr的时候engine.js出现unterminated string literal的错误是怎么回事? util.js报DWREngine.setPreHook is not a function 请各位帮我看一下 dwr配置文件: web.xml: dwr-invoker org.directwebremoting.servlet.DwrServlet debug true config-files /WEB-INF/classes/dwr/dwr-sys.xml pollAndCometEnabled true allowGetForSafariButMakeForgeryEasier true 1 dwr-invoker /dwr/* java代码就是一个普通的操作String的工具类
编程百科
2020-08-27 14:16:18
问题终于解决了,我引用dwr.lib的工程不是一个新的工程,原先有STRUTS2和spring的配置,可能是工程不干净吧,又新建了一个工程,一切OK
编程百科
2020-08-27 14:16:09
相关推荐: hibernate保存oracle日期问题 有关java中的Date,String,Timestamp之间的转化问题 用jdbcTemplate写入Date数据到Oracle时候的问题 dwr.xml详解 dwr配置文件dwr.xml祥解 教你如何使用Dwr 12dwr - dwr.xml配置(allow标签-Converter属性)
推荐群组: EXT
更多相关推荐
DWR java bean的一个属性类型为java.sql.Timestamp,在jsp中用dwr得到后显示的是:“Tue Mar 25 00:00:00 UTC+0800 2008”这种格式的日期,怎样才能显示为常用的日期格式,如2008-3-25 谢谢!!
编程百科
2020-08-27 14:15:59
相关推荐: 关于Session的delete()方法的使用心得 维维随身助理(PPC应用)免费下载 上传一份PL/SQL Guides and reference中译版 SSH框架+Ajax(运用dwr框架)综合小实例 DWR框架简单Demo dwr ssm框架整合 DWR框架快速入门 AJAX技术之DWR框架入门
推荐群组: rapid-framework
更多相关推荐
DWR
 
  现在作的项目中AJAX用的是dwr, 总结了一下, 拿出来分享, 希望大家一起进步!
   未完代续  。。。。。。。
 
 
 
 
编程百科
2020-08-27 14:15:51
相关推荐: DWR实现省市县三级联动 如何用DWRUtil.getValues("Emp_Form");取得html:select标签的值 DWR 处理各种form表单Select/option,table 使用Extjs周期性调用dwr回调函数 JS直接调用java后台中的函数——DWR dwr的使用和ajax的标签使用 教你如何使用Dwr DWR
推荐群组: WebServices
更多相关推荐
DWR 今天我用DWR2结合SPRING2.5来做三级联动时,可以执行到后台的方法,并且也有返回值,但是就是不能触发回调函数。以下是我的dwr.xml 以下是JSP页面的JS方法: function getCity(){ var obj_Pro = document.getElementById("sel_Pro"); var obj_City = document.getElementById("sel_City"); var obj_County = document.getElementById("sel_County"); var pro_Index = obj_Pro.selectedIndex; var pro_Value = obj_Pro.options[pro_Index].value; alert(pro_Value); if(pro_Value != "" && pro_Value != null){ CategoryManager.getCategoryById(pro_Value,cityReturn); }else{ DWRUtil.removeAllOptions(obj_City); DWRUtil.addOptions(obj_City,{'':'please select'}); DWRUtil.removeAllOptions(obj_County); DWRUtil.addOptions(obj_County,{'':'please select'}); } } // callback math function cityReturn(data){ alert("test"); var obj_City = document.getElementById("sel_City"); DWRUtil.removeAllOptions(obj_City); DWRUtil.addOptions(obj_City,{'':'please select','4':'sasdfsa'}); for(var i=0;i
编程百科
2020-08-27 14:15:37
相关推荐: DWR 应用实例(二) 新闻发布系统,多种新闻类型之间切换无刷新 不整合hibernate和spring,只想用spring的事务处理,配置文件
编程百科
2020-08-27 14:15:04
DWR 应用实例(一) 新闻发布系统,多种新闻类型之间切换无刷新还有 (二) DWR 应用实例(二) 新闻发布系统,多种新闻类型之间切换无刷新
编程百科
2020-08-27 14:14:51
相关推荐: Java中使用BigDecimal进行浮点数高精度计算 页面中js方法的相互调用 ruby 函数到底是按值传递还是按引用 dwr实现的无刷新技术 dwr+jsp dwr实现实时查询数据库并显示到jsp页面 DWR在jsp中的使用技巧 jsp中如何调用dwr Ajax+jquery从入门到精通2017视频教程
推荐群组: Tapestry
更多相关推荐
DWR 我想让dwr去取另一个页面中的数据,而不是java类里的方法;看到网上的例子都是取就java的方法, 我想这个简单的要求应该可以实现吧, 有没有人用过这个可以指点一下
编程百科
2020-08-27 14:14:42
两个地方不明白,请教:1、如何把页面上各个对象和hibernate对象对应起来?? 2、如何使您的框架中的condition?
编程百科
2020-08-27 14:14:36
相关推荐: DWR ajax 实际应用讲解 DWR学习 使用DWR完成HelloWorld. DWR在T4项目中的应用(原创)(一) dwr学习笔记 Dwr+AutoComplete+pinyin4j 自动匹配(中文,拼音) 500G 史上最全的JAVA全套教学视频网盘分享 itween的抛物线线性移动
推荐群组: GT-Grid
更多相关推荐
DWR
一.原理
DWR 是一个引擎,可以把服务器端 Java 对象的方法公开给 JavaScript 代码。使用 DWR 可以有效地从应用程序代码中把 Ajax 的全部请求 - 响应循环消除掉。这意味着客户端代码再也不需要直接处理 XMLHttpRequest 对象或者服务器的响应。不再需要编写对象的序列化代码或者使用第三方工具才能把对象变成 XML 。甚至不再需要编写 servlet 代码把 Ajax 请求调整成对 Java 域对象的调用。虽然 DWR 不是 Java 平台上唯一可用的 Ajax-RPC 工具包,但是它是最成熟的,而且提供了许多有用的功能。 DWR 是作为 Web 应用程序中的 servlet 部署的。把它看作一个黑盒子,这个 servlet 有两个主要作用:首先,对于公开的每个类, DWR 动态地生成包含在 Web 页面中的 JavaScript 。生成的 JavaScript 包含存根函数,代表 Java 类上的对应方法并在幕后执行 XMLHttpRequest 。这些请求被发送给 DWR ,这时它的第二个作用就是把请求翻译成服务器端 Java 对象上的方法调用并把方法的返回值放在 servlet 响应中发送回客户端,编码成 JavaScript 。
二.使用 DWR 的开发步骤
   1 )下载 dwr.jar 并将其加载到应用程序 lib 包下,并且将 JAR 包中的 engine.js,util.js 放在应用程序指定目录下,如 dwr, 注意这里要考虑目录路径问题
   2 )配置应用程序部署描述 XML 文件
      以下为通用默认配置
  xml version = "1.0" encoding = "UTF-8" ?>
< web-app version = "2.4"
    xmlns = "http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
    < servlet >      
       < servlet-name > dwr-invoker servlet-name >   
       < servlet-class > uk.ltd.getahead.dwr.DWRServlet servlet-class >       
            < init-param >           
               < param-name > debug param-name >          
               < param-value > true param-value >     
            init-param >
    servlet >
    < servlet-mapping >     
       < servlet-name > dwr-invoker servlet-name >
       < url-pattern > /dwr/* url-pattern >   
    servlet-mapping >
web-app >
这一步骤的目标是将 DWRServlet 这个 servlet 配置到应用程序中
 
3) 配置 dwr.xml
xml version = "1.0" encoding = "UTF-8" ?>
DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd" >
< dwr >
    < allow >      
        < create creator = "new" javascript = "AIX" >
             < param name = "class" value = "com.longcredit.KEye.app.business.AIXStatusBusiness" />      
       create >
   allow >
dwr >
在这里要注意的是:
    < create creator = "new" javascript = "AIX" > 这里的 AIX 是 DWR 自己生成的 JS 文件的名称,在网页中将被引用的JS文件名称
  value = "com.longcredit.KEye.app.business.AIXStatusBusiness" />
这里的 value 值是一个类路径及其名称,该类为业务类,将被 DWR 映射成 JS 文件调用,它的调用名就是上面的 AIX
1)         编写 AIXStatusBusiness 类
      public class AIXStatusBusiness {
   
    public String remove(String id){
       // 执行 command
       // 返回状态
       // 把返回的 XML 结果解析
       return id;
    }
 
}
2)         在页面中调用
   首先要引入 JS
  < script type = "text/javascript" src = 'dwr/interface/AIX.js' > script >
  < script type = 'text/javascript' src = 'dwr/engine.js' > script >
  < script type = 'text/javascript' src = 'dwr/util.js' > script >
   目录结构如下图
dwr
   --engine.js
   --util.js
 WEB-INF
      ---- web.xml
      -----AIX.page
---AIX.html
 
 
我们要在 AIX 页面中调用,而 JS 文件存储在 dwr 目录下。
 
6 )在AIX.html页面中触发业务类定义的方法
AIX.remove(id,“回掉函数”);
 
编程百科
2020-08-27 14:14:27
相关推荐: Spring2结合DWR2的用户注册的例子 DWR学习 DWR简单应用实例 七夕表白代码.zip Windows版YOLOv4目标检测实战:训练自己的数据集 2020学习前端常用网站,你用过吗 Python3开发详解 玩转Linux:常用命令实例指南
推荐群组: EXT
更多相关推荐
DWR 做了一个dwr的例子。老是出现Error:'UserDAOAjax' 未定义的问题,代码如下:UserDAOAjax.java: package org.thj; public class UserDAOAjax { public boolean exitUser(String username){ UserDAO dao = new UserDAO(); return dao.exitUser(username); } } -------------------------------------------------------------------------------- web.xml: dwr org.directwebremoting.servlet.DwrServlet debug true 1 dwr /dwr/* -------------------------------------------------------------------------- dwr.xml: ---------------------------------------------------------------------------- jsp文件: <%@ page contentType="text/html; charset=gb2312" %> <%--固定写法--%> <%--由框架自动生成,文件名根据DWR文件而来--%> 用户注册
用户名: 用户名已被注册
密码:
-------------------------------------------------------------------------- 该方法单独执行成功。而且这个例子是一个视频的例子,在视频中也可以通过,那位给看看,多谢!
编程百科
2020-08-27 14:14:18
在客户端应当不能区分,它只能机械地抛出异常但不能区分是什么异常,并且无论是什么异常都只能抛出一个alert("错误信息"),所以区分了也是白区分。
编程百科
2020-08-27 14:14:07
相关推荐: DWR学习 DWR&webwork整合讨论 写了一个hello world 出错了 DWR框架的使用 Dwr3.0 与 Dwr2.0 区别 DWR2.0 整合Spring2.0 spring mvc+dwr环境配置 DWR 处理各种form表单 dwr所需的jar包及配置
推荐群组: 图灵俱乐部
更多相关推荐
DWR 我想问问一下..dwr/engine.js dwr/util.js dwr/interface/HelloWorld.js //class类 这些不用手写在WEB-INF文件中去吧? 还是自动加载的!! 谢谢!
编程百科
2020-08-27 14:14:00
相关推荐: WebLogic Server前加一个Tomcat有好处么? 关于Weblogic的几个疑问 Spring连接weblogic-DataSource错误 在Linux Weblogic812中filter不能加载 DWR Weblogic Session Error 困扰我半天的解决办法 18dwr - DWR 与 Weblogic 或 PageFlow整合 weblogic9中部署dwr遇到的问题解决 JSP学习笔记(一百零三):解决dwr无法在weblogic下运行的问题 dwr与weblogic报错问题
推荐群组: 济南JavaEyer群
更多相关推荐
DWR 请问dwr2.0在weblogic里面有啥要配置得吗?在tomcat里面运行得好好得,在weblogic里面就自动关闭了weblogicweblogic8.1环境
编程百科
2020-08-27 14:13:50
相关推荐: 与Ext一起使用DWR时的疑难问题和解答 DWR学习 DWR ajax 实际应用讲解 使用dwr上传文件源码 dwr实现消息精确推送 DWR源码分析小结。。。 DWR2.0 中文手册 DWR源码学习(一)
推荐群组: javascript研究小组
更多相关推荐
DWR
/** The original page id sent from the server */
dwr.engine._origScriptSessionId = "${scriptSessionId}";
/** The session cookie name */
dwr.engine._sessionCookieName = "${sessionCookieName}"; // JSESSIONID
以上这段代码取自  dwr 源码包中 engine.js
这里的${scriptSessionId}   与  ${sessionCookieName} 是从哪里或得的,又是怎么获得的呢。
有怎么会用  ${}  ,${} 是什么意思呢?请各位大侠不吝赐教!
编程百科
2020-08-27 14:13:43
醒来 写道
我想这也是一种态度,一种以用户为本的态度。也许这个态度不为boss或者正为进度头痛的项目经理赞赏,但做为开发web的个人,仍应该树立这样的态度。 出现这种情况有两个原因: 1、最主要的原因,国内的客户的信息化经验太少,容易被开发方牵着鼻子走。他们并没有意识到得到更好用的软件是他们的合法权利。往往在发现软件存在可用性问题的时候,已经人走茶凉,钱已付过,开发方这个时候往往对于客户的修改要求敷衍了事。美国的企业/政府的信息化早在上世纪 70 年代就开始了,他们在使用软件的过程中积累了大量的经验,非常清楚自己究竟需要什么样的软件,不容易被开发方牵着鼻子走。 2、商业竞争还不够激烈,开发方还没有充分意识到改善软件可用性所存在的商业价值,仅仅满足于做出符合功能要求的软件。他们也缺乏这方面的知识和指导,不知道如何做好这方面的工作。我的朋友 Windy 专门做这方面的咨询工作,现在已经获得了生意,这说明我们的软件企业正在取得进步。 另外,相关的法律环境也有很大的影响。美国有 Section 508 来促进软件的可用性。做政府的生意,这些法律条款是必须要满足的。 如果我们的软件开发一直在这种急功近利的状态下低水平发展的话,那么我们的软件行业是没有希望的。软件开发对于我们也不是一个有吸引力的工作,我们可以考虑明天去做点小生意,也许有希望赚到更多的钱。没有时间是一个堂皇的理由,似乎仅仅这一个理由就可以完全忽略掉改善软件的可用性的努力,可以完全忽略掉单元测试,可以完全忽略掉...... 很多开发团队甚至没有一个象样的版本管理系统,原因也是因为工作太忙,没有时间去研究。没有时间,一个搪塞掉一切进步的好理由! 但是还有一句老话:磨刀不误砍柴功。
编程百科
2020-08-27 14:13:35
我采用是基于prototype.js ,主要用AjaxTags,我觉得挺好的, Ajax其实不会和现有的框架冲突,也不会让现有的框架变得臃肿,在我自己的框架里只要加入一个JavaBean/Collection/Map ->Ajax XML的转换XMLHelper类就很好用了,反而是服务端不用为参数回传,页面状态保持等操心了,我的一个原则是:客户端能做的,就不让服务端实现。
编程百科
2020-08-27 14:13:29
dlee 写道
JSAN:开源 JavaScript 项目的目录和集散地,类似于 Perl 模块的集散地 CPAN。
http://www.openjsan.org 为什么我们总是重复写别人写过的东西.
编程百科
2020-08-27 14:13:11
galaxystar 写道
有些产品,要求并发量很大,且页面响应时间要短!数据量又比较大,适合用ajax开发吗?
比如前台MVC架构,在M里要把XML生成好,向客户端传输,再在客户端显示,是不是都比同步要耗更多的资源!? 用ajax其实可以减少交互的数据量 至于转成xml消耗大是后台的问题. 如果不用spring webwork而是直接用cocoon 采用ajax后服务器支持的最大并发提高了 cpu负载也减少很多
编程百科
2020-08-27 14:13:04
尝试了一下,挺好玩的。可以添加一些event,而且可以把时间定到很精细。但是没有找到哪里有统计的功能。
编程百科
2020-08-27 14:12:57
相关推荐: 忘记 prototype,使用 Modello 来编写类 求XmlHttp 跨域的解决方案 ajax 跨域取数据 跨域Ajax工具: Modello.ajax Ajax跨域请求解决方法之Modello篇 JQuery中Ajax跨域解决方案 关于ajax跨域操作的jquery, django实践 基于jquery的ajax之跨域解决方案
推荐群组: javascript研究小组
更多相关推荐
JavaScript Ajax http://www.ajaxwing.com/index.php?id=4 Modello.ajax 有如下特性: 1,跨浏览器 XMLHTTPRequest 调用 2,解决 XMLHTTPRequest 调用时的缓存问题 3,解决 XMLHTTPRequest 的跨域获取问题 4,解决跨域获取时的字符集问题 5,非常简单的调用接口和设置方法(不需对浏览器进行特殊设置,不用在 apache 服务器加入mod_rewrite等)
编程百科
2020-08-27 14:12:49
把服务器的状态写入JSON头里面,response.setHeader("X-JSON",myjsonString); 在你自定义的onSuccess方法中第二个参数即是Prototype自动eval后的json对象: onSuccess:function(resp,jsonObj); { if(jsonObj.statusCode == 100); //这是你自定义的json对象的状态属性 { alert("保存失败,原因:" + jsonObj.statusMsg);; return; } alert("保存成功");; //这里是你自定义的代码 } 关于JSON,请参考http://www.json.org,那里面有几个JAVA类,很方便. Note:在服务器设置response.setHeader时,JSON对象前后必须加上括号,看看Prototype的Ajax的代码就知道了,它是直接eval的. PS:感觉楼主没有分清楚HTTP STATUS与服务器内部异常
编程百科
2020-08-27 14:12:35
相关推荐: 一个成功的RIA技术需要满足的条件 大家为什么要用ajax开发框架(库) ? AJAX 的七宗罪 js+ajax+jquery+easyui从入门到精通(项目实战) JavaScript+jQuery+项目实战系列视频教程 Ajax异步数据交互 Ajax+jquery从入门到精通2017视频教程 【必看】2020年新型前端核心技术-JavaScript精细化教程JS+AJAX+HTTP
推荐群组: HTML5
更多相关推荐
JavaScript Ajax 说实话,我对于Ajax是没有发言权的,去年,我只在项目中用过HttpRequest,但是对于Ajax到底解决了什么问题,我还是一塌糊涂。HttpRequest异步调用我是明白的,但是Ajax不仅仅是HttpRequest吧。现在把Ajax和Rich Client也画上了等号,但是我还没有看到Ajax关于UI那一层有什么好的解决方案啊,也许是我无知吧。我觉得Ajax把DHtml/JavaScript/Css/XML 全部加进来,把View那一层弄得太庞大了,程序员不仅仅要懂XML/JavaScript,还要熟悉CSS/DHTML,我觉得这和客户要求 开发速度快,成本要节省,快速跟进需求变化的趋势是不相符合的。 我自己觉得View这一层既要满足 事件驱动开发(而不是JSP之类的请求驱动),又要非常简单,满足模型驱动开发,而不是加入大量的CSS/JavaScript满足客户界面体验。至于是否生成Dhtml/CSS,由类似于Laszlo这样的framework来决定具体实现的技术,而不是由程序员自己去决定用什么来实现。程序员只关心XUL之类的语言就可以了。 界面元素简单、功能强大、适应快速变化,模型驱动开发,我觉得是View这一层变化的趋势。这样软件公司才有钱赚。 当然,这仅仅是我自己的一点看法而已。尤其我对Ajax也非常的不了解。无知者无畏阿。呵呵。
编程百科
2020-08-27 14:12:30
Maple 写道
可否把其他大牛的ppt发来看看,对我们很有帮助 在这里下载:http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=29304&threadID=33041 会后有跟庄主聊了一会,由于一直在做Flex相关的项目,所以在聊的过程中只能说“面对客户开发,而非面对技术开发”,但是要对技术保持一定的关注,要不然哪天要用到AJAX,还没有上手就玩完了。。。:) 庄:你的处女秀很好!虽然说如你所说空对空,但是。。。赫赫,还是把地图秀得很漂亮,偶是评9分,有一分是不是因为你害怕呀。。。:) 匆忙,太匆忙了,会还没有完,你就匆匆开赴机场去了,希望下次能够有机会再来!
编程百科
2020-08-27 14:12:22
Michael Chen 在04年底正式提出的"面向异步消息的WEB应用"它们的实现基础都是一样的 javascript +xmlhttp,看了看buffalo,感觉封装的很好. http://www.amowa.net/ 而且现在有个很好的实现 buffalo Buffalo: http://www.amowa.net/buffalo
编程百科
2020-08-27 14:12:14
我看微软迟早要把那些缺乏的特性加上去,jsvm是在目前恶劣的开发环境下的一个很有意义的尝试。我倒没看到还什么更好的所谓的正路。要是有友善的开发环境,不要说Bindows,可能现在XYZindows都有了,而不像现在只有少数几家公司做出来那些还要收费的产品,而且不同的产品都有自己一套讲究,晕。 想象一下如果能做到像java那样的api那种标准,一目了然的调用,无论是开发还是使用,效率都很高,可以想象共享资源这一块领域的发展速度一定是现在的10乃至100倍以上。
编程百科
2020-08-27 14:11:49
噢,随手粘贴上来的。这个WebStateMach你就理解为是个singleton的类,里面把HttpServletRequest 放在一个ThreadLocal变量里了。 因为客户端直接使用singleton来获取全局实例会影响可测试性,所以封装了一下。让WebStateMach变为可插入的。
编程百科
2020-08-27 14:11:29
相关推荐: IBM启动Open AJAX项目 openlaszlo4.0:Ajax Runtime正式发布 eclipse推出ajax开发工具 用GWT实现基于Ajax的Web开发 collect AJAX Frameworks(转贴) 使用 Google Web Toolkit、Apache Derby 和 Eclipse 构建 Ajax 应用程序,第 2 部分: 可靠后端 Comet: ajax server push
推荐群组: EXT
更多相关推荐
JavaScript Ajax http://www.alphaworks.ibm.com/tech/ajaxtk?open&S_TACT=105AGX59&S_CMP=GR这个就是IBM发起的OpenAJAX项目,已经release了一个初级的版本。我下载安装了一下,提供了一些JS的debug功能,集成Mozilla可以进行调试,测试等等。 AJAX框架方面目前提供了rico(prototyp)和Zimbra的向导。 目前来说,功能还比较简单,似乎bug也比较多,操作起来常遇到错误,不过这是一个值得期待的plugin。同时也表明了业界厂商对AJAX的决心。 ATF需要你预先安装WTP插件,详细说明可以看IBM网站,目前该项目是Eclipse的孵化器项目。另外ATF选择支持的AJAX框架,也表明业界看好的AJAX框架,目前提供的是rico/prototype和Zimbra(商业AJAX框架,有社区版本),预计还会提供dojo支持。
编程百科
2020-08-27 14:11:15
相关推荐: 传统Web框架 PK AJAX -来自BJUG邮件列表的讨论 webwork并入struts团队了! 『讨论』jsonrpc的疑问 WebWork2.2新特性: AJAX之Remote Form (转载) WebWork 2.2: Released and ready for Struts! WebWork2.2新特性(一):数据校验 validator WebWork2.2新特性(系列)---freemark支持多语言
推荐群组: 图灵俱乐部
更多相关推荐
JavaScript Ajax 今天早上在网络上无意看到满江红blog上的这么一篇文章,说出了很大一部分web 开发人员的困惑。这里存在的问题,我觉得有一点是可以作为讨论的前提加以明确的。 web开发现在基本分为:RIA和传统页面导航形式。RIA相对来说,实现难度大一些,因为它既有 传统页面导航形式的特征,又有各种复杂的界面交互以及近乎苛刻的用户交互体验在里面。 前者实现复杂,但是较容易符合以使用为中心的原则,而后一种实现简单,模式较为单一,但是 对于复杂的用户交互缺乏必要的支撑技术,很难实现用户复杂的交互需求。 那么,我们该如何决定项目该上哪一种形式的web app呢? http://www.javalobby.org/articles/ajax-ria-overview/ 里面提到了几个选择RIA的原则: Simple enough for HTML means that the UI has modest interactivity requirements. However, if any of the following features improves your UI, you should consider RIA technology: * Partial screen updates * Asynchronous communication * Server push * Widgets supporting direct manipulation * Multiple coordinated windows * Modal dialogs * Menus * Keyboard navigation 后面二条可以用DHTML/JS实现。 像满江红blog提到的:根据用户选择的客户ID来判断是否有足够的存款 这个逻辑已经涉及到RIA的应用了,对于它的大部分分析我还是赞同,不过似乎对于这点: 3,客户端基础设施难于与服务器端进行交互。xmlhttp以及web service可选,但是在企业应用中其低下效率可能会带来服务器的压力隐患, 降低性能和吞吐量。若excel方案,则同样面临着与服务器数据交互的难题。不管是xmlhttp方案还是application方案,都面临着抛弃 struts/webwork重新实现request/response dispatch的要求。 对于这点,我存在疑义。其实现有的webwork+dwr+dojo基本可以满足绝大部分RIA需求。简要针对上面提到的几个需求做一个分析: * Partial screen updates --〉webwork很好的支持,targetDiv = "your div". * Asynchronous communication-->WW对form的异步提交和响应作了很好的支持。具体的非form提交的异步 交互可以使用DWR来完成。比如上面提到的用户根据客户ID来判断存款是否充足的异步逻辑。 * Server push --〉DWR支持 * Widgets supporting direct manipulation 期盼DOJO等成熟的客户端组件出现吧 我基本上认为: WW2.2+DWR基本可以实现大部分的B/S结构RIA需求,不过他们的学习曲线比较高。 在具体的应用中,几乎全部的业务逻辑都可以通过后台代码来完成, 而前台的界面交互主要由JS来完成,这里有一个十分谨慎的讨论的禁区: JS可以完成一部分的业务逻辑吗? 比如相关输入项的计算规则?A+B+C*D = E, 这样的逻辑在前台完成似乎也不是什么难事。然而,会带来一个测试比较难,扩展比较 复杂的问题。打破了这个底线会给前后台一起粘合业务逻辑带来了潜在的隐患。 虽然在具体的项目中,这个地方的设计需要综合的考虑,很多都是相对的。在我们的项目中, 我们将这些计算规则统统放到了后台对应的领域模型身上。然后让DWR传输参数和调用 相应的逻辑,这里涉及到一个性能的问题。这里有一个度的问题,如果性能下降1-5% 可以带来架构上的优雅设计,我觉得是完全可以接受的。
编程百科
2020-08-27 14:11:00
http://michael.nona.name/archives/125#comments
Michael Chen 写道
1.2中BuffaloServiceServlet已经被deprecated. 请使用新的net.buffalo.web.servlet.ApplicationServlet.
你用的可能还是老的BuffaloServiceServlet,如果用新的ApplicationServlet应该没有这个问题。
编程百科
2020-08-27 14:10:47
补充一下,为什么我认为 RIA 的好方式是 xul + ajax 呢?主要是:xul的好处是简单,它本来就是描述界面的语言,用它来做一个客户端,可以有效地隐藏那些复杂的 widgets api 。 ajax的好处是兼容,比 flash/rcp/xaml/xul 更兼容。 又简单,又兼容,不是很好么。
编程百科
2020-08-27 14:10:36
相关推荐: DWR帮助说明-dwr的bug及其解决方法 求教关于dwr客户端获取服务端返回对象为null的问题,郁闷了一天了~!~! 使用DWR,hibernate的annotation的lazy属性失效,为何? dwr 无法converter javabean 提示no converter found for Spring+dwr在保存数据时报错ERROR [DefaultConverterManager][convertOutbound] No converter found for 'java.lang dwr的使用和ajax的标签使用 教你如何使用Dwr struts1+spring+hibernate+DWR整合方案详解
推荐群组: Tapestry
更多相关推荐
DWR 程序可以运行,但无法取到javabean的数据,ie7打开弹出对话框:‘name’(name为javabean一个属性)为空或不是对象 ,firefox提示“item has no perpertise” ,我用的dwr版本是 2.02 ,其他也试过了一样的问题 ,搞了好久,实在找不出原因啊 ,哪位大哥帮忙看看啊tomcat 打印如下信息: 2008-03-30 21:49:22,281 [org.directwebremoting.dwrp.DefaultConverterManager]-[ERROR] No converter found for 'org.zm.dwr.Item' [org.directwebremoting.dwrp.DefaultConverterManager]-[ERROR] No converter found for 'org.zm.dwr.Item' 2008-03-30 21:49:22,296 [org.directwebremoting.dwrp.DefaultConverterManager]-[ERROR] No converter found for 'org.zm.dwr.Item' -- 我的jsp和javascript文件
--- DBFactory 类 :我的数据工厂类 package org.zm.dwr;import java.util.HashMap; import java.util.Map; public class DBFactory { private static Map allItems= new HashMap() ; static{ allItems.put("1111", new Item("aaaaa","bbbbbb","ccccc",1999)); allItems.put("2222", new Item("acdfdf","sdfsdf","sdaffsdaf",1129)); allItems.put("33333", new Item("234dsd","vsadsdf","234sdsdf",1542)); } public static Map getAllItems(){ return allItems ; } }
---DAO类 package org.zm.dwr;import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ShoppingDAO extends DBFactory { @SuppressWarnings("unchecked") public List getList(){ ArrayList list = new ArrayList() ; Iterator i = getAllItems().values().iterator(); while(i.hasNext()){ Item item = i.next() ; list.add(item); System.out.println(item.getName()); } return list ; } } ----javabean package org.zm.dwr; public class Item{ private String id; private String name; private String description; private int price; public Item(String id, String name, String description, int price) { this.id = id; this.name = name; this.description = description; this.price = price; } public String getDescription() { return description; } public String getId() { return id; } public String getName() { return name; } public int getPrice() { return price; } } --我的dwr.xml :
编程百科
2020-08-27 14:10:16
相关推荐: 使用AJAX自动定时无闪动更新页面数据 DWR ajax 实际应用讲解 使用DWR完成HelloWorld. java后台+微信小程序 实现完整的点餐系统 使用DWR局部更新表格中数据 DWR 学习及深入 dwr的基本运用 AJAX的DWR框架实现无闪动自动刷新页面
推荐群组: GT-Grid
更多相关推荐
DWR
 
/**
**QQ:252574345
**MSN:lele_love_lomboz@hotmail.com
*/
 
 
刚才顺手帮朋友写了个AJAX局部更新表格的例子,顺便贴出来( 后面有整个工程,提供下载 )
 
1、业务类
package com.zyl.dwr.impl;
 
public class StatusBusiness {
 /**
  * 测试方法
  * @param str
  * @return 被测试字符串
  */
 public String testDWR(String str) 
 {
  return "1";
  
 
 }
 
}
 
2、页面
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




DWR测试
  
  
  



本程序,在指定表格内使用AJAX局部更新表格中数据
由于并没有连接数据库操作,因此,从前台调用后台的业务方法返回的是固定值1,所以只会删除第一条数据
 














名称内容操作
国内风调雨顺删除
国外地震不断删除
世界风景这边最好删除




 
3、dwr.xml
 



         
       
        
        
         
  

    
        
        
         
  

  


 
4.web.xml
 

 xmlns=" http://java.sun.com/xml/ns/j2ee "
 xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
 xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd ">
                       
   
        
    dwr-invoker  
    uk.ltd.getahead.dwr.DWRServlet      
                      
               debug         
               true    
           

   

        
       dwr-invoker
       /dwr/*  
   

   
   
       20
   

      

 
编程百科
2020-08-27 14:09:54
相关推荐: DWR学习 使用Dwr渲染table 一个关于DWR的例子 利用DWR处理回调函数返回的list集合,并填充select 利用DWR处理回调函数返回的list集合,并填充selec DWR util.js 整理(DWR 处理各种form表单Select/option,table等,List,Bean dwr操作form表单Select/option,table dwr 填充select 实现级联效果
推荐群组: EXT
更多相关推荐
DWR
/**
**QQ:252574345
**MSN:lele_love_lomboz@hotmail.com
*/
 
 
本文并未提供完整源代码,请见谅
1、配置dwr.xml



         
       
          //为DWR实现类
  

        //PO类
       
  
  


2、DWR类:StatusBusiness类
  /**
 * 返回select框数据集合
 * @param id
 * @param action
 * @return
 */
public List getSelectList(String id,String action){
 
 
//为文章结构清晰,以下代码省略
//此list为PO类user的集合
 return list;
 
 
 
 
}
3、PO类
public class User extends BasePO
{
private String id;
private String name;
//getter and setter
}
4、AJAX:dwr处理
...页面中


省市县三级联动

省: 市: 县:
对于index.jsp需要说明的是:需要引用三个js,province.js[其与dwr.xml里面的javascript的名称相同],engine.js,util.js。其中对于province.js是由dwr自动生成的javascript文件,包括相应的类以及方法。dwr/engine.js是dwr的核心引擎脚本处理客户端调用的转换,dwr/util.js包含了工具函数简化页面处理。 至此编码完毕,开启Tomcat,在浏览器里面输入 http://localhost:8080/Struts_Dwr/welcome.do 可以看到如下效果:数据库脚本以及本例子的源代码都在附件里面可以下载,本例子MySQL数据库的用户名和密码都是root,大家可以将struts-config.xml里面的user和password修改成的Mysql帐号即可。
编程百科
2020-08-27 14:09:28
相关推荐: Ajax框架DWR入门 DWR学习 struts2+spring+dwr 思考 DWR框架的使用 dwr实现select列表的动态级联 dwr--返回对象给select dwr操作form表单Select/option,table DWR 处理各种form表单 DWR操作下拉列表框例子
推荐群组: rapid-framework
更多相关推荐
DWR DWR.xml 文件 messageTypeService 在Service中有 MessageType.findAll("",callback); fiadAll() 函数没有参数 怎么调用
编程百科
2020-08-27 14:09:19
ruiliwonderful 写道
用DWR做的SERVER PUSH,用浏览器访问WEB Service是总是不停的刷新,表现为浏览器下的状态栏狂刷,有那位仁兄有解决方案。先谢过了。 偶也遇到这样的问题。 某个人结果给吧状态栏的文字给我换了。。。。。。
编程百科
2020-08-27 14:09:13
相关推荐: DWR帮助说明-dwr的bug及其解决方法 DWR帮助说明-如何编写通用的单行编辑框 DWR帮助说明-服务器端程序的编写 一个Struts+Hibernate+Spring+DWR的小示例 [SSH+DWR] DWR+Spring+Hibernate入门示例 一个dwr+spring+hibernate的示例 使用MyEclipse集成SSH和DWR(一)整合Spring和Struts java后台+微信小程序 实现完整的点餐系统
推荐群组: 图灵俱乐部
更多相关推荐
DWR
这是一个运用dwr+spring+hibernate这样一个框架编写的示例。它展示了一下内容:
1、在dwr中尝试编写的一些通用的代码,包括如何编写一个通用的列表显示框并实现分页、如何编写一个通用的单行编辑框、如何编辑一个通用的存盘和删除程序等等。
2、在dwr中如何与spring兼容,调用bus中的方法;在dwr中如何与hibernate兼容,在页面端操作值对象,以及处理值对象间的各种关系。
3、如何在spring中实现单dao,使这个单dao既可以与hibernate隔离,使其低耦合高内聚,提高可维护性,又能满足各个bus的业务需要,简化开发的过程。
不是美工,界面比较外行,见谅了:)
示例在MyEclipse中安装部署的步骤:
1、创建一个新的web项目并拷贝示例中的文件到项目中。注意web.xml文件应当是将原文件覆盖。
2、添加spring和hibernate。点击项目树中的项目名按Alt+Enter键,弹出项目属性对话框。选择“Java Build Path”中的“Libraries”标签,然后点击“Add Library”按钮,选择“MyEclipse Libraries”,点击“Next”,选择“Hibernate 3.0 Core Libraries”、“Spring 1.2 AOP Libraries”、“Spring 1.2 Core Libraries”、“Spring 1.2 ORM/DAO/Hibernate Libraries”、“Spring 1.2 Web Libraries”,点击“Finish”按钮。
3、点击“Add External JARs”按钮,添加dwr.jar、daosupport.jar、hxtg.jar、hibernate3(必须将hibernate3升级到3.2以上)以及其它数据库相关的jar包到项目中。添加完成以后记得重新部署应用服务器。
4、创建数据库实例,如果是oracle,在pl/sql中运行示例中的employee.sql创建数据库对象。
5、修改ApplicationContext-hibernate.xml中datasource的连接属性为你的数据库。部署完成!
部署完成后运行可能会在部分功能中出错。这些问题的解决我会在《 DWR帮助说明-dwr的bug及其解决方法 》中详细讨论。
重要提示:部署完成以后需要打开Department.hbm.xml和Employee.hbm.xml,修改schema="TEST"为你自己的用户名。
相关文档:
如何在struts+spring+hibernate的框架下构建低耦合高内聚的软件
DWR帮助文档-dwr.xml文件的配置
DWR帮助说明-如何编写通用的列表显示框
DWR帮助说明-如何编写通用的单行编辑框
DWR帮助说明-服务器端程序的编写
DWR帮助说明-dwr的bug及其解决方法
编程百科
2020-08-27 14:09:04
相关推荐: 请问怎样让dwr的类去访问session资源? DWR 从session中取出数据 如何获取其他用户实例 DWR的异常处理及session过期 通过dwr往session中设值 DWR中取得session等信息 DWR session过期处理方案 DWR中取得session等信息(转)
推荐群组: JSF
更多相关推荐
DWR
HttpSession session = WebContextFactory.get().getSession(); 
 session.setAttribute("treeId", testStr);
问下有没替代WebContextFactory.get().getSession()的方法?
编程百科
2020-08-27 14:08:52
相关推荐: 使用javaScript 怎么样才能将页面form表单数据存入 xml 文件中~给点提示? ajax+struts实现多级下拉列表联动,无刷新 js读取xml java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目) 用Ajax实现分页功能的图书购物车 ajax获取动态列表数据后的分页问题 html/css+jsp+ajax实现简易版购物车 关键词搜索/分页功能的前端代码(ajax + jQuery)
推荐群组: javascript研究小组
更多相关推荐
JavaScript Ajax 最近在学习Ajax的过程中,做了一个关于图书的购物车示例,图书的信息保存在服务器端的XML文档中,通过Ajax的异步交互获取XML文件内容,然后在客户端解析XML DOM,最后再在客户端用JS实现简单的分页。 本人觉得JS文件中的分页做得不是很好,请各位能够多多提点意见,大家共同进步。 效果示例图: ---------------------------以下是基本的文件代码----------------------------- bookList.xml-->存储书本信息 001.jpg Beginning ASP.NET with C # Hart, Kauffman, Sussman, Ullman 0764588508 $39.99 50 1985 002.jpg 计算机技术集成概论 张三牛 0764588509 $59.99 45 2001 003.jpg 操作系统原理 李四喜 0764588510 $69.99 55 2002 004.jpg 汇编语言 刘也 0764588511 $69.99 55 2002 005.jpg Oracle 实用开发指南 朱五六 0764588513 $69.99 55 2002 006.jpg Ajax的工作原理 李小将 0764588514 $69.99 55 2002 007.jpg 数据结构 何伟 0764588515 $69.99 55 2002 008.jpg SQL Server开发指南 耿文化 0764588516 $69.99 55 2002 Cart.js-->异步交互的JS文件 var xmlHttpRequest; var currentPage = 0;//记录当前页索引 var everyPageCount = 3;//每页显示的项目数量 var maxPageCount = 0;//记录最大页数 var bookIndex = -1;//当前BOOK元素的索引 var result = null;//服务器返回的XML文档对象 var bookNodes = null;//储存所有BOOK节点对象 //创建一个用来和服务端交互的Ajax核心对象XMLHttpRequest function createXMLHttpRequest(){ if(window.XMLHttpRequest){ xmlHttpRequest = new XMLHttpRequest(); if(xmlHttpRequest.overrideMimeType){ xmlHttpRequest.overrideMimeType("text/xml"); } } else if(window.ActiveXObject){ xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } } //使用传统的注册事件模型注册按钮 function registerButtonEvent(){ document.getElementById("previousPage").onclick = sendPreviousPage; document.getElementById("nextPage").onclick = sendNextPage; } //购物车页面初始化 function sendRequest(){ registerButtonEvent();//注册页面的按钮事件 createXMLHttpRequest();//创建XMLHttpRequest对象 //异步加载XML文档数据 xmlHttpRequest.open("GET", "bookList.xml?id=" + Number(new Date), true); //指定回调函数 xmlHttpRequest.onreadystatechange = getInitData; xmlHttpRequest.send(null); } //页面初始化回调函数从服务器端获取XML文档数据并解析 function getInitData(){ if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200){ //alert("Server Success!"); result = xmlHttpRequest.responseXML; bookNodes = result.getElementsByTagName('BOOK'); //alert("bookNodes.length=" + bookNodes.length); if(currentPage == 0 && bookNodes.length == 0){ document.getElementById("info").innerHTML = "很抱歉,未找到相关数据!"; document.getElementById("maxPageCount").innerHTML = 0; document.getElementById("currentPage").innerHTML = 0; return; } else{ //判断并获取最大页数 //alert(parseInt(bookNodes.length/everyPageCount)); maxPageCount = bookNodes.length%everyPageCount==0?parseInt(bookNodes.length/everyPageCount):parseInt(bookNodes.length/everyPageCount+1); document.getElementById("maxPageCount").innerHTML = maxPageCount; sendNextPage(); } } } //前一页按钮 function sendPreviousPage(){ var pageFirstItem = 0;//记住上一页的第一项的索引 if(bookIndex%3 == 0){ pageFirstItem = bookIndex - everyPageCount * 2 + 2; } else if(bookIndex%3 == 1){ pageFirstItem = bookIndex - everyPageCount * 2 + 1; } else if(bookIndex%3 == 2){ pageFirstItem = bookIndex - everyPageCount * 2; } if(currentPage == 0 || currentPage == 1){ alert("当前页已经是第一页!"); return; } // if(pageFirstItem < -1){ // alert("当前页已经是第一页!"); // return; // } if(pageFirstItem >= -1){ bookIndex = pageFirstItem; currentPage--; document.getElementById("currentPage").innerHTML = currentPage; for(var i = 0; i < everyPageCount; i++){ var imgTag = "img" + (i+1).toString(); var desTag = "des" + (i+1).toString(); if(bookIndex < bookNodes.length - 1){ bookIndex++; displayItem(bookIndex,imgTag,desTag,1); } else{ displayItem(bookIndex,imgTag,desTag,0); } } } } //下一页按钮 function sendNextPage(){ var pageEndItem = bookIndex + everyPageCount;//下一页面最后一项的索引 if(pageEndItem <= bookNodes.length + 1){ currentPage++; document.getElementById("currentPage").innerHTML = currentPage; for(var i = 0; i < everyPageCount; i++){ var imgTag = "img" + (i+1).toString(); var desTag = "des" + (i+1).toString(); if(bookIndex < bookNodes.length - 1){ bookIndex++; displayItem(bookIndex,imgTag,desTag,1); } else{ displayItem(bookIndex,imgTag,desTag,0); } } } // else if(currentPage + 1 == maxPageCount){ // alert("当前页是最后一页!"); // return; // } else if(pageEndItem > bookNodes.length){ alert("当前页是最后一页!"); return; } } //显示指定索引的BOOK项目到指定的页面位置 function displayItem(bookIndex,imgTag,desTag,flag){ if(flag == 1){ var imgString = null; var desString = null; var bookImg = bookNodes[bookIndex].getElementsByTagName("Img")[0].childNodes[0].nodeValue; //alert(bookImg); var bookName = " 书名: " + bookNodes[bookIndex].getElementsByTagName("BookName")[0].childNodes[0].nodeValue; var authors = " 作者: " + bookNodes[bookIndex].getElementsByTagName("Authors")[0].childNodes[0].nodeValue + "
"; var isbn = " 出版号: " + bookNodes[bookIndex].getElementsByTagName("ISBN")[0].childNodes[0].nodeValue + "
"; var price = " 出版年: " + bookNodes[bookIndex].getElementsByTagName("VerYear")[0].childNodes[0].nodeValue + "
"; var quantity = " 价格: " + bookNodes[bookIndex].getElementsByTagName("Price")[0].childNodes[0].nodeValue + "
"; var varYear = " 库存数量: " + bookNodes[bookIndex].getElementsByTagName("Quantity")[0].childNodes[0].nodeValue + "
"; imgString = ""; desString = bookName + "
"; desString += authors; desString += isbn; desString += varYear; desString += price; desString += quantity; desString += "" + "将这本书加入购物车(购买)"; //alert("" + "将这本书加入购物车(购买)"); document.getElementById(imgTag).innerHTML = imgString; document.getElementById(desTag).innerHTML = desString; } else{ document.getElementById(imgTag).innerHTML = ""; document.getElementById(desTag).innerHTML = ""; } } //利用服务器Session保存购物车内容 function addRemoveItem(action,bookName){ if(action == 'add'){ var url = "/ManageCartServlet?action=" + action + "&bookName=" +encodeURIComponent(bookName) + "&value=" + Number(new Date); xmlHttpRequest.open("GET", url, true); xmlHttpRequest.onreadystatechange = getData; xmlHttpRequest.send(null); } else{ var url = "/ManageCartServlet?action=" + action + "&bookName=" +encodeURIComponent(bookName) + "&value=" + Number(new Date); xmlHttpRequest.open("GET", url, true); xmlHttpRequest.onreadystatechange = getData; xmlHttpRequest.send(null); } } //回调函数从服务器端获取结果数据并解析 function getData(){ if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200){ //alert("Server Success!"); var result = xmlHttpRequest.responseXML; var bookNodes = result.getElementsByTagName('BOOK'); var bookNameNodes = result.getElementsByTagName('BookName'); var quantityNodes = result.getElementsByTagName('Quantity'); var spantag = document.getElementById('cart'); spantag.innerHTML = ""; for(var i = 0; i < bookNodes.length; i++){ if(window.ActiveXObject){ spantag.innerHTML += " " + bookNodes[i].firstChild.text; spantag.innerHTML += " --> "; spantag.innerHTML += " " + bookNodes[i].lastChild.text; spantag.innerHTML += " "; spantag.innerHTML += " " + "" + "从购物车删除这本书"; spantag.innerHTML += "
"; } else{ spantag.innerHTML += " " + bookNameNodes[i].firstChild.nodeValue; //spantag.innerHTML += " " + bookNodes[1].firstChild.textContent; spantag.innerHTML += " --> "; spantag.innerHTML += " " + quantityNodes[i].firstChild.nodeValue; //spantag.innerHTML += " " + bookNodes[1].firstChild.textContent; spantag.innerHTML += " "; spantag.innerHTML += " " + "" + "从购物车删除这本书"; spantag.innerHTML += "
"; } } } } Cart.html-->页面显示使用的HTML文件 购物车示例 总共页----当前第


您的购物车:


ManageCartServlet.java-->实现购物车信息存储的Servlet文件 import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import javax.servlet.ServletException; import java.io.IOException; import java.util.Hashtable; import java.util.Iterator; public class ManageCartServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action")==null?"":request.getParameter("action"); //System.out.println("action:" + action); String newItem = request.getParameter("bookName")==null?"":request.getParameter("bookName"); //System.out.println("newItem:" + newItem); HttpSession session = request.getSession(true); Hashtable ht = new Hashtable(); String cartXml = ""; //当前已经处于购物页面,并且已经处于购物状态. if(session.getAttribute("cart") != null){ //System.out.println("已经处于购物状态"); ht = (Hashtable)session.getAttribute("cart"); //添加购物项目 if("add".equals(action)) { //已经存在于购物车中的项目 if(ht.containsKey(newItem)){ Integer count = (Integer)ht.get(newItem); count ++; ht.put(newItem, new Integer(count)); session.setAttribute("cart", ht); cartXml = toXml(ht); response.setContentType("text/xml"); response.getWriter().write(cartXml); } //购物车中不存在的项目,现在新增加. else{ ht.put(newItem, new Integer(1)); session.setAttribute("cart", ht); cartXml = toXml(ht); response.setContentType("text/xml"); response.getWriter().write(cartXml); } } //删除购物项目 else if("remove".equals(action)){ //System.out.println(ht == null); Integer count = (Integer)ht.get(newItem); //System.out.println(count == null); count --; if(count == 0){ ht.remove(newItem); } else{ ht.put(newItem, new Integer(count)); } session.setAttribute("cart", ht); cartXml = toXml(ht); response.setContentType("text/xml"); response.getWriter().write(cartXml); } } //初次进入购物页面 else{ //System.out.println("初次进入购物页面"); ht.put(newItem, 1); session.setAttribute("cart", ht); cartXml = toXml(ht); response.setContentType("text/xml"); response.getWriter().write(cartXml); } //System.out.println(cartXml); } //将集合的内容转换为字符串形式组成的XML数据 public String toXml(Hashtable ht) { StringBuffer xmlDoc = new StringBuffer(); xmlDoc.append("\n"); xmlDoc.append("\n"); for (Iterator iter = ht.keySet().iterator(); iter.hasNext();) { String item = (String)iter.next(); int Quantity = ((Integer)ht.get(item)).intValue(); xmlDoc.append("\n"); xmlDoc.append(""); xmlDoc.append(item); xmlDoc.append("\n"); xmlDoc.append(""); xmlDoc.append(Quantity); xmlDoc.append("\n"); xmlDoc.append("\n"); } xmlDoc.append("\n"); return xmlDoc.toString(); } } 备注:示例中使用的图片请在附件中下载! 部署说明:所有源代码以及相关文件在附件上传,只需要在IDE工具中根据以往的Java Web项目创建,然后拷贝文件到src和WebRoot就OK了。。。
编程百科
2020-08-27 14:07:59