zoukankan      html  css  js  c++  java
  • 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,直接訪问网址是不行的。

    请注明遗漏

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

  • 相关阅读:
    LeetCode Binary Tree Inorder Traversal
    LeetCode Populating Next Right Pointers in Each Node
    LeetCode Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode Reverse Linked List II
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Pascal's Triangle
    Palindrome Construct Binary Tree from Preorder and Inorder Traversal
    Pascal's Triangle II
    LeetCode Word Ladder
    LeetCode Binary Tree Zigzag Level Order Traversal
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4662428.html
Copyright © 2011-2022 走看看