好·色之徒
已经转移到 好·色之徒--我的博客、我的生活

在上一篇文章中谈论了有关MVC中C的部分,这里开始说明如何搭建M的部分,这里的M,不当当是简单的数据模型,更多的涉及到了业务逻辑的成分。
上一篇中的UctServlet类实现了控制,提到了用于控制流程的数据库中有一个字段alink(值为HAAap),里面的内容就是现在要讲解的部分。 从UctServlet,到交由具体某个类来实现业务逻辑,HAAap就是这样一个类,不需要继承特殊的框架体系,完全有自己开发。这里需要明确一点,为了整个应用体系的相对完整性,可以设计一个共通M类(比如这里的UctApSuper),主要负责一些共通的业务和资源。HAAap继承于它。

结合UctServlet类的核心逻辑(可参考不借助任何web框架结构,构建自己的MVC应用程序(1)部分),会通过反射机制首先调用某M类(HAAap)的apexec方法。所以对共通M类(UctApSuper)有这样的设计:
public UctApSuper() {
DBA = new uct.UctDBIO(); //数据源设定
sUser = new uct.UctUser(); //UctUser
psApName = UctUser.getApName();
}

public void apexec(HttpServletRequest preq, HttpServletResponse pres,
HttpSession phtss) throws IOException, ServletException {
try {
this.req = preq;
this.res = pres;
this.uses = phtss;

uhData = this.getPVal(); // Window画面所有的key-value值对,uhData是Hashtable

res.setContentType("text/html");
} catch (Throwable e) {
System.out.println("ApSuper.apexec Throwable = " + e);
this.errPage(req, res, psApName, "ApSuper.apexec :ERROR=" + e);
}
}
设置了一些共通需要的资源
除了上面的以外,在UctApSuper类中还有比如:apfCallJsp(成功后调用jsp资源)、errPage(失败后调用错误资源)等等共通的处理,具体的实现方式以后源码下载中会提供。

下面描述一下具体的M类(HAAap),它继承于UctApSuper类,给出一些代码片断:
public class HAAap extends UctApSuper {
//定义一些画面(通常一个M类会管理从List-input-confirm画面的过程)
private String psListJSP = "HAA/H01010";
private String psInputJSP = "HAA/H01020";
private String psConfirmJSP = "HAA/H01030";
public HAAap() {
}
这里我再列出上一篇文章中提到的控制流程的数据表
alink atype window_id action_id
HAAap BEAN WIN_HGA HAA ----年度计划画面 初始的一种状态
HAAap BEAN WIN_HGA SRDT ----SRDT表示年度计划画面上的检索功能
HAAap BEAN WIN_HGA DTIL ----DTIL表示年度计划画面上的详细画面功能
/**
* 按照画面url上的 ?Window=WINHGA&Action=HAA,来判断应该进入那一逻辑部分
*/
public void apexec(HttpServletRequest preq, HttpServletResponse pres, HttpSession phtss) {
try {
//UctApSuper类的apexec方法,设置共通资源
super.apexec(preq, pres, phtss);
//取得参数Action值,以确认进入那一逻辑部分
sEventType = getPVal("Action");
apinit(); // 该M的一般初始化处理

//判断进入那一逻辑部分
if (sEventType.equalsIgnoreCase("HAA")) {
apmInit(); // 初始画面
} else if (sEventType.equalsIgnoreCase("RINS")) {
apmNew(); // 新增加画面
} else if (sEventType.equalsIgnoreCase("DTIL")) {
apmDetails(); // 详细画面
} else {
this.apfFwkErr(sEventType);
}

//共通结束处理
apexit();
} catch (Exception e) {
errPage(req, res, "apexec", e); // ERROR
} finally {

}
}

下面依次是apinit();apmInit();apmNew(); ......等的具体处理内容,举一例:
private void apmDetails() {
try {
...业务逻辑
apfCallJsp(psInputJSP); // 调用JSP资源
} catch (Exception e) {
errPage(req, res, "apmDetails", e); // ERROR
} finally {

}
}
}

这些就是M类的处理过程,代码作了相应修改

不借助任何web框架结构,构建自己的MVC应用程序(3)   有个论坛

Feedback

# re: 不借助任何web框架结构,构建自己的MVC应用程序(3)  回复  更多评论   

2006-11-02 14:12 by fef
你是否才华横溢而无奈没有满意的工作,

没关系,全球最大最早的网上软件工厂已经腾空出世了!

即可注册米鼠网会员,就可兼职,做项目,赚大钱。
大家,推广米鼠6,8群。米鼠6,8群32141736,32141620


# re: 不借助任何web框架结构,构建自己的MVC应用程序(3)  回复  更多评论   

2006-11-02 14:13 by fef
你是否经验不足而求职碰壁。

没关系,全球最大最早的网上软件工厂已经腾空出世了!

即可注册米鼠网会员,就可兼职,做项目,赚大钱。
大家,推广米鼠6,8群。米鼠6,8群32141736,32141620

只有注册用户登录后才能发表评论。


网站导航:
 

posts - 39, comments - 91, trackbacks - 0, articles - 1

Copyright © 城市劣人

好·色之徒