浏览 2273 次
锁定老帖子 主题:AJAX2
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-20  
  前面谈了用最原始的方式实现AJAX在JSP中,但这里介绍一种Java类jsonrpc,对AJAX的底层实现做了封装,用起来很方便。
 下面就举个例子简单的介绍一下这个类的用法。
 例如我现在需要实现一个JSP页面中下拉列表内容的异步传输。里面的内容来自数据库中的有关数据。
 那么第一步你就需要建立一个类比如ajaxBean,大家要注意了这个类要实现java.io.Serializable这个接口,因为这个类要被客户端的类调用即
远程调用,会涉及到类的序列化以及反序列化,所以要实现这个接口吧!(我自己的理解)下面举个很简单的例子里面只有一个方法:
 public class ajaxBean extends BaseLog implements java.io.Serializable{//这个类还是先了日志类的接口便于程序调试


public String[][] getMemberLevel(){
String[][] options = null;
MemService service = new MemServiceImpl();//这个类是是用与与数据库打交道的
try{
List list = service.browseMemberLevel();//返回自己需要的内容并放在List中。
Memberlevel ml = null;
int i = 0;
if (list!=null){
options = new String[list.size()][2];
Iterator it = list.iterator();
while(it.hasNext()){
ml = (Memberlevel)it.next();
options[i][0] =ml.getId().toString();
options[i][1] =ml.getLevelName().trim();
i++;
}
}else{
options = new String[1][2];
options[0][0] ="0";
options[0][1] ="无会员级别";
}
}catch(Exception ex){
logger.info("在执行AjaxBean类中的getMemberLevel方法时出错:\n");
ex.printStackTrace();
}
return options;
}



}
 然后在对应的JSP页面中需要添加一下内容:
<jsp:useBean id="JSONRPCBridge" scope="session" class="com.metaparadigm.jsonrpc.JSONRPCBridge"/>//导入的包
<jsp:useBean id="ajax" class="com.base.ajaxBean"></jsp:useBean>//自己设置Bean的位置
<%
JSONRPCBridge.registerObject("ajax",ajax);
%>
<script language="javascript">//在JavaScript中直接利用这个类调用方法,然后在JavaScript中对结果进行操作
//构造商品分类下拉列表
jsonrpc = new JSONRpcClient("JSON-RPC");
var result = jsonrpc.ajax.getmemberlevel();
for (var i=0;i<result.length;i++){
option =document.createElement("OPTION");
option.value = result[i][0];
option.text = result[i][1];
document.all.category.options.add(option);
}



</script>
这个类很好,因为它可以在JavaScript中直接使用而且返回的结果可以直接利用JavaScript操作,同时JavaScript又可以动态的操作HTML,所以结合JavaScript用很不错!当然这个远程调用的方法(应该可以这样叫吧)里面没有参数,但可以有参数。
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics