FLEX3+struts2.1.6+spring2.5.5+hibernate3.2整合日记(1)

  这是一个异常繁琐的整合过程,不过没有办法了.在各位看这文章之前,有一点需要声明的,在这,还有一个问题还未解决.就是struts的跳转问题.我暂时还未找到他们4个哥们结合后跳转的方法.但未免日后忘记.这里先记下.

 

1.SSH2的配置就不多说了吧?先配置好这3个哥们.

 

2.建立一个新的flex project,记得要是web application哦...不要设置他的server.还有output folder要设置到SSH的那里.方便SWF的输出嘛,不然手动很麻烦.

 

3.BlzeDS,暂时不讲配置文件怎么写,先把它要的工具都装上.都按照网上说的.download那个blazeds.war.解压,将其中的lib全部copy到SSH2的LIB中; 还有那个WAR里面的WEB-INF/flex/下的所有东西.都得赋值到SSH2的相对目录下(不明白?等等有图片给你看看)

 

4,我的目录如下

 

5.以上乱七八糟的就不用看了...注意web-inf/flex,这个里面的文件很重要,配置blazeds服务用的.记得哦!

 

6.好戏登场,web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <display-name>Struts2</display-name>
 <context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>classpath*:applicationContext*.xml</param-value>
 </context-param>
 <context-param>
    <param-name>flex.class.path</param-name>
    <param-value>/WEB-INF/flex/hotfixes,/WEB-INF/flex/jars</param-value>
  </context-param>
 
 <!-- BlazeDS 服务配置  start -->
  <!-- Http Flex Session attribute and binding listener support -->
    <listener>
        <listener-class>flex.messaging.HttpFlexSession</listener-class>
    </listener>

    <!-- MessageBroker Servlet -->
    <servlet>
        <servlet-name>MessageBrokerServlet</servlet-name>
        <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
        <init-param>
            <param-name>services.configuration.file</param-name>
            <param-value>/WEB-INF/flex/services-config.xml</param-value>
       </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>MessageBrokerServlet</servlet-name>
        <url-pattern>/messagebroker/*</url-pattern>
    </servlet-mapping>
 <!-- BlazeDS 服务配置  end -->
 
 
 <!-- spring2.5自动管理session的关闭.需要放在struts2.1.6的FilterDispatcher之前  Start-->
 <filter>
        <filter-name>hibernateFilter</filter-name>
        <filter-class>
            org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>hibernateFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- spring2.5自动管理session的关闭.需要放在struts2.1.6的FilterDispatcher之前  END-->
 <!--  spring2.5编码过滤器 START -->
 <filter>
       <filter-name>encodingFilter</filter-name>
       <filter-class>
           org.springframework.web.filter.CharacterEncodingFilter
       </filter-class>
       <init-param>
           <param-name>encodingFilter</param-name>
           <param-value>UTF-8</param-value>
       </init-param>
    </filter>
 <!--  spring2.5编码过滤器 END -->
 
 <!-- struts2.1.6  FilterDispatcher START -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
 
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/s2/*</url-pattern>
    </filter-mapping>
   
    <filter>
        <filter-name>struts-cleanup</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>/s2/*</url-pattern>
    </filter-mapping>
   
    <!-- struts2.1.6  FilterDispatcher END -->
    <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
  <welcome-file-list>
    <welcome-file>/flex/index.swf</welcome-file>
  </welcome-file-list>
 
  <!-- Global Exception settings 公共异常页面配置 -->
  <error-page>
   <error-code>404</error-code>
   <location>
    /test/exception.jsp
   </location>
  </error-page>
 
</web-app>

长是长了点,但无办法啊.而且我也红色高亮注释给你了...我手写的.有误请纠正.

 

OK,配置完成咯.在这里会有几个疑惑的:

1.为什么<welcome-file>/flex/index.swf</welcome-file>?

其实FLEX会伴随生成HTML的,写入绝对路径访问HTML.是正常的,但要在欢迎页面里用FLEX生成的HTML是会出现JS错误的.不要问我,我没有仔细看.但用index对应的SWF文件是一样的,功能也一样.

2.为什么我的struts2的filter mapping要写成  /s2/*  ??

因为struts2该死地把FLEX的请求频道地址都给拦截了.也就是

<servlet-mapping>
        <servlet-name>MessageBrokerServlet</servlet-name>
        <url-pattern>/messagebroker/*</url-pattern>
    </servlet-mapping>

根据就近原则,我试过把它写到struts2之后.也是无用,不过写在struts2的前面就已经是就近原则了.所以我只好改变了struts2的监听路径.但我看过一个达人的BLOG里,struts2的监听路径都没有改变就是 /* ,我不知道他是怎么用的,我也很想知道,可惜联络不到他本人.可能云游去了.
3.究竟他们怎么交互啊?

重点了.不过我不打算详细说,FLEX我是用remotingObject的,而因为改变了struts2的监听路径,所以FLEX请求那个ACTION时,这个ACTION已经脱离了struts2的管理.所以随便返回STRING吧.不怕担心跳转了!开心啊!

但..........我要跳转页面怎么跳转啊?!哭啊.....这我会在之后再研究...(忘记说了,我是用JSON格式交互的,这很重要哦.)

 

如果有什么缺少或疑问,请留言给我.将在第二篇补完,有误请纠正留言,谢谢.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值