手把手教你使用flex eclipse整合spring
最先下载FlashBuilder_4_7_LS10_win64.exe试了几个eclipse安装插件都没成功,包括myeclipse8.5、spring sts2.9.2、eclipse3.5、j2eeeclipse版本4.2.0,后来搞了一个FlashBuilder_4_LS10.exe安装完找不到插件安装文件原来这个是单独版,必须插件版才行,下载FlashBuilder_4_Plugin_LS10.exe终于配置成功了,myeclipse8.5不行,spring sts可以了。
spring sts部署应用跟myeclipse不一样,比较类似eclipse。
用sts整合flex和java有几个步骤
1新建动态web工程flexweb,创建web.xml
2 blazeds-turnkey-4.0.0.14931.zip解压, 复制blazed两个文件夹flex和lib到WEB-INF下,里面是blaze的jar包和flex配置文件,然后修改web.xml加入blaze支持
<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>
3项目右键,添加/更改项目类型>添加flex类型项目,第一步,应用程序类型选择J2EE,下方选择BlazeDS,第二部根文件夹填入项目在workspase的路径加一个WebContent,如E:\workspaces\sts\flexweb\WebContent,根URL填,上下文根目录/flexweb,输出文件夹使用默认E:\workspaces\sts\flexweb\WebContent\flexweb-debug,点击finish
4转换完成后,目录有些变化,右键项目>properties>flex构建路径,主源文件夹改为flex_src,然后把自动生成的src目录下的flexweb.mxml移动到flex_src下,环境搭建就算完成了
HelloWorld
flexweb.mxml
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe./mxml/2009" xmlns:s="library://ns.adobe./flex/spark" xmlns:mx="library://ns.adobe./flex/mx" minWidth="955" minHeight="600"> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.rpc.events.ResultEvent; protected function myFlex_resultHandler(event:ResultEvent):void{ var name:String=event.result as String; Alert.show(name); } protected function button1_clickHandler(event:MouseEvent):void { myFlex.sayHello(txtName.text); } ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <s:RemoteObject id="myFlex" destination="mytest" result="myFlex_resultHandler(event)"/> </fx:Declarations> <s:Button x="209" y="135" label="按钮" click="button1_clickHandler(event)"/> <s:TextInput x="166" y="81" id="txtName"/> <s:Label x="10" y="81" text="请输入内容" fontSize="15" fontWeight="bold" fontFamily="中易黑体"/> </s:Application>
其中
<s:RemoteObject id="myFlex" destination="mytest" result="myFlex_resultHandler(event)"/>
指定了一个调用Java的类Hello,mytest对应到remoting-config.xml
在WEB-INFO/flex目录下remoting-config.xml加入
<destination id="mytest"> <properties> <source>.hongbo.Hello</source> </properties> </destination>
result对应的是java方法调用的回调函数
建一个普通java类
package .hongbo; public class Hello { public String sayHello(String name){ System.out.println("------------------------------------"); return "Hello First Demo " + name; } }
这样就OK了
访问路径是
第一次会报404,problems提示无法创建html包装器,右键点击重新创建模板
添加Spring支持
1web.xml加入
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext.xml </param-value> </context-param> <listener> <listener-class>.springframework.web.context.ContextLoaderListener</listener-class> </listener>
2src下创建applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://.springframework./schema/beans" xmlns:xsi="http://.w3./2001/XMLSchema-instance" xmlns:aop="http://.springframework./schema/aop" xmlns:tx="http://.springframework./schema/tx" xsi:schemaLocation="http://.springframework./schema/beans http://.springframework./schema/beans/spring-beans-2.0.xsd http://.springframework./schema/aop http://.springframework./schema/aop/spring-aop-2.0.xsd http://.springframework./schema/tx http://.springframework./schema/tx/spring-tx-2.0.xsd"> <bean id="hello" class=".hongbo.Hello"> <property name="testSpring"> <ref bean="testSpring"/> </property> </bean> <bean id="testSpring" class=".hongbo.test.impl.TestSpringImpl"/> </beans>
3WEB-INF/flex/service-config.xml加入
<factories> <factory id="spring" class=".hongbo.SpringFactory" /> </factories>
添加java类
package .hongbo; import .springframework.beans.BeansException; import .springframework.beans.factory.NoSuchBeanDefinitionException; import .springframework.context.ApplicationContext; import .springframework.web.context.support.WebApplicationContextUtils; import flex.messaging.FactoryInstance; import flex.messaging.FlexFactory; import flex.messaging.config.ConfigMap; import flex.messaging.services.ServiceException; public class SpringFactory implements FlexFactory { private static final String SOURCE = "source"; public void initialize(String id, ConfigMap configMap) { } public FactoryInstance createFactoryInstance(String id, ConfigMap properties) { SpringFactoryInstance instance = new SpringFactoryInstance(this, id, properties); instance.setSource(properties.getPropertyAsString(SOURCE, instance .getId())); return instance; } // end method createFactoryInstance() public Object lookup(FactoryInstance inst) { SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst; return factoryInstance.lookup(); } static class SpringFactoryInstance extends FactoryInstance { SpringFactoryInstance(SpringFactory factory, String id, ConfigMap properties) { super(factory, id, properties); } public String toString() { return "SpringFactory instance for id=" + getId() + " source=" + getSource() + " scope=" + getScope(); } public Object lookup() { ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(flex.messaging.FlexContext.getServletConfig().getServletContext()); String beanName = getSource(); try { return appContext.getBean(beanName); } catch (NoSuchBeanDefinitionException nexc) { ServiceException e = new ServiceException(); String msg = "Spring service named '" + beanName + "' does not exist."; e.setMessage(msg); e.setRootCause(nexc); e.setDetails(msg); e.setCode("Server.Processing"); throw e; } catch (BeansException bexc) { ServiceException e = new ServiceException(); String msg = "Unable to create Spring service named '" + beanName + "' "; e.setMessage(msg); e.setRootCause(bexc); e.setDetails(msg); e.setCode("Server.Processing"); throw e; } } } }
4修改remoting-config.xml
<destination id="mytest"> <properties> <factory>spring</factory> <source>hello</source> </properties> </destination>
5修改相应的Java类
package .hongbo; import .hongbo.test.TestSpring; public class Hello { private TestSpring testSpring; public void setTestSpring(TestSpring testSpring) { this.testSpring = testSpring; } public String sayHello(String name){ return testSpring.testSpring(name); } }
package .hongbo.test; public interface TestSpring { String testSpring(String name); }
package .hongbo.test.impl; import .hongbo.test.TestSpring; public class TestSpringImpl implements TestSpring{ public String testSpring(String name){ System.out.println("test spring-------------------------------------"+name); return "test spring "+name; } }
,flex打印语句trace不会打印到控制台,要先卸载flashplayer再安装一个debuger版的flashplayer,下载flashplayer_uninstall.zip,卸载,下载flashplayer10r12_36_winax_debug.exe,安装,卸载安装后好像谷歌浏览器没影响,然后eclipse修改默认浏览器为IE,window>preferences>General>Web browser,选择Inter Explorer,还有,启动tomcat后,必须在mxml上面右键debug运行,打开的IE才会打印trace,直接访问网址是不行的。
如有遗漏请指出
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程