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 閱讀(1482) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 潮安县| 甘泉县| 鹤庆县| 银川市| 日喀则市| 孟州市| 杨浦区| 高唐县| 喀什市| 广西| 客服| 凌源市| 丰台区| 龙游县| 浙江省| 上杭县| 凤城市| 安泽县| 桦甸市| 四子王旗| 沧州市| 八宿县| 个旧市| 桐柏县| 兰溪市| 玛沁县| 分宜县| 咸阳市| 海丰县| 巨鹿县| 大新县| 庐江县| 松潘县| 体育| 夏津县| 甘孜县| 大荔县| 海门市| 三明市| 汶上县| 韶关市|