zoukankan      html  css  js  c++  java
  • ssh+flex

    1新建工程
    2 加入jar包
    添加hibernate5包
    添加struts2包
    添加spring4包
    3 加入blazeds工程中代码
    添加lazeds工程中lib目录下的jar包添加到该工程中
    lazeds工程中的flex文件夹添加到工程的WEB-INFO目录下,有以下几个文件
    message-config.xml
    proxy-config.xml
    remoting-config.xml
    service-config.xml
    version.properties


    4 配置文件
    spring配置文件 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:util="http://www.springframework.org/schema/util"
    xmlns:context="http://www.springframework.org/schema/context" 


    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" 


    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://cxf.apache.org/jaxws
    http://cxf.apache.org/schemas/jaxws.xsd">


    <!-- 自动扫描 -->
    <context:component-scan base-package="cn.yue.flexDemo" />
    <!--================================ 数据源 ================================== -->
    <!-- PropertyPlaceholderConfigurer是一个Bean后处理器,它会读取属性文件信息,并将这


    些信息设置成Spring配置文件的元数据。 -->
    <bean



    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <list>
    <value>classpath:dbconn.properties</value>
    <!--如果有多个属性文件,依次在下面列出来 -->
    <!--value>name.properties</value -->
    </list>
    </property>
    </bean>


    <!-- 定义数据源Bean,使用C3P0数据源实现 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <property name="driverClass" value="${jdbc.driverClassName}" />
    <property name="jdbcUrl" value="${jdbc.url}" />
    <property name="user" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <!-- <property name="initialSize" value="${jdbc.initialSize}" /> <property 
    name="maxActive" value="${jdbc.maxActive" /> <property 


    name="maxIdle" value="${jdbc.maxIdle" 
    /> <property name="minIdle" value="${jdbc.minIdle" /> -->
    </bean>


    <!-- 集成jpa -->
    <!-- 实体管理工厂 -->
    <bean id="entityManagerFactory"



    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="persistenceXmlLocation" value="classpath:META-


    INF/persistence.xml" />
    <property name="loadTimeWeaver">
    <bean



    class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
    </property>
    </bean>
    <!-- 事务管理器 -->
    <bean id="transactionManager" 


    class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>






    <!-- 配置事务增强处理 使用注解方式 -->
    <tx:annotation-driven transaction-manager="transactionManager" />


    </beans>




    struts配置文件 struts.xml
    修改web.xml文件,添加如下内容:
    <!-- ssh集成flex -->


    <!-- 设置spring配置文件路径 -->
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
    </context-param>


    <!-- 设置spring的热布署 <context-param> <param-name>contextClass</param-name> 
    <param-


    value>org.apache.struts2.spring.ClassReloadingXMLWebApplicationContext</param-value> 
    </context-param> -->


    <!-- 设置spring监听,在应用启动时启动spring容器 -->
    <listener>
    <listener-


    class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>


    <!-- 自定义struts2的核心拦截器 


    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter -->
    <filter>
    <filter-name>struts2</filter-name>
    <filter-


    class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <!-- 让Struts2的核心Filter拦截所有请求 -->
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>




        <!-- 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>


    5 添加springFactory类和springFactoryInatance类,示例代码如下:


    /**
     * Copyright (C) 2015
     * 
     * FileName:SpringFactoryInstance.java
     *
     * Author:<a href="mailto:zhenhuayue@sina.com">Retacn</a>
     *
     * CreateTime: Sep 1, 2015
     */
    package cn.yue.flexDemo.factory;


    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;


    /**
     * flex的spring工厂
     * 
     * @version
     * 
     * @Description:
     * 
     * @author <a href="mailto:zhenhuayue@sina.com">Retacn</a>
     * 
     * @since Sep 1, 2015
     * 
     */
    public class SpringFactoryInstance extends FactoryInstance {


    /**
    * 构造器

    * @param factory
    * @param id
    * @param properties
    */
    public SpringFactoryInstance(FlexFactory factory, String id, ConfigMap properties) 


    {
    super(factory, id, properties);
    }


    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;
    }
    }


    public String toString() {
    return "SpringFactory instance for id=" + getId() + " source=" + 


    getSource() + " scope=" + getScope();
    }


    }








    /**
     * Copyright (C) 2015
     * 
     * FileName:SpringFactory.java
     *
     * Author:<a href="mailto:zhenhuayue@sina.com">Retacn</a>
     *
     * CreateTime: Sep 1, 2015
     */
    package cn.yue.flexDemo.factory;


    import flex.messaging.FactoryInstance;
    import flex.messaging.FlexFactory;
    import flex.messaging.config.ConfigMap;


    /**
     * springFactory
     * 
     * @version
     * 
     * @Description:
     * 
     * @author <a href="mailto:zhenhuayue@sina.com">Retacn</a>
     * 
     * @since Sep 1, 2015
     * 
     */
    public class SpringFactory implements FlexFactory {


    /**
    * 初始化方法
    */
    @Override
    public void initialize(String id, ConfigMap configMap) {
    }


    /**
    * 实例化方法
    */
    @Override
    public FactoryInstance createFactoryInstance(String id, ConfigMap properties) {
    SpringFactoryInstance instance = new SpringFactoryInstance(this, id, 


    properties);
    instance.setSource(properties.getPropertyAsString(SOURCE, instance.getId


    ()));
    System.out.println("Spring====" + instance.toString());
    return instance;
    }


    @Override
    public Object lookup(FactoryInstance instance) {
    SpringFactoryInstance factoryInstance = (SpringFactoryInstance) instance;
    return factoryInstance.lookup();
    }
    }




    6 在service-config.xml中注册springFactory

    <!-- 注册spring工厂类 -->
    <factories>
    <factory id="spring" class="cn.yue.flexDemo.factory.SpringFactory" />
    </factories>


    7 添加实体bean,示例代码如下:
    package cn.yue.flexDemo.model;


    import java.io.Serializable;


    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;


    /**
     * 用户
     * 
     * @version
     * 
     * @Description:
     * 
     * @author <a href="mailto:zhenhuayue@sina.com">Retacn</a>
     * 
     * @since Aug 31, 2015
     * 
     */
    @Entity
    public class User implements Serializable {
    private static final long serialVersionUID = -4431562144786459898L;
    /** 标识 **/
    private Integer id;
    /** 用户名 **/
    private String name;
    /** 密码 **/
    private String password;


    /**
    * 构造器

    * @param name
    *            用户名
    * @param password
    *            密码
    */
    public User(String name, String password) {
    this.name = name;
    this.password = password;
    }


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
    return id;
    }


    public void setId(Integer id) {
    this.id = id;
    }


    @Column(length = 20, nullable = false)
    public String getName() {
    return name;
    }


    public void setName(String name) {
    this.name = name;
    }


    @Column(length = 20, nullable = false)
    public String getPassword() {
    return password;
    }


    public void setPassword(String password) {
    this.password = password;
    }


    @Override
    public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((id == null) ? 0 : id.hashCode());
    return result;
    }


    @Override
    public boolean equals(Object obj) {
    if (this == obj)
    return true;
    if (obj == null)
    return false;
    if (getClass() != obj.getClass())
    return false;
    User other = (User) obj;
    if (id == null) {
    if (other.id != null)
    return false;
    } else if (!id.equals(other.id))
    return false;
    return true;
    }


    @Override
    public String toString() {
    return "User [id=" + id + ", name=" + name + "]";
    }


    }










    8 添加业务方法
    /**
     * Copyright (C) 2015
     * 
     * FileName:IUserService.java
     *
     * Author:<a href="mailto:zhenhuayue@sina.com">Retacn</a>
     *
     * CreateTime: Sep 1, 2015
     */
    package cn.yue.flexDemo.service;


    import cn.yue.flexDemo.model.User;


    /**
     * 用户业务接口
     * 
     * @version
     * 
     * @Description:
     * 
     * @author <a href="mailto:zhenhuayue@sina.com">Retacn</a>
     * 
     * @since Sep 1, 2015
     * 
     */
    public interface IUserService {


    /**
    * 添加用户

    * @param user
    */
    public void addUser(User user);


    /**
    * 删除用户

    * @param id
    */
    public void delUser(Integer id);


    }




    /**
     * Copyright (C) 2015
     * 
     * FileName:UserServiceBean.java
     *
     * Author:<a href="mailto:zhenhuayue@sina.com">Retacn</a>
     *
     * CreateTime: Sep 1, 2015
     */
    package cn.yue.flexDemo.service.impl;


    import cn.yue.flexDemo.model.User;
    import cn.yue.flexDemo.service.IUserService;


    /**
     * 用户业务实现
     * 
     * @version
     * 
     * @Description:
     * 
     * @author <a href="mailto:zhenhuayue@sina.com">Retacn</a>
     * 
     * @since Sep 1, 2015
     * 
     */
    public class UserServiceBean implements IUserService {


    /**
    * 添加用户
    */
    @Override
    public void addUser(User user) {


    }


    /**
    * 删除用户
    */
    @Override
    public void delUser(Integer id) {


    }


    }




    9  测试业务方法
    /**
     * Copyright (C) 2015
     * 
     * FileName:DbTest.java
     *
     * Author:<a href="mailto:zhenhuayue@sina.com">Retacn</a>
     *
     * CreateTime: Sep 1, 2015
     */
    package cn.yue.flexDemo.test;


    import org.junit.BeforeClass;
    import org.junit.Test;
    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;


    import cn.yue.flexDemo.model.User;
    import cn.yue.flexDemo.service.IUserService;


    /**
     * 数据库测试方法
     * 
     * @version
     * 
     * @Description:
     * 
     * @author <a href="mailto:zhenhuayue@sina.com">Retacn</a>
     * 
     * @since Sep 1, 2015
     * 
     */
    public class DbTest {
    private static ApplicationContext ctx;
    /** 用户业务类 **/
    private static IUserService userService;


    /**
    * 测试前置方法
    */
    @BeforeClass
    public static void setUpBeforeClass() {
    // 创建Spring容器
    try {
    ctx = new ClassPathXmlApplicationContext


    ("applicationContext.xml");
    userService = (IUserService) ctx.getBean("userServiceBean");
    } catch (BeansException e) {
    e.printStackTrace();
    }
    }


    /**
    * 添加前台用户
    */
    @Test
    public void saveTest() {
    for (int i = 0; i < 10; i++) {
    User user = new User("retacn" + i, "123456" + i);


    userService.addUser(user);
    }
    }
    }




    10 emoting-config.xml中配置flex客户端公开的bean


    <!-- flex前台客户端所用来务bean -->
    <destination id="userService">
    <properties>
    <factory>spring</factory>
    <source>userServiceBean</source>
    </properties>
    </destination>


    11 客户端程序


    <?xml version="1.0" encoding="utf-8"?>
    <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      


    creationComplete="windowedapplication1_creationCompleteHandler(event)"
      xmlns:mx="library://ns.adobe.com/flex/mx">
    <fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here-->
    <mx:RemoteObject id="srv" destination="userService" 


    endpoint="http://localhost:7001/flexDemo/messagebroker/amf" result="findAllFaultHandler


    (event)">
    <mx:method name="getAll"  />
    </mx:RemoteObject>

    </fx:Declarations>
    <fx:Script>
    <![CDATA[
    import mx.controls.Alert;
    import mx.events.FlexEvent;
    import mx.rpc.events.ResultEvent;
    //应用对象
    private function findAllFaultHandler(event:ResultEvent):void{

    Alert.show(""+event.result);

    }

    protected function windowedapplication1_creationCompleteHandler


    (event:FlexEvent):void
    {
    srv.getAll();
    }

    ]]>
    </fx:Script> 
    <!---->


    <mx:HDividedBox width="100%" height="100%">
    <mx:Panel width="100%" height="100%" title="Inventory Management">
    <mx:AdvancedDataGrid id="list" width="100%" height="100%">
    <mx:columns>
    <mx:AdvancedDataGridColumn dataField="name" 


    headerText="Name"/>
    <mx:AdvancedDataGridColumn dataField="password" 


    headerText="password"/>
    </mx:columns>
    </mx:AdvancedDataGrid>
    </mx:Panel>
    </mx:HDividedBox>
    </s:WindowedApplication>

  • 相关阅读:
    基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建
    基于Html5 Plus + Vue + Mui 移动App开发(三)-文件操作(读取、保存、更新数据)
    基于Html5 Plus + Vue + Mui 移动App 开发(二)
    Mysql数据库(一)-------安装
    Sublime---破解+安装+安装插件
    Bayboy功能详解
    MySQL基础语句
    python变量类型&字符串的内建函数使用
    数据库基础知识笔试题(一)
    软件测试笔试题(二)
  • 原文地址:https://www.cnblogs.com/retacn-yue/p/6194233.html
Copyright © 2011-2022 走看看