Vikings

          調用jsonrpc的技巧

          一段不用每個jsp頁面都JSONRPCBridge.registerObject的方法

          1. JsonContextLinster
          在spring文件里讀取需要注冊bridge的bean名單
          registerObject
          public class JSONContextListener implements ServletContextAttributeListener {
              
          private final Log log = LogFactory.getLog(JSONContextListener.class);

              
          public void attributeAdded(ServletContextAttributeEvent event) {
                  
          if (event.getName().equals(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)) {
                      
          // register LookupHelper so we can call methods on it
                      ApplicationContext ctx = (ApplicationContext) event.getValue();

                      
          // check for null so we don't have to initialize Spring in tests
                      if (ctx != null{
                          log.debug(
          "Registering jsonObjects for XmlHttpRequest to GlobalBridge");
                          
                          JSONRPCBridge jsonBridge 
          = JSONRPCBridge.getGlobalBridge();

                          Map jsonObjects 
          = (Map) ctx.getBean("jsonObjects");
                          
          for (Object name : jsonObjects.keySet()) {
                              jsonBridge.registerObject(name, jsonObjects.get(name));
                          }

                          
                      }

                  }
                  
              }

          public void attributeReplaced(ServletContextAttributeEvent event) {
                  attributeAdded(event);
              }

          }


          2.spring配置里的jsonObject
              <!-- json registration -->
              
          <bean name="jsonObjects" class="java.util.HashMap">
                  
          <constructor-arg>
                      
          <map>
                          
          <entry key="information" value-ref="informationJson"></entry>
                      
          </map>
                  
          </constructor-arg>
              
          </bean> 

              
          <bean id="informationJson" class="com.vikings.tools.json.Information" >
                  
          <property name="informationDAO" ref="informationDAO" />
              
          </bean>

          3.web.xml里增加配置剛才寫的listener
          <listener>
                  
          <listener-class>com.vikings.tools.json.JSONContextListener</listener-class>
              
          </listener>

          到這里就不用這么寫了
          <jsp:useBean id="JSONRPCBridge" scope="session"
             class
          ="com.metaparadigm.jsonrpc.JSONRPCBridge" />

          <% JSONRPCBridge.registerObject("myTestObject", aTestObject); %>
          這個也不需要
          // Find the JSONRPCBridge for this session or create one
          // if it doesn't exist. Note the bridge must be named "JSONRPCBridge"
          // in the HttpSession for the JSONRPCServlet to find it.
          HttpSession session = request.getSession();
          JSONRPCBridge json_bridge 
          = null;
          json_bridge 
          = (JSONRPCBridge) session.getAttribute("JSONRPCBridge");
          if(json_bridge == null{
              json_bridge 
          = new JSONRPCBridge();
              session.setAttribute(
          "JSONRPCBridge", json_bridge);
          }

          posted on 2007-11-01 22:19 Vikings 閱讀(1478) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 资兴市| 滕州市| 邵阳市| 托里县| 五河县| 安达市| 鄢陵县| 休宁县| 阜阳市| 屯门区| 怀柔区| 玛多县| 灵川县| 桂东县| 吉林市| 昆明市| 安徽省| 格尔木市| 瑞金市| 阜新市| 三明市| 蓝田县| 康马县| 新河县| 闽清县| 长乐市| 江永县| 汝城县| 镇平县| 会宁县| 峨边| 元阳县| 慈利县| 团风县| 利辛县| 邢台县| 丹寨县| 郸城县| 壶关县| 衡南县| 上虞市|