android–使用Struts2服務端與android互動

來源:互聯網
上載者:User

一,伺服器端:

  首先搭建struts2的環境,匯入必要的類庫。

web.xml檔案:

<?xml version="1.0" encoding="UTF-8"?><br /><web-app version="2.5"<br />xmlns="http://java.sun.com/xml/ns/javaee"<br />xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />xsi:schemaLocation="http://java.sun.com/xml/ns/javaee<br />http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><br /> <welcome-file-list><br /> <welcome-file>index.jsp</welcome-file><br /> </welcome-file-list><br /> <filter><br /> <filter-name>struts2</filter-name><br /> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class><br /> </filter><br /> <filter-mapping><br /> <filter-name>struts2</filter-name><br /> <url-pattern>/*</url-pattern><br /> </filter-mapping><br /></web-app><br />
struts.xml檔案:

<?xml version="1.0" encoding="GBK"?><br /><!DOCTYPE struts PUBLIC<br /> "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"<br /> "http://struts.apache.org/dtds/struts-2.0.dtd"><br /><struts><br /><package name="testjson" extends="json-default"></p><p><action name="getjson" class="com.shao.action.JSONAction" method="json"><br /> <result type="json"></result><br /></action></p><p></package><br /></struts>
Action類:

package com.shao.action;</p><p>import java.io.IOException;<br />import java.util.ArrayList;<br />import java.util.List;</p><p>import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;</p><p>import org.apache.struts2.interceptor.ServletRequestAware;<br />import org.apache.struts2.interceptor.ServletResponseAware;</p><p>import com.google.gson.Gson;<br />import com.opensymphony.xwork2.ActionSupport;<br />import com.shao.domain.Music;</p><p>public class JSONAction extends ActionSupport implements ServletRequestAware,<br />ServletResponseAware {</p><p>/**<br /> *<br /> */<br />private static final long serialVersionUID = -3604892179657815531L;<br />private HttpServletRequest request;<br />private HttpServletResponse response;<br />private String format;<br />public String getFormat() {<br />return format;<br />}</p><p>public void setFormat(String format) {<br />this.format = format;<br />}</p><p>@Override<br />public void setServletRequest(HttpServletRequest request) {<br />// TODO Auto-generated method stub<br />this.request = request;<br />}</p><p>@Override<br />public void setServletResponse(HttpServletResponse response) {<br />// TODO Auto-generated method stub<br />this.response = response;<br />}</p><p>public void json(){<br />List<Music> list = new ArrayList<Music>();<br />//JsonArray jsonArray = new JsonArray();<br />//JsonObject jsonObject = new JsonObject();<br />Gson gson = new Gson();<br />Music m1 = new Music();<br />m1.setId(1);<br />m1.setAuthor("遊鴻明");<br />m1.setName("白色戀人");<br />m1.setTime("04:01");<br />list.add(m1);<br />Music m2 = new Music();<br />m2.setId(2);<br />m2.setAuthor("陳奕迅");<br />m2.setName("淘汰");<br />m2.setTime("04:44");<br />list.add(m2);<br />Music m3 = new Music();<br />m3.setId(3);<br />m3.setAuthor("謝霆鋒");<br />m3.setName("黃種人");<br />m3.setTime("04:24");<br />list.add(m3);<br />java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<Music>>() {<br />}.getType();<br />String beanListToJson = gson.toJson(list,type);<br />System.out.println("GSON-->"+beanListToJson);<br /> try {<br /> response.setCharacterEncoding("GBK");<br /> //response.setContentType("text/xml;charset=utf-8");<br /> this.response.getWriter().write(beanListToJson);<br /> } catch (IOException e) {<br /> e.printStackTrace();<br /> }<br />}<br />}<br />

這個Music實體類,android用戶端也用到。

package com.shao.domain;</p><p>public class Music {</p><p> private Integer id;<br /> private String name;<br /> private String time;<br /> private String author;<br />public Integer getId() {<br />return id;<br />}<br />public void setId(Integer id) {<br />this.id = id;<br />}<br />public String getName() {<br />return name;<br />}<br />public void setName(String name) {<br />this.name = name;<br />}<br />public String getTime() {<br />return time;<br />}<br />public void setTime(String time) {<br />this.time = time;<br />}<br />public String getAuthor() {<br />return author;<br />}<br />public void setAuthor(String author) {<br />this.author = author;<br />}<br />}<br />
訪問 http://localhost:8080/Client/getjson.action;結果:

二,android用戶端:

Activity類:

     

package com.shao.main;</p><p>import java.util.ArrayList;<br />import java.util.HashMap;<br />import java.util.List;<br />import java.util.Map;</p><p>import android.app.Activity;<br />import android.os.Bundle;<br />import android.view.View;<br />import android.view.View.OnClickListener;<br />import android.widget.Button;<br />import android.widget.ListView;<br />import android.widget.SimpleAdapter;</p><p>public class JsonClientActivity extends Activity {<br /> /** Called when the activity is first created. */<br /> private Button update;<br /> private ListView listView;<br />@Override<br /> public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.main);<br /> update = (Button) findViewById(R.id.update);<br /> listView = (ListView) findViewById(R.id.list);<br /> update.setOnClickListener(new OnClickListener() {</p><p>@Override<br />public void onClick(View v) {<br />// TODO Auto-generated method stub<br /> String urlStr="http://10.0.2.2:8080/Client/getjson.action";<br /> Stringresult = GsonUtil.getJson(urlStr);<br /> List<Music> list = GsonUtil.getListFromJson(result);<br /> List<Map<String,Object>> data = getAdapterData(list);</p><p> SimpleAdapter adapter =new SimpleAdapter(JsonClientActivity.this, data, R.layout.list, new String[]{"name","author","time"}, new int[]{R.id.name,R.id.author,R.id.time});<br /> listView.setAdapter(adapter);<br /> //listView.<br />}<br />});<br /> }<br />private List<Map<String,Object>> getAdapterData(List list){<br /> List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();<br /> for(int i=0;i<list.size();i++){<br /> Map<String,Object> map = new HashMap<String, Object>();<br /> Music music= (Music)list.get(i);<br /> map.put("name",music.getName());<br /> map.put("author", music.getAuthor());<br /> map.put("time",music.getTime());<br /> data.add(map);<br /> }<br /> return data;<br />}<br />}

package com.shao.main;</p><p>import java.net.URI;<br />import java.util.List;</p><p>import org.apache.http.HttpEntity;<br />import org.apache.http.HttpResponse;<br />import org.apache.http.client.HttpClient;<br />import org.apache.http.client.methods.HttpPost;<br />import org.apache.http.impl.client.DefaultHttpClient;<br />import org.apache.http.util.EntityUtils;</p><p>import com.google.gson.Gson;</p><p>public class GsonUtil {<br /> public static String getJson(String url){</p><p> HttpClient client = new DefaultHttpClient();</p><p> HttpPost request;<br /> try {<br />request = new HttpPost(new URI(url));<br />HttpResponse response = client.execute(request);<br /> // 判斷請求是否成功<br /> if (response.getStatusLine().getStatusCode() == 200) { //200表示請求成功<br /> HttpEntity entity = response.getEntity();<br /> if(entity!=null){<br /> String beanListToJson = EntityUtils.toString(entity,"GBK");<br /> return beanListToJson;<br /> }<br /> }</p><p>} catch (Exception e) {<br />// TODO: handle exception<br />}<br /> return null;<br /> }<br /> public static List<Music> getListFromJson(String json){<br />java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<Music>>() {<br />}.getType();<br />Gson gson = new Gson();<br />List<Music> list = gson.fromJson(json, type);<br />return list;<br /> }<br />}<br />
list.xml

<?xml version="1.0" encoding="utf-8"?><br /><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:orientation="vertical"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent"<br /> ><br /><TextView<br />android:id="@+id/name"<br /> android:layout_width="fill_parent"<br /> android:layout_height="wrap_content"<br /> android:text="name"<br /> /><br /> <TextView<br /> android:id="@+id/author"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_below="@id/name"<br /> android:paddingTop="5px"<br /> android:text="author"<br /> ><br /> </TextView><br /> <TextView<br /> android:id="@+id/time"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_below="@id/name"<br /> android:layout_alignTop="@id/author"<br /> android:layout_alignParentRight="true"<br /> android:text="time"><br /> </TextView><br /></RelativeLayout><br />

運行結果:

主要的互動都是通過goolge的Gson完成

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.