`
bluky999
  • 浏览: 716022 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在基于servlet的小型应用中使用ajax与DWR

    博客分类:
  • Java
阅读更多

在实际的项目开发过程中,经常会有这样的需求: 需要一个小型的web站点,只有几个页面用于一个会议或者一次主题活动等等,或者是配合宣传某产品或服务,甚至是组织内部的某种表单数据收集等!  

 

一 特点

这种小型应用,在实际业务领域中普遍存在,频繁出现;也许你曾想流水线生产,可是至今也没有人做出像样的来。。。

简单分析一下其特点:

1 前台页面:10个左右(经常是10个以内)的页面,需要以xhtml+css的webstandard为实现技术,以能全部通过w3c验证为标准;

2 只有一个或者两个表单数据需要提交,例如会议注册等;后台需要查询和统计这些数据;

3 只有一个或者两个查询数据的case (实际上大多时候都是不需要查询的,直接罗列)。

 

策略

假如model层你可以自由选择,oracle,mysql,....,derby,SQLite....xml.....plain text.... ;总之把该保存的保存下来即可!

 

那么,我们比较推荐的策略是:

1 Model 层:如上

2 control :还需要control么? 是的,需要;但是就像1+1=2这么简单;

3 view: 就那么几个页面

4 business logic:

   (1 把用户通过页面表单提交的数据保存好;

   (2 根据用户选择查询相关的数据并显示到页面。

 

技术策略:

1 我们忽略对数据源的访问吧,假定你知道怎么做;

2 表单提交或者数据查询时的action: servlet ;

3 业务处理: java bean

4 其实,我们不需要servlet来做太多url方面的事情;仅仅需要它帮我们接受参数并把结果返回即可。

 

三 实例

场景假设:一次会议;客户需要在页面注册;客户需要查询会议演讲者信息;其他静态信息。

 

1 比如我们使用两个表:customer ; speaker

2 DAO: custumerDAO [add,search]

            speakerDAO [add,search]

   Servlet: RegisterServlet ; GetCustomerListServlet(ADMIN)

                GetSpeakerServlet ; AddSpeakerServlet(ADMIN)

   每个servlet都有一个相应的业务方法,以将业务处理隔离。

 

如果还有其他数据源无关的业务需要处理,建议直接使用DWR !

 

 

3 两个表单: 提交注册信息;查询演讲者信息

 

4页面:

index.html :首页

register.html:注册

speaker.html:演讲者查询

其他需要的页面

 

case流程模拟:

1 注册表单:

   客户在register.html填写注册信息,点击提交按钮时,我们不需要提交表单,而是把表单的数据经过验证和包装后,采用XmlHttpRequest发送到 RegisterServlet,RegisterServlet调用注册的业务方法,完成数据添加的任务;然后更新页面以通知客户注册成功或者失败);

 

2 演讲者查询:

    与1类似,把查询参数使用ajax发送到GetSpeakerServlet,该servlet调用查询演讲者的业务方法,然后在页面使用返回的信息更新页面。

 

 

四 总结 优点

 

本文针对基于servlet的小型web应用,提出了采用ajax+DWR的策略来降低开发复杂度,提高开发效率!

 

此策略的优点是:对于java程序员,只要懂得如何使用javabean+servlet即可,至于ajax和DWR ,学习代价相对很低;甚至于你只要通过你的第一个小项目即可熟练。

 

后记:

 

之所以写这篇小文,是因为我不是PHP程序员,虽然我也写python web。因为不管是理论还是实践中,PHP是最好的解决本文所说类型需求的方式!

 

本文提到的策略,比较适合于java web开发人员;你知道,在这个web2.0的时代,人们有很多很多的选择。

作为java程序员,如果遇到上述类型的问题,个人以为采用本文提到的策略是相对比较明智的选择!

可能我们已经不喜欢在这种小应用中使用jsp了,而且我们希望页面的响应速度更快,不想在jsp中放那么多的html 。。。

 

最后顺祝本文提到的“会议”圆满成功!

分享到:
评论
1 楼 bluky999 2008-10-31  
需要补充的一点是:
个人建议在返回数据时能采用JSON格式;这样,你的应用其实可以采用任何一种可行的技术来作为action ;你的后台业务处理可以换作你想要的任何技术类型。

比如,表单数据你可以提交到 register.py 

相关推荐

Global site tag (gtag.js) - Google Analytics