新版大富翁练功场-设计-MVC 结构 (0分)

  • 主题发起人 主题发起人 yysun
  • 开始时间 开始时间
Y

yysun

Unregistered / Unconfirmed
GUEST, unregistred user!
我觉得我们应该采用比较高级一些的结构。
有点倾向采用 struts - http://jakarta.apache.org/struts
先提供两篇参考文献给大家。
http://www-900.ibm.com/developerWorks/java/j-struts/index.shtml
http://www.jspinsider.com/tutorials/jsp/struts/strutsintro.html
 
我真的服了yysun,你还有什么东西没碰过?
 
http://jakarta.apache.org/struts/userGuide/resources.html
http://www.onjava.com/pub/a/onjava/2001/09/11/jsp_servlets.html
 
英文文章看的有些吃力呀。。。
:(
得加把劲了
不过孙老大: 是要把dfw 改写一下吗》》?
 
惨了!都看不懂啊!看来我要被淘汰了
 
wsn, 不是要重新改写大富翁论坛,而是要新建 大富翁练功场。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=799246
http://www.richsearch.com/lgc/whitepaper.html
我们已经有了用例图 http://www.richsearch.com/lgc/design/docs/lgc-usecase-0.1.gif
我一直在想从 use case diagram 进入到 class diagram,sequencec diagram 的理论依据
是什么?这下好了,struts 的 ActionMapping 概念正是我所需要的。
 
:(
根基太浅
老大的说的没太看明白
不知哪里有case工具的使用介绍,我从没用过这方面的东西
什么UML之类的弄的我犀利糊涂的

因此求助老大了
 
structs太重了吧?...很复杂的...
同样用MVC,也不一定要用这么复杂的结构。
其实Model-View-Controller它的含义中本来很简单。
我觉得实施structs是一件相当吃力的事情。
 
struts 从文档来看,还不算太复杂,源程序才 1M。
刚刚下载了一个工具 struts console - http://www.ejcenter.com/struts/console
用起来还真不错。
 
我下载的key怎么不行?
community edition 1.0, Local installation,java版
它带的key文件说是无效。
谁有key,麻烦给我发一个
tiger_zsch@21cn.com
谢谢
 
最初设想采用 MVC 的时候只知道大名鼎鼎的 struts,就在这里提出考虑使用 struts。
随着进一步的研究发现 struts 通过集中转发机制建立的全局 C - Control 并不很实用,
“具体实现起来,可能复杂程度和开销的增加会大于可见的得益”。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1000165
struts 的 V - View 部分,象.NET 的 Web Control那样,在 HTML Tag 上再套上一层,
失去很多透明性,目前觉得也没有多大意思。V 部分我一向主张用 XSLT。
这时适逢 JSTL 1.0 (标准TagLib) 发布。让我看到网页级(非全局)MVC 的曙光。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=995899
下面这个就是一个典型的练功场网页程序: dispprj.jsp
<%@page contentType="text/html;charset=gb2312" pageEncoding="gb2312"%>
<%@ taglib prefix="lgc" uri="http://www.richsearch.com/taglibs/lgc" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/ea/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jstl/ea/xml" %>
<lgc:useAdapter id="pm" action="display" adapter="com.delphibbs.lgc.adapter.ProjectAdapter"/>
<c:set var="xslt">
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="gb2312"/>
<c:import url="xsl/layout.xsl" charEncoding="gb2312"/>
<c:import url="xsl/dispprj.xsl" charEncoding="gb2312"/>
</xsl:stylesheet>
</c:set>
<x:transform xsltText="${xslt}" xmlText="${pm.xml}"/>
这个 JSP 本身是个网页级的 C,它控制了 M (也就是 adapter) 操作数据库,返回 xml,
接着它控制了 XSL 的合成,最后转化得到 html。
下次有时间,给大家介绍一下 Module 部分的 adapter 的实现。
 
显示这部分倒是没问题,但是user input的validate呢?
我正在看webwork,webwork和jstl感觉很象。
关于你说的code generator,我找到一个蛮不错的:
http://www.tallsoftware.com/lowroad/index.html
她生成的是struts代码。
 
4月19日的 JSTL Beta 2 配合 JSTL 1.0 Proposed Final Draft 作了些改动,
<x:transform> 的 xsltText 换成了 xslt,xmlText 换成了 xmt。
所以,我们的程序也必须跟着改。
<%@page contentType="text/html;charset=gb2312" pageEncoding="gb2312"%>
<%@ taglib prefix="lgc" uri="http://www.richsearch.com/taglibs/lgc" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/ea/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jstl/ea/xml" %>
<lgc:useAdapter id="pm" action="list" adapter="com.delphibbs.lgc.adapter.ProjectAdapter"/>
<c:set var="xslt">
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="gb2312"/>
<c:import url="xsl/layout.xsl" charEncoding="gb2312"/>
<c:import url="xsl/${pm.forward}.xsl" charEncoding="gb2312"/>
</xsl:stylesheet>
</c:set>
<c:catch var="err">
<x:transform xslt="${xslt}" xml="${pm.xml}"/>
</c:catch>
<c:out value="${err}"/>
曹晓钢, 我设计了一个简单的 JSP Tag,useAdapter,
类似于标准的 useBean,用来创建一个 Bean,同时多做两件事情:
1、把 pageContext 对象传进去
2、用 reflection,调用这个 Bean 的一个方法 action="display" 或 action="list"
这样这里就可以做用户输入检验了,然后设计一个退路(类似struts里的forward)
但是,还没有最完善,我不喜欢上面的 url="xsl/${pm.forward}.xsl" 那一段。
也许会再编个 JSP Tag 来统一处理 forward 和 skin 的问题。

 
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1083847
我翻译的struts中文用户指南。
我越来越觉得Struts非常不错。就是你所说的,关于action的adaptor模型。
至于JSTL,我只觉得format和i18n做得不错,而你上面贴子里说的,还要自己实现adapter模块,
为什么不能用struts的adaptor机制呢?在struts的基础上使用JSTL并没有矛盾。
我这两天认真的翻译了一遍struts的用户指南,其实他提到的很多东西我们自己的工程中都已经
有雏形了,包括form bean.但是没有它定义的规整。
对于你说用XML+XSL实现用户界面,我还是有一些疑虑。
你上面的例子,抛弃了struts里面的formbean,使用XSL渲染实现从java form到HTML form的映射,
这个本身并不复杂,我在那个讨论java bean/RDBMS/xml/http form之间的关系的贴子中也想到过用这种方式,
但是问题是对于客户端form自动装载和校验还需要自己实现。
我对Struts还是有所意见的。我认为不必要为每一个Form都实现相应的Form bean。在我们的工程中
我们使用一个标准的类从提交的form中提取所有的property,放到一个统一的generic form bean对象中,然后把这个对象
送交到Action。
我希望的是实现自动化的validate.也就是说为每一个form的元素指定一个validate的格式,
这个格式可以是类似于正则表达式的(可以组织为XML,包含字段名,格式),然后上面这个
generic form bean自行进行格式上的validate,而Action class才去进行逻辑上的validate.
值得一提的是,这个validate的格式是通用的,也就是说,client端在提交form之前已经可以用
同样的格式进行一次校验了。
至于输出,如果使用XML,好处是比较清晰,坏处是在XSL中必须仍然进行构造html tag。
我们可不可以采用Struts + JSTL,用Struts的form bean +Action的结构,而输出的View用
XML+XSL解决?
 
> 我们可不可以采用Struts + JSTL,用Struts的form bean +Action的结构,而输出的View用XML+XSL解决?
正是我想的。还记得这个吗? http://www.javaworld.com/javaworld/jw-02-2002/jw-0201-strutsxslt.html
经过我的一些实践,了解了 MVC 的原理,以及其在 web app 中的特定形式 form, adapter, forward ...
做过一些东西后就自然想到抽象,做 generic 的东西,这时我发现自己走到和 struts 一条路
上去了 - 一个中央 servlet 来转发请求(dispatch request)。所以,我最近开始第二次研究 struts。
看看有什么值得借鉴的地方,甚至也考虑才用其的结构,部分才用其功能。
 
顺便说一句,对webwork很失望。webwork没有提供可以和struts匹敌的MVC结构,很象是一个
jSTL的翻版,加了一些简单的Action功能。forget it ..
也有可能是我理解还不深。
 
下面得提一下的是 框架(framework)和自动代码的 比较。
当一个系统的概念定型、数据库建立后。可以把数据库和一些逻辑规则写成 XML。
框架 就是输入包含数据库规则和逻辑规则的 XML,就能得到运行系统。运行的是框架。
您所说的通用用户检验和通用From Bean就是这种框架。
而自动代码,就是用一个工具输入包含数据库规则和逻辑规则的 XML,得到一批源程序
Java Bean,JSP,XSL,JavaScript。运行的是生成的程序。
框架 的好处是通用性,今天输入“练功场”的规则XML,您得到练功场系统。
同样的框架,明天输入“富翁商店”的规则XML,就得到富翁商店系统。框架不用动,
或者很少动。难点是做到完全通用比较难,也许正是因为这个 struts 才需要
“为每一个 Form 都实现相应的 Form bean”。
自动代码 则提供了更多定制的灵活度,小到字段显示格式,大到网页结构,并且能
减少一层依赖关系,减少一个翻译层。
对我来说,比较偏向于自动代码。我现在做的是试图找出 web app 的通用模式(pattern)
然后做一个自动代码工具来的到源代码。
具体一点的例子:
规则 XML:
<field><name>password</name><validation>notNull<validation></field>
框架:
boolean genericValidation(field, input) {...}
框架在运行时,这个函数读取规则 XML,然后对用户输入进行检验。
自动代码:
在设计时,自动代码工具读取规则 XML,生成:
boolean passwordValidation(input) {...}
在运行时,直接运行这个函数。
 
后退
顶部