1. J2EE应用程序一般遵循的多层框架结构:
模型层一般包括数据访问层,数据服务层。模型层的业务方法怎么连接到控制层,为视图层服务呢?
有两个要点:
1)视图层的数据要传到模型层,submit后的数据必须通过控制层传到模型层。要想后台的数据传到前台,也需要经过控制层。控制层控制你的数据怎么跑,模型层服务层是专注于服务。在代码上看,一般是在控制层new一个服务层的对象,控制响应的动作。一句话,记住模型的层次关系!
User user = as.findUser(username,password);
if (user !=null && !(userinstanceof Customer)
&&!(userinstanceof Merchant)) {
sessionMap.put("locked",false);
sessionMap.put("admin",user);
return"success";
}
return"welcome";
}
FindUser就是数据服务层的一个方法。
2) 至于服务层怎么实现服务,怎么和数据库交流呢?
首先,要明白:服务层不是直接和数据库交流,而是通过数据访问层进行为上层服务。
最常见的是数据访问层通过Hibernate的HibernateDaoSupport进行操作,这种方式很简单,而且不需要用户理解下层数据是怎么完成操作的,也就是DAO模式的典型应用。
DAO模式是J2EE的核心模式的一种,主要目的是在业务核心方法和具体的数据源之间增加一层。
业务核心 <-> DAO <-> 数据源那么我们会很好奇,服务层总需要数据来完成服务吧,可是怎么完成的呢?
方式是:服务层调用数据访问层的的方法来完成服务的。一般的文件包是类似.Dao的文件。.Dao.impl一般就是.Dao的具体实现。也就是接口的概念。DAO里的文件一般就是对实体进行增删该查。
最后谈谈一般设计程序框架的方法,确定程序的代码层次有哪些
设计的时候,考虑好有哪些动作,哪些实体,哪些通用的功能可以封装起来
设计的流程:
->需求分析
(系统设计部分)
->系统框架设计(遵循多层次的J2EE架构模式)
->业务实体设计:一个系统的业务实体在内存中表现为实体域对象,在数据库中表现为关系数据库。设计内容包括创建模型实体对象,设计关系数据模型,创建映射文件
->业务逻辑设计(最常见的就是利用spring做数据服务层,利用hibernate做持久层)->数据库的设计(概念模型,物理模型)
->考虑通用功能的实现(提取出很多模块共享的部门,比如分页查询,事务等
->具体的各个模块的实现
实现过程:
1. 视图界面和控制层连接起来
目前,举两种简单例子
1)通过struct
直接在JSP的form里面声明action,再在struct里面配置下action对应的控制类
JSP页面: <form name="uform" id="cooperation"action="Regist.action"
配置文件 <action name="regist" class="coe.action.merchant.AccountAction"method="regist">
进到相应的类AccountAction:
public class AccountAction extends ActionSupport{...}
2)通过spring
JSP页面:<form method="post"action="AdminTianjiaXiugai.do?id=<%=tea !=null?((Teacher)tea.get(0)).getTeacherId():""%>"%>
配置文件:用Spring去管理映射,
<!--接受请求的login.do,转入控制器loginAction -->
<beanid="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<propkey="TeaTianjiaXuanzeTiankong.do">TeaTianjiaXuanzeTiankongAction</prop>
最后找到对应的控制类:
<beanid="AdminTianjiaXiugaiAction"class="org.testonline.action.AdminTianjiaXiugaiAction">
<propertyname="methodNameResolver">
<refbean="paraMethodResolver"/>
</property>
2. 到了后面就思路应该很清晰:控制层调用服务层,服务层调用数据访问层的类方法来完成服务。就是类之间的调用而已.