《SSH框架》---Struts2

来源:互联网 发布:linux新建一个文件 编辑:程序博客网 时间:2024/05/07 08:30

一、简介:

1、来由:

   Struts(金属支架),在程序中表示起支撑作用的通用程序代码,Struts2是在Struts1框架的基础上融合了WebWork优秀框架升级得到的。

2、解释:

   Struts2框架是一个轻量级的MVC流程框架,轻量级是指程序的代码不是很多,运行时占用的资源不是很多,MVC流程框架就是说它是支持分层开发,控制数据的流程,从哪里来,到那里去,怎么来,怎么去的这样一个框架;


二、配置过程

1、引入Struts2 jar包:

             

2、编写配置文件:

     *Web.xml---配置核心过滤器

             

     代码:

 <!-- 配置Struts2的核心过滤器 --> <filter>    <filter-name>struts2</filter-name>     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter>  <filter-mapping>    <filter-name>struts2</filter-name>     <url-pattern>/*</url-pattern> </filter-mapping>

   *Struts.xml

   在src文件夹下建立struts.xml文件:

    

    代码:

    <?xmlversion="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache SoftwareFoundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"> <struts><constantname="struts.devMode" value="false" /></struts>


三、Spring整合Struts2

   Spring也提供了MVC模式的支持,但Struts是比较单纯的MVC框架,开发中更倾向Spring和Struts整合开发。Struts和Spring的整合比较简单顺畅。

   整合关键点是:将Struts中的Action的实例生成不再由Struts负责,而交给Spring容器管理,主要目的是让控制器与业务逻辑组件实现分离。基于该目的,我们采用工厂模式策略,让Spring容器管理Action,利用IoC的依赖注入特性为控制器注入业务逻辑组件。Struts只单纯扮演控制器的角色。

   下面是Spring和Struts整合的关键步骤。Struts的核心控制器必须能装载Spring的应用程序环境。

    Spring和Struts整合有两种方式

    1、Struts2的Action由Struts2框架自身创建.

    2、Struts2的Action交给Spring框架创建.

   我们推荐使用第二种方式,因为第二种方式,Action类由Spring容器进行管理,可以方便的对Action类进行AOP的编程。但第二种有一个关键地方:就是在Struts2框架创建Action类的时候,默认是多例的。而Spring容器在管理类的时候,默认创建是单例的.单例的这种方式就容易产生线程安全问题.所以一定要配置类的scope属性。

   关于scope的了解:http://blog.csdn.net/camper001/article/details/6121910

  *********************** 以后台商品管理为例***************************

  在Spring的配置文件中配置:

   

<!--商品模块的Action --><bean id="adminProductAction" class="cn.itcast.shop.product.adminaction.AdminProductAction"scope="prototype"></bean>

  在Struts的配置文件中配置:

<actionname="adminProduct_*" class="adminProductAction"method="{1}"></action>

   比如,添加商品,

     1.在前台商品页面,请求添加商品,请求访问addPage方法:

window.location.href= "${pageContext.request.contextPath}/adminProduct_addPage.action";

     2.跳转到Struts中对应类的名称为“adminProduct”中,在applicationContxt(Spring的配置)中adminProductAction对应的是此地址下类:"cn.itcast.shop.product.adminaction.AdminProductAction" ,于是在此action中查找添加商品需要的方法addPage;

      public String addPage(){//查询所有的二级分类的集合:List<CategorySecond>csList=categorySecondService.findAll();//通过值栈来保存数据ActionContext.getContext().getValueStack().set("csList",csList);//页面跳转return"addPageSuccess";                 }


    在此方法中要求返回addPageSuccess,我们在Struts中规定,返回addPageSuccess时,跳转到add.jsp:

<resultname="addPageSuccess">/admin/product/add.jsp</result>

    此时,在ssh框架中,Struts实现了控制器,控制跳转,但并不负责实例的生成。

    以上是我对Struts的理解和框架的搭建,请路过的大鸟批评指点。

0 0
原创粉丝点击