SSH 后台向前台传JSON

Struts2+json+jquery+mysql

弄了一天终于搞出来了

最终结果:

工程结构如下:


导入的包:


配置文件

Web.xml

<?xml version="1.0"encoding="UTF-8"?>

<web-app version="2.5"

   xmlns="http://java.sun.com/xml/ns/javaee"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

  <filter>

  <filter-name>struts2</filter-name>

  <filter-class>

  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

  </filter-class>

  </filter>

  <filter-mapping>

  <filter-name>struts2</filter-name>

  <url-pattern>/*</url-pattern>

  </filter-mapping></web-app>

Struts.xml

<?xml version="1.0"encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//ApacheSoftware Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

   <package name="struts2" extends="struts-default">

    

  

     <action name="*.jsp">

        <result>/{0}.jsp</result>

        </action>

         <action name="*">

        <result>/{0}</result>

        </action>

   </package>

  

  

   <package name="ajax" extends="json-default">

     <action name="listAction"class="com.flb.action.listAction">

        <result type="json">

        <param name="root">result</param>

        </result>

     </action>

   </package>

</struts>   

MenuList.jsp

<body>

    <select name="province"id="province">

      <option value="">====请选择====</option>

    </select>

    <select name="city"id="city">

      <option value="">====请选择====</option>

    </select>

    <select name="country"id="country">

      <option value="">====请选择====</option>

    </select>

  </body>

 

  <script language="javaScript">

 

  $(document).ready(function(){

/*************************************************************/

//从数据库中查询省的信息显示在<selectname="province" id="province">

 

   $.post("listAction.action",function(data){

     //alert(data.length);

     alert(data);

      // alert(textStatus);

     var dataObj=eval("("+data+")");

     for(var i=0;i<dataObj.length;i++){

        alert(dataObj[i].pid+" "+dataObj[i].pname);

     }

   }); 

  

  });

 

  </script>

listAction.java

 

package com.flb.action;

 

import java.util.List;

 

import net.sf.json.JSONArray;

 

import com.flb.dao.Dao;

import com.flb.daoIpml.DaoIpml;

import com.flb.vo.Province;

import com.opensymphony.xwork2.ActionSupport;

 

public class listAction extends ActionSupport{

   private static final long serialVersionUID = 1L;

   private String result;

  

   public String getResult() {

      return result;

   }

   public void setResult(String result) {

      this.result = result;

   }

 

 

 

   public String execute() throws Exception{

      System.out.println("有没有啊??");

      //获取省的信息

      Dao dao=new DaoIpml();

      List<Province> list=dao.findAllProvince();

      System.out.println(list);

      //转化文json格式

      JSONArray jsonArray=JSONArray.fromObject(list);

      //result=jsonArray.toString();

      this.setResult(jsonArray.toString());

      System.out.println(jsonArray.toString());

     

     

      return SUCCESS;

   }

}

 

 

 

 

 

最后得到我想要的结果,转换为JSON对象,遍历打印出数据库中的数据。


虽然结果是得到了,现在我说下过程中碰到的问题。

问题1   首先是包的问题:

开始一直报错:



也就是JAR没有源附件的意思,以为是jar曝出问题了,所以换了个json-lib-2.4-jdk15.jar.可是还是报了下面的错,

果断认为是其它原因,果然是另一个包的问题,用Firebug调试了下:

java.lang.NoClassDefFoundError:Could not initialize class net.sf.cglib.proxy.Enhancer

有人说缺少 包会报上面的错,加上包之后真的可以哦。

 

问题2  jquery接收Action传回来的list

开始我Struts.xml中的代码是这样写的:

<package name="ajax"extends="json-default">

     <action name="listAction"class="com.flb.action.listAction">

        <result type="json"></result>

     </action>

   </package>

仔细看就挥发现只有<param name="root">result</param>

这一句不一样,可就是这一句话让我弄了一下午,所以代价是惨重的,一定要记得,没加这句话之前一直打印的都是:【Object Object】

尝试了各种方法传值,结果还是一样,后台的代码至少改过10遍以上,最后配置中话就搞定了一句话。也调试过,但报的错和这句话真的看似一点关系都没有,希望大家看了,碰到我一样的问题不会那么的纠结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值