论坛首页 Java企业应用论坛

BS体系结构(三)a3之视图

浏览 2140 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-01-02   最后修改:2010-01-02

因为ssh划分的比较细,所以我决定把它们按照现在的框架分成3部分来说

1 页面细节,现在以上个User的add.jsp为例:
可以用的方案有: addPage.jsp-----add.jsp-----index.jsp

这是addPage.jsp

<html>
<head></head>
<body>
<form method="get" action="add.jsp">
<input type="text" name="username"/><br/>
<input type="password" name="password"/><br/>
...
<input type="submit" name="submit" value="提交"/>
</form>
</body>
</html>

 这是add.jsp 是主要需要进行编程的地方

<%! Logger log = Logger.getLogger("XXX.jsp")%>       //------------------1

<%

log.debug("show XXX.jsp page");

AppEngine app = AppEngine.getInstance();               //--------------------2

User user = new User();                                           //---------------------3

user.setUsername(request.getParameter("username"));

...

UserDao dao = app.getModule("UserDao");               //---------------------4

dao.add(user);

request.getRequestDispatcher("index.jsp").farword(request,response); //5

%>

 上面的代码段我进行了标注,下面分别看看标注的各段所起的作用:

  • 1标注属于增加的功能, 这些可有可无 ,暂时可以不去考虑
  • 2是获得底层数据层
  • 3获得标注为 获得表单数据, 为后续提供数据,这属于非常重要的功能
  • 4操作数据层
  • 5根据数据层操作进行转发

除开了1外, 其他的都是整个jsp系统所不可缺少的功能.而且也是jsp系统 通用的编码方式

 

现在,我讨厌在每个a.jsp--->b.jsp之间,建立转发的ab.jsp转发文件,我想要直接根据配置来进行转发, 不需要每次都去写那千篇一律的类似add.jsp的代码,该怎么办呢?

现在我们不想编写类似add.jsp规则的文件.,但是当前在类似addPage.jsp中又需要到add.jsp转发, 那么, 我们可以使用一套组件, 此组件根据申请的request的Host域内容进行来查找 所需要的数据层操作, 并进行转发.

 



 我在这个组件中使用了Command模式设计, 通过读取配置文件, 然后调用

UserDao dao...

dao.execute(request,response);

这样,所有的转发和执行 都放在了此方法中, 应为系统太过简化, 很多必须的功能都没有, 所以 又定义了一个FilterChain接口 来作为程序执行链.我们需要定义的大部分其他缺少的能力 就可以通过扩展此FilterChain来进行链执行

事实上,很多人一眼就能看明白 ,这就是类似struts1的设计方法, struts1也是使用的Command设计方法,它比此体系多了以下几方面:

  • ActionForm,这个是struts1一直被人诟病的地方,而且它也不是必须的,有更多更好的方法来封装页面消息了 在我们的系统中,我完全可以放任消息的传递不管也没问题的,struts1我想应该是开始效验设计上的考虑吧, 在效验组件没有出来之前,在这层作数据效验是最为方便的
  • ActionMessages,消息结构并不是为web开发人员准备的, 我们需要往页面传递消息用的的这么复杂吗? 这个是为了配合页面的taglib的.所以在这个简单之极的结构中我们是不需要的
  • ActionForward,这是struts1对转发体系的封装. 这个封装是必须的,为了配置上的方便. 不过我们在这里为了简单.直接使用request.getRequestDispatcher("index.jsp").farword(request,response)好了. 
  • ActionCommandBase 这个我也是今天才看到的, 以前的struts1好像没有这个吧. 这个同样是使用了 Command模式, 事实上跟Chain 差不多, 不过Command不讲究顺序, Chain有顺序而已, 这个体系应该是学的xwork: 在整个线程链中加入类似拦截体系的东西.. 不过加入了这个后, struts1里面原先设计的很多固定的功能性方法就不必要了... 我在这里也弄个 扩展FilterChain  哈哈

这个是使用的Command方式的扩展, 当然 还有使用Proxy的扩展,使用jdk的反射,或使用proxy组件之类的

 

proxy组件介绍与设计方法:

struts2大体介绍

 

taglib

freemarker....

待续

  •  
  • 大小: 18.5 KB
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics