ajax 与 json 在 jsp页面 ssh框架

本文介绍了一个使用 Struts2 框架进行 JSON 数据交互的例子。具体包括所需依赖库的导入、前端页面的 AJAX 调用设置、后端 Java 代码实现以及 JSON 数据的正确返回方式。同时,针对可能出现的异常,例如 JSONException 和日期格式转换错误等,提供了相应的解决方案。

1:需要导入的jar

commons-beanutils-1.8.3.jar

commons-collections-3.2.1

commons-lang-2.5

commons-logging-1.1.1

ezmorph-1.0.6

json-lib-2.3-jdk15

注意:如果导入导入了json-lib-2.3-jdk15但还报net.sf.json.JSONArray.class没找到的话,需要重新发布到tomcat

2:页面端

<script type="text/javascript">
     $(function(){
     var loginUserId=${session.loginUser.id};
     //新消息提醒
     function message(){
    $.ajax({
  type: "POST",
  url: "${pageContext.request.contextPath }/client/cMessageAction_show.action",
  data:"loginUserId="+loginUserId+"",
  dataType:"json",
  success: function(msg){
    alert( "Data Saved: "+msg[0].time);
  },
  error:function(){
    alert("出错了");
  }
});
     }
       if(loginUserId!=""){
    setInterval(message, 5000); 
 
     });
    </script>

3:struts2端

List<Message> list=messageService.findAllMessage(loginUserId);
//有级联,不能直接转化,要取出List放到map里面  
      JsonConfig cfg = new JsonConfig();  
      //过滤关联,避免死循环net.sf.json.JSONException: java.lang.reflect.InvocationTargetException  
      cfg.setJsonPropertyFilter(new PropertyFilter()  
      {  
           public boolean apply(Object source, String name, Object value) {  
             //把什么过滤掉  如属性为user的就不会放进json中
             if(name.equals("user")||name.equals("id")) {  
                 System.out.println(name+"--");
             return true;  
             } else { 
             System.out.println(name+"==");
               return false;  
            }  
          }  
         });  
      //net.sf.json.JSONException: java.lang.reflect.InvocationTargetException异常  
     cfg.setExcludes(new String[]{"handler","hibernateLazyInitializer"});  
      //javabean里出现循环调用啦,赶快用excludes干掉parent或者children   
     // cfg.setExcludes(new String[]{"addressGroup"});   
      //net.sf.json.JSONException: java.lang.reflect.InvocationTargetException日期格式转化出错  
     cfg.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);     
     // cfg.registerJsonValueProcessor(Date.class, new DateJsonValueProcessor("yyyy-MM-dd hh:mm:ss"));  
    
     JSONArray json=new JSONArray().fromObject(list,cfg);

    HttpServletResponse response = ServletActionContext.getResponse();  
    response.setCharacterEncoding("UTF-8");  
PrintWriter out = response.getWriter();


if(out!=null){

             out.print(json.toString());
         out.flush();
         out.close();
      }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值