• Intramart执行流程


    1.menu栏中对应页面
        URL  ws.conf.notice-index.service    权限bpwsupper

    2.通过URL找到ws.conf下service-config-notice.xml文件

    3.在service-id为index的service中获得该service
        <service>
            <service-id>index</service-id>
            <next-page>
                <page-path>/notice/topicIndex.jsp</page-path>
            </next-page>
        </service>
      通过page-path打开topicIndex.jsp页面

    4.topicIndex.jsp页面提交from时
        <imart:Form application="ws.conf.notice" service="sendTopicService">
        找到到ws.conf下service-config-notice.xml文件,service-id为sendTopicService的Service
        <service>
            <service-id>sendTopicService</service-id>
            <controller-class>
                ws.conf.service.TopicController
            </controller-class>
            <input-error>
                <page-path>/notice/error.jsp</page-path>
            </input-error>
            <next-page>
                <page-path>/notice/topicShow.jsp</page-path>
            </next-page>
        </service>

    5.通过controller-class,进入TopicController.java (extends ServiceControllerAdapter)
        先运行其中的check()方法,如果有throw new RequestException("XXX"),则进入    sendTopicService的Service中的input-error页面error.jsp

    6.如果check()通过,运行TopicController的service()方法,运行成功后转入page-path的topicShow.jsp页面

    7.topicShow.jsp中如果有HelpBean(extends HelperBean)
        <imart:HelperBean id="topicViewBean" class="ws.conf.bean.TopicViewBean" />
        会先运行TopicViewBean中init()方法,可以在TopicViewBean定义全局变量,init对其进行赋值,就可以在jsp页面使用这些数据了

    8.在Controller和Bean中,可以调用Event时间
        Event event = createEvent("ws.conf.notice", "topic_view");
        EventResult eventResult = dispatchEvent(event);
        其中,会先找ws.conf下event-config-notice.xml文件event-key为topic_view的event-group
        <event-group>
            <event-key>topic_view</event-key>
            <event-class>jp.co.intra_mart.framework.base.event.EmptyEvent
            </event-class>
            <event-factory>
                <factory-class>
        jp.co.intra_mart.framework.base.event.StandardEventListenerFactory
                </factory-class>
                <init-param>
                    <param-name>listener</param-name>
                    <param-value>ws.conf.event.TopicShowEventListener
                    </param-value>
                </init-param>
            </event-factory>
        </event-group>
        createEvent的结果类型就是event-class的类型,eventclass可以定义事件传递的参数和数据
        当调用dispatchEvent方法时,就会找到TopicShowEventListener的fire方法,进行逻辑处理,返回值为TopicShowEventResult:EventResult,可以携带处理完成后的数据

    9.使用数据库时,getDAO("ws.conf.notice", "topic_dao", event
                    .getUserInfo().getLoginGroupID());
        会找到ws.conf下的data-config-notice.xml文件,dao-key为topic_dao的dao-group,获得对应的Dao层对象
        <dao-group>
            <dao-key>topic_dao</dao-key>
            <dao>
                <dao-class>ws.conf.dao.impl.TopicDaoImpl</dao-class>
                <connector-name>system_db</connector-name>
            </dao>
        </dao-group>

        connector有2种:
        <connector-name>system_db</connector-name> TopicDaoImpl extends SystemDBDAO
        <connector-name>logingroup_db</connector-name>  TopicDaoImpl extends LoginGroupDBDAO

  • 相关阅读:
    bzoj3993: [SDOI2015]星际战争
    bzoj3583: 杰杰的女性朋友 && 4362: Graph
    bzoj2260: 商店购物 && 4349: 最小树形图
    老oj3444 && Pku3241 Object Clustering
    bzoj3754: Tree之最小方差树
    bzoj2215: [Poi2011]Conspiracy
    老oj曼哈顿最小生成树
    bzoj2180: 最小直径生成树
    棋盘问题
    油田 Oil Deposits
  • 原文地址:https://www.cnblogs.com/lewe/p/3028865.html
Copyright © 2020-2023  润新知