Android 는 자바 웹 프로젝트 를 배경 으로 사용 합 니 다.

12059 단어 Android
전재 출처 를 밝 혀 주 십시오:http://blog.csdn.net/joker_ya/article/details/40678429
OK!어젯밤 에 어떻게 백 스테이지 에서 데 이 터 를 안 드 로 이 드 가상 컴퓨터 로 전송 하 는 지 연구 했다.하늘 은 고심 한 사람 을 저 버 리 지 않 고 마침내 23 시 반 에 성공 적 으로 운행 하기 시작 했다.그래서 오늘 은 여러분 과 나 누고 싶 습 니 다.
우선 이번 실험 에 필요 한 jar 패키지 와 도 구 를 말씀 드 리 겠 습 니 다.
1. gson. jar 패키지 -- 다운로드 주소 첨부:http://download.csdn.net/detail/joker_ya/8107767
2. volley. jat 패키지 -- 다운로드 주소 첨부:http://download.csdn.net/detail/joker_ya/8107771
3. MyEclipse 8.5 (백 엔 드 로) 와 Eclipse (안 드 로 이 드 애플 리 케 이 션 으로)
도구 와 jar 가방 을 준비 한 후, 다음은 백 스테이지 입 니 다.MyEclipse 를 열 고 HouTai 라 는 웹 프로젝트 를 만 듭 니 다.
(1) 프로젝트 의 WebRoot - > WEB - INF - - > lib 디 렉 터 리 에서 우리 의 gson. jar 패 키 지 를 가 져 오기;
(2) WebRoot 디 렉 터 리 에 img 이라는 폴 더 를 새로 만 들 고 그림 자원 을 넣 습 니 다.
디 렉 터 리 는 다음 과 같 습 니 다.
Android之使用JavaWeb项目作为后台的实现_第1张图片
우선, 우 리 는 com. joker. domain 패키지 에 새 Girl 클래스 를 만 들 고 대상 을 표시 하여 json 형식의 데이터 로 변환 합 니 다.
package com.joker.domain;

/**
 * @author Joker_Ya
 */
public class Girl {
	private int id;
	private String name;
	private String image;

	/*
	 * set get  
	 */
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getImage() {
		return image;
	}

	public void setImage(String image) {
		this.image = image;
	}

	@Override
	public String toString() {
		return "People [id=" + id + ", image=" + image + ", name=" + name + "]";
	}

}

다음은 com. joker. servlet 패키지 에 GetDataServlet 의 servlet 를 새로 만들어 데이터 변환 을 실현 합 니 다.
package com.joker.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson;
import com.joker.domain.Girl;

/**
 * @author Joker_Ya
 */
public class GetDataServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//   Gson  
		Gson gson = new Gson();
		/*
		 *           
		 */
		List girls = new ArrayList();
		for (int i = 1; i <= 6; i++) {
			Girl girl = new Girl();
			girl.setId(i);
			girl.setName("girl" + i);
			/*
			 * request.getContextPath()            “/HouTai”        
			 *     “/HouTai/img/girl.jpg”         
			 * request.getContextPath()+"/img/girl"+i+".jpg"
			 */
			girl.setImage(request.getContextPath() + "/img/girl" + i + ".jpg");
			girls.add(girl);
		}
		//   gson.toJson()      ,         json      
		String str = gson.toJson(girls);
		//  str     request  ,key="data"
		request.setAttribute("data", "{\"data\":" + str + "}");
		//    index.jsp      
		request.getRequestDispatcher("/index.jsp").forward(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

	}

}

마지막 으로 index. jsp 입 니 다. 이 페이지 는 간단 합 니 다. el 표현 식 으로 request 필드 의 데 이 터 를 직접 출력 합 니 다.


${data}

자, 백 스테이지 가 거의 완성 되 었 습 니 다.우 리 는 이 공 사 를 발표 하고 브 라 우 저 로 방문 합 니 다.http://localhost:8080/HouTai/servlet/GetDataServlet효 과 를 보 세 요:

그리고 이 페이지 의 소스 코드 를 다시 봅 시다.

위의 그림 에서 볼 수 있 습 니 다. 첫 번 째 줄 은 빈 줄 입 니 다. 따라서 안 드 로 이 드 애플 리 케 이 션 을 작성 할 때 이 를 처리 하 는 것 을 잊 지 마 세 요. (빈 칸 제거)우 리 는 확실히 Girl 대상 을 json 형식 으로 바 꾸 고 출력 에 성공 했다.완벽 해!
이상, 백 스테이지 우 리 는 기본적으로 완성 했다.다음은 배경 에 들 어 오 는 데 이 터 를 테스트 하기 위해 안 드 로 이 드 애플 리 케 이 션 을 쓰 는 것 입 니 다.
Eclipse 에서 GetHouTaiDataDemo 라 는 안 드 로 이 드 애플 리 케 이 션 을 새로 열 고 libs 디 렉 터 리 에서 volley. jat 패 키 지 를 가 져 옵 니 다.디 렉 터 리 는 다음 과 같 습 니 다.
Android之使用JavaWeb项目作为后台的实现_第2张图片
메 인 화면 은 배경 에서 들 어 오 는 그림 과 데 이 터 를 표시 하 는 ListView 입 니 다.여기에 붙 이지 않 겠 습 니 다.
주로 MainActivity. java:
package com.example.gethoutaidatademo;

import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;

import com.android.volley.RequestQueue;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.Volley;

import android.support.v7.app.ActionBarActivity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

/**
 * @author Joker_Ya
 */

public class MainActivity extends ActionBarActivity {
	/*
	 *     
	 */
	private static final String BASEPATH = "http://222.17.106.37:8080";
	private static final String PATH = "http://222.17.106.37:8080/HouTai/servlet/GetDataServlet";
	// ListView
	private ListView mListView;
	private List> list = new ArrayList>();
	private Map map;
	private RequestQueue queue;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		mListView = (ListView) findViewById(R.id.listview);
		//     RequestQueue  
		queue = Volley.newRequestQueue(this);
		myAsyncTask task = new myAsyncTask();
		task.execute();//       
		MyAdapter adapter = new MyAdapter();
		mListView.setAdapter(adapter);
	}

	/**
	 * @author Joker_Ya MyAdapter  BaseAdapter  listview      
	 */
	public class MyAdapter extends BaseAdapter {

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return list.size();
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return list.get(position);
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup arg2) {
			// TODO Auto-generated method stub
			final Viewholder holder;
			if (convertView == null) {
				convertView = LayoutInflater.from(MainActivity.this).inflate(
						R.layout.items, null);
				//   Viewholder      findView
				holder = new Viewholder();
				holder.mImageView = (ImageView) convertView
						.findViewById(R.id.imageview);
				holder.mTextView = (TextView) convertView
						.findViewById(R.id.textview);
				convertView.setTag(holder);
			} else {
				holder = (Viewholder) convertView.getTag();
			}
			//         mImageView 
			ImageRequest request = new ImageRequest(BASEPATH
					+ list.get(position).get("image"), new Listener() {

				@Override
				public void onResponse(Bitmap response) {
					// TODO Auto-generated method stub
					holder.mImageView.setImageBitmap(response);
				}
			}, 0, 0, Config.ARGB_8888, new ErrorListener() {

				@Override
				public void onErrorResponse(VolleyError error) {
					// TODO Auto-generated method stub

				}
			});
			queue.add(request);
			holder.mTextView.setText(list.get(position).get("name"));
			return convertView;
		}

		public class Viewholder {
			ImageView mImageView;
			TextView mTextView;
		}
	}

	/**
	 * @author Joker_Ya myAsyncTask  AsyncTask
	 */
	public class myAsyncTask extends AsyncTask {
		/**
		 *         
		 */
		@Override
		protected String doInBackground(Void... arg0) {
			// TODO Auto-generated method stub
			String result = "";
			try {
				HttpGet get = new HttpGet(new URI(PATH));
				HttpClient client = new DefaultHttpClient();
				HttpResponse response = client.execute(get);
				if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
					result = EntityUtils.toString(response.getEntity());
					//             
					result = result.trim();
					Log.v("++++++++++++", result);
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return result;
		}

		/**
		 *   result(json      )      list 
		 */
		@Override
		protected void onPostExecute(String result) {
			// TODO Auto-generated method stub
			String name = "";
			try {
				JSONArray array = new JSONObject(result).getJSONArray("data");
				for (int i = 0; i < array.length(); i++) {
					JSONObject object = array.getJSONObject(i);
					Iterator> iterator = object.keys();
					map = new HashMap();
					while (iterator.hasNext()) {
						name = iterator.next().toString();
						map.put(name, object.getString(name));
					}
					list.add(map);
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			super.onPostExecute(result);
		}
	}
}

원래 HttpClient 로 경 로 를 방 문 했 는데, 절반 을 썼 을 때 갑자기 그림 에 접근 해 야 한 다 는 것 을 알 게 되 어 좀 번 거 로 웠 습 니 다.고 치 는 것 도 귀찮아 서 volley. jar 가방 을 가 져 와 그림 을 얻 었 습 니 다.사실 배경 데 이 터 를 방문 하 는 것 도 volley. jar 패키지 의 json Request 로 json 데 이 터 를 얻 을 수 있 습 니 다. 어 쩔 수 없 이 게 을 러 서 사용 합 니 다.
HttpClient 와 volley 를 결합 해서 사 용 했 습 니 다.좀 엉망 이 야.
items.xml:


    
    



자, 안 드 로 이 드 엔 드 애플 리 케 이 션 도 썼 습 니 다.다음은 효 과 를 시험 해 보 는 것 이다.
Android之使用JavaWeb项目作为后台的实现_第3张图片
그림 에서 알 수 있 듯 이 우 리 는 백 스테이지 에서 자원 을 얻 고 성공 적 으로 나 타 났 다.이로써 자바 웹 프로젝트 를 배경 으로 한 실현 은 큰 성 과 를 거 두 었 다.
마지막 으로 원본 다운로드 주소 (HouTai 의 Web Project 배경 응용 프로그램 과 GetHouTaiDataDemo 의 Android 응용 프로그램 포함) 를 첨부 합 니 다.
원본 코드 다운로드

좋은 웹페이지 즐겨찾기