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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章