#
think in java说:万事万物皆对象。
自从接触java那天起,张口闭口言必称面向对象,你要说自己不知道什么是面向对象,都觉得很没面子。
然而一直到现在,其实我心里都在小声的问自己:面向对象思维,我现在到底领悟了多少?
大家都说:“面向对象的精髓在于考虑问题的思路是从现实世界的人类思维习惯出发的,只要领会了这一点,就领会了面向对象的思维方法。”。多么简单的思想!可是,要从一个现实的世界中分析出一套真正实用的系统来,似乎又没那么简单了吧。仅仅是面向对象的思想以及扎实的java功底就够了吗?
然而面向对象仅仅是告诉我们 “如何做”,却没有告诉我们“怎么做”。比如说,我们根据面向对象,分析出了汽车有四个轮子,有发动机,等等....,于是,我们实现了轮子的类,发动机的类。然而发动机的细节我们无从得之。于是我们打开发动机,看看内部。我们再次利用面向对象的思想,分解出了更小的部件。终于到了无法拆分的零件了。
可是要实现这个真正运转的零件,不就是要用到我们所说的“算法”来实现么,这个时候,面向对象已经帮不上什么忙了。所以,面向对象只是分析事物,认识事物的一种手段而已。
去年底研究了一下sun的petstore,总因为各种事情,终究半途而废了。今天心血来潮的看了一下。打开了sun的服务器以及pointbase数据库,其间猜了半天的密码,装的比较久,都忘记了。呵呵!终于将petstore应用部署了上去(脚本部署就是快 ^ ^),按sun的quickstart提示访问8080端口,却发现怎么都连不上,无奈打开domain下的配置文件一看却发现端口却是 3045。奇怪!
终于出现久违的页面了,第一次访问时,程序自动将数据库结构以及数据导入数据库。过程是点击链接,期间经过2次populating.jsp页面导向,在head中指定<META HTTP-EQUIV=REFRESH CONTENT="0; URL=Populate?success_page=//supplier/populating.jsp%3fforcefully%3d<%=request.getParameter("forcefully") %>&forcefully=<%=request.getParameter("forcefully") %>"来实现,在第一个populating.jsp中访问了petstore\src\com\sun\j2ee\blueprints\petstore\tools\populate\PopulateServlet.java这个类来实现将数据库结构以及数据导入数据库,在第二个populating.jsp中类似手法导向main.screen。真正的首页才展现出来了。这些才仅仅是前奏。
个人感觉WAF框架目前应用虽然似乎并不多见,但总觉得,其中许多思想还是可以借鉴的,深入下去必然有好处。特别是如果应用的架构中需要访问EJB的时候。
WAF是WEB APPLICATION FRAMWORK的简称,是SUN蓝皮书例子程序中提出的应用框架。它实现了MVC和其他良好的设计模式。
开发人员编写的两个xml配置文件定义了WAF的运作参数。Screendefinition.xml定义了一系列的屏幕(screen)。Mapping.xml则定义了某个动作之后应该显示的屏幕,但没有指定屏幕到哪里拿数据。
用户发出一个HTTP请求(*.screen),由TemplateSERVLET屏幕前端控制组件接收,它提取请求信息,设置request对象CurrentScreen属性,再把请求发到模版JSP。模版JSP收到请求后,JSP中的Template标签察看这个当前屏幕,并从屏幕定义文件(Screendefinition.xml)中获取这个屏幕的具体参数,再生成html返回给客户。
假设返回给客户的html中包括了html表单,用户在输入一定数据之后提交,发出一个HTTP请求(*.do)。这个请求被MainSERVLET接收,它提取请求信息,察看动作映射文件(mapping.xml),设置处理这个请求的动作对象(HTTPAction对象),交给requestprosessor对象处理。Requestprosessor对象调用动作对象完成任务,如果需要进一步处理,requestprosessor对象会调用WEBclientcontroler对象的事件处理机制。MainSERVLET在处理完请求之后,从屏幕流管理对象那里得到下一个屏幕,并把请求传给这个屏幕的JSP文件。
值得一提的是WEBclientcontroler事件处理机制最终把HTTP请求的数据传到了EJBAction对象那里处理。这样HTTPAction对象和EJBAction对象形成了两级处理机制,前一级与request对象紧密相关,把数据封装起来形成一个Event对象,再传给了EJBAction对象,后者与Request对象无关。
这个方式可以形成一个session级别的数据处理机制。下图显示了这个方法。HTTPAction1对象处理一个请求,并把数据放到一个状态SessionBean内,HTTPAction2也如此,当HTTPAction3接收到HTTP请求之后,把控制传给EJBAction, 后者获取状态SessionBean数据,处理请求,成功后清控状态SessionBean的内容。这个机制非常适应多个输入页面才能满足一个业务的输入数据的情况(比如购物车)。
中耳炎一点都没见好,反而更严重了,真是痛苦,感觉左耳很不灵,而且涨痛.下午请了假,直奔同仁医院.进去以后就象开罚款单一样.就开了点消炎药和滴耳液,竟然花了快200块.真不知道接下来的媒体叫嚣的医疗改革会成什么样子.
接下来的时间准备研究Front Controller模式了.
实在是无法忍受CSDN blog的速度了,今天决定搬家。
在这里记录下自己的开发心得,给高手批判,给新手借鉴。
今年的夏天北京的雨特别的多,所以显得不是特别热。可是偏偏在这
清凉的夏天,我却上火了。可恶的中耳炎又如期而至了。这是工作
2年后的第一次发作。之前是年年必发。