介绍一下怎样采用开源的 Spring,Hibernate以及Struts构建一个轻量级的架构。

一、整体架构介绍
    在软件工程领域,为了降低模块耦合度,提高模块的可重用性,分层一直是广为采纳的一个方法。其实分层还可以使开发人员专注于某一层进行开发,使得软件开发的分工变细,提高生产效率(堪比福特发明的流水线生产汽车的做法,各个工人负责特定部件的生产,最后组装)。
   
一个企业级的java应用,通常分为以下几层:UI层,业务逻辑层,数据持久层,域对象层。下面对这几层分别作简要介绍:
1.     UI层:负责与用户交互,包括:接受用户的请求,把处理结果返回给用户。这里我们采用struts来UI层,虽然比起Tapestry以及JSF这些事件 驱动的表现层技术而言,Struts的设计显得有些老土,但它目前仍是表现层事实上的标准,所以我们还是选用它。
2.     业务逻辑层:主要负责具体的业务处理。通过Spring的IOC以及AOP实现各个功能的耦合相连
3.     数据持久层:主要负责与底层的数据库打交道。这里我们采用Spring封装的Hibernate操作来简化实际的编码。主要的操作为CRUD(create ,read,update,delete)
4.     域对象层:具体的实体类,如老师,学生等等这些具体的类(注意:需要与数据库中的某一标对应)。
以上只是简单介绍了各个层的划分以及各层所对应的开源框架,要详细了解各层的具层信息,需要访问 struts,hibernate,spring的官方网站。
二、实例分析
实例说明:一个网站登录的例子,比较简单,但能说明各层是如何协调工作的。
工具:jdk1.6,eclipse3.2,myeclipse8.6,mysql5.0,tomcat7,至于这几个工具到底该怎么装这里我就不多说了,大家不清楚的可以到网上搜搜。下面是具体操作步骤:
预备工作:用mysql创建一个test数据库,再创建一个user表,再创建两个字段username和password。脚本如下

DROP DATABASE IF EXISTS `test`;
CREATE DATABASE `test`
USE `test`;

CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(30) NOT NULL default '',
`password` varchar(30) default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
打开myeclipse的database explore透视图

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图一)



右键单击左侧的空白区域 ,点击 new 按钮

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图二)



单击“configure database driver”来配置数据库的驱动,你必须有mysql的jdbc驱动 ,没有的到mysql的官方网站上下载。

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图三)



测试数据库配置是否成功。

1.     新建一个myeclipse的web工程

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图四)



2.     引入Spring包
右键工程名

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图五)



 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图六)



注意:这里为了省得以后再添加spring的相关包,所以一次性的选中了所有的包。选中
Copy选项,它会把这些包拷贝到/WebRoot/WEB-INF/lib目录下,方便以后的实际部署。

3.添加hibernate

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图七)



系统会检测到该工程已经添加了Spring包,选择使用Spring的配置文件

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图八)



点击 next

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图九)



点击 next

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图十)



点击 next

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图十一)



最后点击Finish按钮即可。
4切换到database explore视图,右键 点击 user 表的“Hibrnate Reverse Engineering”

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图十二)



弹出如下窗口

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图十三)



点击 “next”

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图十四)



再单击finish
    在包视图中 可以看到 src下多了一个名为vo的package以及该包下的四个文件

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图十五)



为了更加直观地显示分层,我另建了一个名为dao的package,并把UserDAO.java移到dao中

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图十六)

 


同时注意在applicationContext.xml中把对UserDAO的引用部分也作相应修改。
5.     建立业务逻辑层代码
新建一个名为service的包,再在里面建立一个Service类,代码如下
 

package service;import java.util.List;import vo.User;import dao.UserDAO;public class Service {private UserDAO userDao;public UserDAO getUserDao() {return userDao;}public void setUserDao(UserDAO userDao) {this.userDao = userDao;}public boolean isValid(User user) {//判断用户是否合法 List result = userDao.findByExample(user);if (result.size() > 0)return true;elsereturn false;}}



同时在applicationContext.xml中添加如下配置
<bean id="service" class="service.Service" singleton="false">
        <property name="userDao">
              <ref bean="userDao" />
        </property>
    </bean>

6.配置UI层
  添加struts包,方法同添加spring一样

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图十七)



配置struts-config.xml文件,在空白区域右键单击 new 一个 action ,actionForm ,jsp

 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图十八)



 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图十九)



 

使用myeclipse集成struts,hibernate,spring的一个示例程序(图二十)



下一步
对forward作设置,增加succeed转到welcome.jsp,fail转到login.jsp

在WebRoot目录下建立一个welcome.jsp文件,显示用户登录成功后的欢迎信息。

6. 把strutsspring连接起来
6.1修改struts-config.xml注意红色字体部分
 

<actionattribute="loginForm"input="/login.jsp"name="loginForm"path="/login"scope="request"type="org.springframework.web.struts.DelegatingActionProxy"><forward name="fail" path="/login.jsp" /><forward name="succeed" path="/welcome.jsp" /></action>

 



    再在strut-config.xml中添加如下代码
 

 

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"><set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" /></plug-in>>6.2修改applicationContext,增加以下内容<bean name="/login" class="web.action.LoginAction"singleton="false"><property name="service"><ref bean="service" /></property></bean>

 

6.3修改LoginAction.java部分代码,增加一个service变量,以及其 get/set方法(主要用于Spring IOC)。代码如下:

 

/** Generated by MyEclipse Struts* Template path: templates/java/JavaClass.vtl*/package web.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import web.form.LoginForm;import service.Service;import vo.User;/*** MyEclipse Struts Creation date: 09-27-2006** XDoclet definition:** @struts.action path="/login" name="loginForm" input="/login.jsp"* scope="request" validate="true"* @struts.action-forward name="fail" path="/login.jsp"* @struts.action-forward name="succeed" path="/welcome.jsp"*/public class LoginAction extends Action {/** Generated Methods*//*** Method execute** @param mapping* @param form* @param request* @param response* @return ActionForward*/private Service service;public void setService(Service service) {this.service = service;}public Service getService() {return service;}public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method // stub User user = new User();user.setPassword(loginForm.getPassword());user.setUsername(loginForm.getUserName());if (service.isValid(user))return mapping.findForward("succeed");elsereturn mapping.findForward("fail");}}

 

  至此一个简单的登录已经做成。剩下的工作就是打包并发布你的应用了。 

 

转自 http://www.cnblogs.com/chenbg2001/archive/2010/06/12/1757372.html

  • 由 yongfeng.yuan 于 2010年12月6日 发表在 技术文章 ( web  service  )
 

« 上一篇   |  

 

“使用myeclipse集成struts,hibernate,spring的一个示例程序”0 条评论了

Leave a Reply

 
  • Powered By Z-Blog Copyright;2009-2009 blog.hit.edu.cn All Rights Reserved 哈工大网络与信息中心
    Created by ScriptPlazza