J2EE程序框架学习总结

这篇博客总结了J2EE程序框架的学习,重点介绍了多层架构中的模型层、控制层和视图层的关系。强调了数据传输需通过控制层,服务层通过DAO模式与数据访问层交互。此外,讨论了程序框架设计方法,包括需求分析、系统设计、业务实体和服务逻辑设计,并提到了使用Spring和Hibernate进行业务和持久层实现。最后,概述了视图与控制层的连接方式,如Struts和Spring MVC的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.      到了后面就思路应该很清晰:控制层调用服务层,服务层调用数据访问层的类方法来完成服务。就是类之间的调用而已.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值