【IT168 技术文档】(本故事除了部分点明道姓并具有故事详细发生的具体时间点地等部分情节以外,其它内容纯属虚构,若有雷同,纯属巧合。)
谈到B/S,谈到J2EE,特别涉及到Java Web的部分,我们就会想到三层或多层构架,为什么要多层,肯定是因为一两层已经无法达到用户的需求,技术进步了,三层或多层很多时候其系统的健壮性、可维护性等都较之提升了很多。
在本系列文章的前两篇中,我们基本上没有涉及到Spring技术的部分,因此,今天换换味,主要给出一个比较简单、实用,也是最庸俗的spring示例。也即实现一个数据表的添删改查操作,笔者采用struts+hibernate+spring黄金庸俗组合来实现。示例比较简单,因此spring的高手及高高手可以忽略示例中的技术细节部分,当然,也请有时间的前辈不吝赐教有关代码的书写方法及技术。
主演:Spring、系统设计师、数据库开发工程师、Web开发工程师、主程序员、系统集成及部署工程师。
配角:数据库管理员、美工及页面设计MM、html,JSP、Struts、My Sql、hibernate。
下面就是直杀正题吧!
第一步:系统设计
现在你扮演的是系统设计师角色,系统设计师通常都不用管也不想知道你要用什么方法去实现他的东西,他只给你画出草图,制订规矩、条款等,他甚至可以不用知道Java中还有Class这个东西存在。他也不用管你用什么方式存放数据,用什么数据库中间件来操作数据。
但他站得高,看得远,为了以后的可维护性、灵活性,考虑到会使用多种数据库,以及多种数据库中间件等,因此会先对系统设计建模,通过UML等方式来描述系统流程、组织结构等。同时还会通过使用接口定义出相应的商业逻辑。下面是本例子中的两个业务逻辑层的接口。
第一个是“用户”这一实体的描述,IUser.java,代码如下:
package com.easyjf.example.business;
public interface IUser ...{
public String getBirthday();//生日
public void setBirthday(String birthday);
public String getCid();//主键cid
public void setCid(String cid);
public String getEmail();//用户邮件email
public void setEmail(String email);
public String getIntro();//用户简介intro
public void setIntro(String intro);
public String getPassword();//用户密码password
public void setPassword(String password);
public String getTel() ;//用户电话tel
public void setTel(String tel);
public String getUserName();//用户名userName
public void setUserName(String userName);
}
第二个是围绕“用户”这一实体所提供的有关服务描述,IUserService.java,代码如下:
package com.easyjf.example.business;
import java.util.Collection;
import java.util.List;
public interface IUserService ...{
public IUser newUser(); //创建一个新的用户
public IUser read(String cid);//根据主键cid读取一个用户
public List query(String scope,Collection paras);//用户查询
public IUser readByName(String userName);//根据用户名读取一个用户
public IUser login(String userName,String password,String ip);//用户登录
public boolean save(IUser user);//保存用户
public boolean update(IUser user);//修改用户
public boolean del(IUser user);//删除用户
}
![]()
除了上面这些,系统设计师还会根据系统需求给出一些具体的设计方法,对系统各层之间的接口规范,Action层使用的框架或模式等。他的工作就算完成了,下面就该程序员、数据库管理员以及页面设计人员等表演了。这些角色在我们实际项目中很多时候是同步进行的,可谓花开N朵。然而本文为了能让新同学把这个示例能跑起来,所以就简单分了一下步骤,以便新同学按步骤进行。
