基于Struts+Spring的Web应用设计与实现

时间:2024-04-26 02:51:10 5A范文网 浏览: 论文范文 我要投稿

摘  要  集成Struts、Spring框架技术构建基于J2EE的Web应用可以提高J2EE项目的可重用性。本文介绍了两种流行的开源框架技术Struts和Spring的原理,并将这两种框架技术整合起来应用到实际的Web项目开发中去,从而提高项目代码的复用性及项目开发的效率。

    关键词  J2EE;Struts;Spring 


 

1  引言

    基于J2EE的Web应用系统以其层次性、平台无关性逐渐被大多数的公司所认同,已经成为电子商务主要的解决方案。传统的JSP/Servlet开发模式优势在于直接、简单,对于小型应用可以很方便、快速地进行开发。但是这种不加控制的开发模式往往带来显示、业务和数据的高耦合性,软件难以重用。基于J2EE的框架技术是解决上述问题的重要技术,能够有效地支持大型J2EE Web应用项目的开发。本文通过集成Struts和Spring基于J2EE的框架技术提出了一种构建J2EE应用的框架。

2  Struts框架技术

    The Jakarta Struts项目是由Apache发起的开源项目,是基于MVC分离思想的杰出产品。Struts的Controller是通过Actionservlet对象实现的,这个控制器获得View (JSP)的请求后根据ActionMapping对象调度对应的Model(Action对象)处理业务逻辑,并将获得的处理结果(ActionForward对象)返回给View(JSP)来响应。同时通过ActionForm对象封装数据在Model和View之间交互使用。Struts还通过自定义的标签库丰富了View层的JSP技术,方便了页面设计。下面我们就分别从视图、控制、模型和Struts的配置文件struts-config.xml来介绍Struts的体系结构。    (1)视图。是一组JSP文件,Struts自身包含了一组可扩展的自定义标签库,可以简化创建用户界面的过程。这些JSP文件中没有业务逻辑,也没有信息模型。    (2)模型。模型主要是表示一个系统的状态和业务逻辑。在Struts中,系统的状态主要由ActiomForm Bean体现,对于业务逻辑通常由JavaBean或EJB组件来实现。    (3)控制器。控制器主要由ActionServlet类和Action类来实现,ActionServlet类是Struts框架中的核心组件,主要负责接收HTTP请求信息。根据配置文件struts-config.xml的配置信息,把请求转发合适的Action对象。Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。    (4)配置文件Struts-config.xml。当ActionServlet接收HTTP请求信息时,如何决定把用户请求转发给哪个Action对象呢?这就需要一些描述用户请求路径和Action映射关系的配置信息。在Struts中,这些配置映射信息都存储在特定的XML文件Struts-config.xml中,在该配置文件中,每一个Action的映射信息都通过一个(action)元素来配置。这些配置信息在系统启动时会被读入内存,供Struts在运行期间使用,在内存中,每一个(action)元素都对应一个ActionMapping类的实例。

3  Spring框架技术

    Spring的哲学是在不影响Java对象设计的情况下将Java对象加入到框架中。Spring解决了许多J2EE开发中的常见问题,它不依赖于任何的组件,是一种轻量级的容器,其核心是Bean工厂,用以构造我们所需要的M(Model)。    Spring框架是一个分层的应用程序开发框架,而不是某一层,如Struts或Hibernate都属于单独某一层的框架。Spring致力于在整个应用程序层面架构程序,使程序的各个层面协调一致,从而发挥最大的效能。Spring能整合现有的优秀单层框架,把它们组成连贯统一的框架。Spring框架的模块化完成的非常好。大体上,存在如图1所示的几个模块。 图1 Spring模块图    其中:    Spring核心模块:Spring架构中最为基础、重要的模块。它提供了IoC容器,即依赖注入。其中,BeanFactory是最为重要的概念,对理解IoC和ApplicationContext起到了重要作用。    Spring AOP模块:实现了AOP联盟中定义的AOP编程实现。如提供拦截器实现事务管理。用它来提供非管理环境下申明方式的事务、安全等服务。    Spring Context模块:直接位于Spring的核心模块之上。Spring上下文模块除了继承Spring核心模块的功能外还添加了用于资源绑定、事件移植、资源装载以及装载上下文等功能。这对于Web应用和J2EE应用十分有效。    Spring Web模块:提供面向Web应用集成的功能。其中ContextLoaderServlet和ContextLoaderListener正是Web模块提供的。当同Tapestry、JSF集成时需要使用到Spring Web模块。    Spring DAO模块:提供了JDBC抽象层,使得开发者不用再去编写同RDBMS交互、非业务功能的JDBC代码。而且DAO模块还能够分析RDBMS厂商专有的SQL错误代码。同时能够提供编程方式和声明方式控制事务。    Spring ORM模块:为当前流行的O/R Mapping技术提供集成。借助于Spring框架提供的简单事务声明,开发者能够很容易实现对O/R Mapping中操作的事务控制。Spring Web MVC模块:提供MVC实现,清晰的划分了Web应用中涉及到的各项内容。

4  基于Struts+Spring框架技术的实现

    在项目开发实践中提出了基于Struts+Spring框架的J2EE架构。将这两种框架整合起来用到Web项目开发的不同层。整个架构的结构流程图如图2所示。

 图2 架构的结构流程图    (1)客户端发送一个查询请求,在JSP里提交表单时指定处理表单的path。<form name="spQuery" method="post"action="{root/create/path} /SPInfoManageAction.do"target="bottom" >    (2)在struts-config.xml文件里根据path配置Action的具体名和路径。<action path="/SPInfoManageAction" type="com.mycom.spmanage.spi              nfomanage.action.SPInfoManageAction"unknown="false"validate="true" ><forward name="init"path="/../views/spmanage/spinfomanage/SPInfoQuery.jsp"redirect="false"contextRelative="false" /><forward name="SPBriefInfo"path="/../views/spmanage/spinfomanage/SPBriefInfo.jsp"redirect="false"contextRelative="false" /><forward……/></action> 


  [8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr />   (3)在Action类里根据JSP页传递回的操作类型operType参数来执行具体的方法,生成业务逻辑对象BO的实例,并调用BO的getSpInfoQueryBrief,返回一个结果集。

Private ActionForward spInfoQueryBrief (ActionMapping mapping, HttpServletRequest request,HttpServletResponse response) throws ActionException{ //生成BO类的实例SPInfoManageBO service =(SPInfoManageBO)getBaseService().getServiceFacade("spInfoManageBO"); //用getParameter方法获取查询条件String spShortName = request.getParameter("spShortName");...... //指向业务逻辑对象BO类里的方法,返回结果集try {  coll = service.getSpInfoQueryBrief(mapData);                 } catch (Exception e) {......}...... //返回参数request.setAttribute("spShortName",spShortName);......//指向下一步跳转路径return mapping.findForward("SPBriefInfo");    (4)在applicationContext.xml里配置BO的路径以及所调用的数据库对象DAO<bean id="spInfoManageBO" parent="spmTransactionProxy"><property name="target"><bean class="com.mycom.spmanage.spinfomanage.bo.SPInfo ManageBOImpl"> <property name="spInfoManageDAO"><ref bean="spInfoManageDAO"/></property></bean></property></bean>    (5)在dataAccessContext.xml文件里配置数据库对象DAO具体路径:<bean id="spInfoManageDAO" class="com.mycom.spmanage.spinfomanage.dao.SPInfoManageDAOImpl"><property name="dataSource"><ref bean="dataSource"/></property></bean>    从而连接到数据库对数据进行增删改查操作。并一步步返回数据到表现层,用JSP+XSL展示,从而完成一个流程的操作。

5  结束语

    Struts+Spring框架是目前众多软件企业主流的应用技术,也是J2EE未来发展的趋势。Struts作为前台控制框架简化了程序的开发。使得页面展示代码和JAVA代码编写工作有效分工,使项目的可扩展性大大增强,提高了开发效率,降低了维护成本。Spring作为一个应用于所有层面的综合框架,具有强大的应用功能及灵活性,适合作为一些大规模软件项目的底层平台。基于Struts+Spring的Web应用实现了表示层、逻辑层和数据库访问层等多层面分离,使软件在扩展性、复用性和维护性方面上有了很大提高。具有很好的发展前景。

参考文献

〔1〕飞思科技产品研发中心. 精通Spring[J ] . 电子工业出版社,2005.4〔2〕飞思科技产品研发中心. Java Web 服务应用开发详解[J ] . 电子工业出版社,2002〔3〕孙卫琴.精通Struts 基于MVC的Java Web 设计与开发.电子工业出版社, 2005.01〔4〕童春杰. 基于J2EE的分布式体系及应用.计算机应用研究2002.01〔5〕Spring网站:http://springframework.org


  [8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr /> 

相关文章:

计算机辅助历史教学及CAI课件的开发应用04-26

嵌入式家庭网关中SPI接口的软件模拟04-26

多媒体技术在新装备教学中的应用04-26

基于局域网的多媒体教学系统的设计与实现04-26

校园机房计费管理系统的选择与实施04-26

一种用VHDL设计嵌入式Web Server的方案04-26

用EP7211实现传呼信息实时语音合成和播放04-26

基于VxWorks的多DSP系统的多任务程序设计04-26

嵌入式系统设计方法的演化—从单片机到单片系统04-26

细胞移植修复脊髓损伤的进展04-26

热搜文章
最新文章