S2SH+JSON+Android列表数据(Server端)

 服务端主要是配置struts2,如果你使用easyui那么恭喜你,就不用配置了,下面我用花卉这个项目给大家描述一下
首先配置struts.xml
 1.建议开放时候配置开发模式这样修改配置文件就不用重启服务器了,有些人说不好用,本人貌似没有觉得不好用。 
<constant name="struts.devMode" value="true" />
 2.配置Action,开发过easyui的应该都很属性这代码把。
使用json需要加入一个jar包
struts2-json-plugin-2.1.8.1.jar 
<action name="queryAndroid" class="com.Flower.action.FlowerAction"  
            method="queryAndroid">  
            <result name="success" type="json">
                <param name="includeProperties">rows.*,total</param><!-- json -->
            </result>
            <!--json,-->  
        </action>  
 3.写Action方法,这个很简单了,做个ssh的都知道该怎么去做 
   
   
   private List rows// 
   private FlowerDao flowerDao;
   public String queryAndroid() throws Exception {
        
        rows = flowerDao.queryAndroid();
        return "success";
    
    public List getRows() {
        return rows;
    }
    public void setRows(List rows) {
        this.rows = rows;
    }
    
        public FlowerDao getFlowerDao() {
        return flowerDao;
    }
    @Resource(name = "flowerDao")
    public void setFlowerDao(FlowerDao flowerDao) {
        this.flowerDao = flowerDao;
    }
 4.配置完成在浏览器里测试一下服务端确认无误可以得到json。服务端就搭建完成。
我的json是这个格式 
{"rows":[{"alias":"","genera":"","id":1,"name":"","origin":"","price":2.5}
,{"alias":"","genera":"","id":2,"name":"","origin":"","price":3.0}
,{"alias":"","genera":"","id":3,"name":"","origin":"西","price":3.0}
,{"alias":"","genera":"","id":6,"name":"","origin":"","price":1.0}
,{"alias":"","genera":"","id":7,"name":"","origin":"","price":0.0}
,{"alias":"2","genera":"3","id":8,"name":"1","origin":"4","price":14.0}]
,"total":null}
 这个貌似没什么说的了,直接上代码把,就是注意一下几个我开发中时候的小错误
1.忘记加网络权限(特么害我搞了好几个小时,这回长记性了)
2.线程问题,1)我一开始配置线程策略,调试成功就是访问服务器8次
                    2)我换成用创建线程类就ok了,不过大家小心因为,线程是交换运行的,需要把加载数据列表代码发到线程执行完毕后的地方,这样就不会出现问题,我尝试过会出现闪退的现象。
3

 
    Flower[] flowerArray;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            String json = (Stringmsg.obj;
            flowerArray = parseJsonMulti(json);
            ListView lv_hh = (ListViewfindViewById(R.id.lv_hh);
            lv_hh.setAdapter(new HomeAdapter());
        }
    };
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // ThreadUtil.runThread();// 线
        Thread t = new Thread(new getJSON());
        t.start();
    }
    private class HomeAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            return flowerArray.length;
        }
        @Override
        public View getView(int positionView convertViewViewGroup parent) {
            View view = View.inflate(getApplicationContext(),
                    R.layout.main_itemnull);
            TextView tvname = (TextViewview.findViewById(R.id.tv_name);
            TextView tvid = (TextViewview.findViewById(R.id.tv_id);
            Flower flower = flowerArray[position];
            tvid.setText(flower.getId()+"");
            tvname.setText(flower.getName());
            return view;
        }
        @Override
        public Object getItem(int position) {
            return null;
        }
        @Override
        public long getItemId(int position) {
            return 0;
        }
    }
    class getJSON implements Runnable {
        String url = "http://192.168.1.102:8080/FlowerManager/queryAndroid";
        @Override
        public void run() {
            String strResult = connServerForResult(url);
            Message msg = new Message();
            msg.obj = strResult;
            handler.sendMessage(msg);
        }
    }
    private String connServerForResult(String strUrl) {
        // HttpGet&nbsp;
        HttpGet httpRequest = new HttpGet(strUrl);
        String strResult = "";
        try {
            // HttpClient&nbsp;
            HttpClient httpClient = new DefaultHttpClient();
            // HttpResponse&nbsp;
            HttpResponse httpResponse = httpClient.execute(httpRequest);
            if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                // &nbsp;
                strResult = EntityUtils.toString(httpResponse.getEntity());
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return strResult;
    }
    private Flower[] parseJsonMulti(String strResult) {
        Flower[] json = null;
        try {
            JSONArray jsonObjs = new JSONObject(strResult).getJSONArray("rows");
            json = new Flower[jsonObjs.length()];
            for (int i = 0i < jsonObjs.length(); i++) {
                JSONObject jsonObjkkk = (JSONObjectjsonObjs.opt(i);
                Flower flower = new Flower();
                flower.setId(Integer.valueOf(jsonObjkkk.getString("id")));
                flower.setName(jsonObjkkk.getString("name"));
                json[i= flower;
            }
            return json;
        } catch (JSONException e) {
            System.out.println("Jsons parse error !");
            e.printStackTrace();
            return null;
        }
    }
 
 项目源码http://pan.baidu.com/s/1sj4myU5
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章