• 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:新建动态webprojectflexweb,创建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:workspacesstsflexwebWebContent,根URL填http://localhost:8080/flexweb。上下文根目录/flexweb,输出目录使用默认E:workspacesstsflexwebWebContentflexweb-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.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/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>com.hongbo.Hello</source>
            </properties>
        </destination>

    result相应的是java方法调用的回调函数

    建一个普通java类

    package com.hongbo;
    
    public class Hello {
    
    	public String sayHello(String name){
    		System.out.println("------------------------------------");
    		return "Hello First Demo " + name;
    	}
    }

    这样就OK了

    訪问路径是http://localhost:8080/flexweb/flexweb-debug/flexweb.html

    第一次会报404,problems提示无法创建html包装器,右键点击又一次创建模板


    加入Spring支持

    1:web.xml增加

    <context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>/WEB-INF/classes/applicationContext.xml </param-value>
    	</context-param>
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>

    2:src下创建applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
    
    	<bean id="hello" class="com.hongbo.Hello">
    		<property name="testSpring">
    			<ref bean="testSpring"/>
    		</property>
    	</bean>
    	<bean id="testSpring" class="com.hongbo.test.impl.TestSpringImpl"/>
    </beans>

    3:WEB-INF/flex/service-config.xml增加

    <factories>
    	    <factory id="spring" class="com.hongbo.SpringFactory" />  
    	</factories>
    加入java类

    package com.hongbo;
    
    
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.NoSuchBeanDefinitionException;
    import org.springframework.context.ApplicationContext;
    import org.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 com.hongbo;
    
    import com.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 com.hongbo.test;
    
    public interface TestSpring {
    
    	String testSpring(String name);
    }
    

    package com.hongbo.test.impl;
    
    import com.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。选择Internet Explorer,最后还有,启动tomcat后。必须在mxml上面右键debug执行,打开的IE才会打印trace,直接訪问网址是不行的。

    请注明遗漏

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    jQuery函数继承 $.extend, $.fn.extend
    [原创]茗洋AaronYang的 jquery.myselect.js 我的一次前端突破[上]
    EasyUI 的 combotree 加载数据后折叠起来,并且只允许单击子节点的写法
    判断js数组包是否包含某个元素
    JS中 HTMLEncode和HTMLDecode
    Easyui datagrid 特殊处理,记录笔记
    easyui tab上面添加右键菜单
    第三方文本框 在div中显示预览,让指定节点不受外部css影响
    Easyui 让Window弹出居中
    C# txt格式记录时间,时间对比,决定是否更新代码记录Demo
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4662428.html
Copyright © 2020-2023  润新知