技术开发 频道

调用jsonrpc的技巧

【IT168技术文档】一段不用每个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); }
原文地址
0
相关文章