Android服务器搭建——Jsp+Servlet,返回Json到Android客户端
来源:互联网 发布:画婚礼图软件 编辑:程序博客网 时间:2024/06/15 08:03
——热爱开源,乐于分享
Android服务器搭建——Jsp+Servlet,返回Json到Android客户端
这几天心血来潮,想搭建一个简单的Android服务器端,用于客户端返回Json数据,就花了2天的时间补了一下JavaWeb方面的知识,然后网上看了几篇技术博客关于Android服务器怎么搭建的,自己就尝试搞一下,弄出来了,分享一下个人的实现方法,详细记录下来以备以后回顾。
1.服务器搭建:服务器搭建采用的是Jsp+Servlet框架,个人感觉,如果是仅仅的搭建简单的用于返回Json数据的服务器,Servlet超级方便;
2.Android客户端:客户端获取刚才搭建的服务器上的Json数据,采用了Android-Async-Http网络请求框架;
3.真机测试:主要是要注意Android真机测试访问localhost需要注意的地方。
下面正式开始:
一、搭建服务器
为了方便,服务器搭建采用Myeclipse,Tomcat7
1.Myeclipse:到网上直接下载一个exe安装文件进行安装即可;
2.Tomcat7:到Apache官网下载http://tomcat.apache.org/download-70.cgi,
并直接安装,安装成功后简单测试一下是否能够运行:
3.将Tomcat7部署到Myeclipse中
打开Myeclipse,进入“Window——preference”,然后输入“Tomcat”——点击Tomcat7.x——选择你刚才Tomcat7的安装路径
4.新建一个WebProject
(1)导入相关jar包。导入JavaWeb所需要的处理json所需要的jar包,(因为在服务器端需要对json的处理操作),并Build Path即可。
(2)构建相关类。
User.Java就是一个数据模型:
package com.csdn.bean;import java.util.Date;public class User { private Integer id; private String name; private String pass; private Date regDate; private int age; public User() { super(); // TODO Auto-generated constructor stub } public User(Integer id, String name, String pass, Date regDate, int age) { super(); this.id = id; this.name = name; this.pass = pass; this.regDate = regDate; this.age = age; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public Date getRegDate() { return regDate; } public void setRegDate(Date regDate) { this.regDate = regDate; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
UserDao.java,提供一个接口:
package com.csdn.dao;import java.util.List;import com.csdn.bean.User;public interface UserDao { List<User> findAll();}
UserDaoImpl.java,实现刚才的接口:
package com.csdn.dao.impl;import java.util.ArrayList;import java.util.Date;import java.util.List;import com.csdn.bean.User;import com.csdn.dao.UserDao;public class UserDaoImpl implements UserDao{ @Override public List<User> findAll() { // TODO Auto-generated method stub List<User> users=new ArrayList<User>(); //模拟数据,或者这里的数据可以来自数据库!!!!! for(int i=0;i<10;i++){ User user=new User(i, "admin"+i, "123"+i, new Date(System.currentTimeMillis()), i+20); users.add(user); } return users; }}
JsonServlet.java,编写json数据(核心):
package com.csdn.servlet;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONArray;import com.csdn.bean.User;import com.csdn.dao.UserDao;import com.csdn.dao.impl.UserDaoImpl;public class JsonServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { UserDao daoImpl=new UserDaoImpl(); List<User> entities=daoImpl.findAll(); JSONArray jsonArray=JSONArray.fromObject(entities); resp.setContentType("application/json"); //resp.getWriter().write(jsonArray.toString()); resp.getWriter().println(jsonArray.toString()); resp.getWriter().close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }}
(3)配置Servlet
都知道,要使用Servlet还需要配置web.xml:
(3)把项目部署到Tomcat中,并启动Tomcat
(4)测试运行
打开一个浏览器,不要用myeclipse的web browser!!!,输入http://localhost:8080/JsonServer/JsonServlet进行访问,可以看到json数据了,说明服务器搭建成功。接下来客户端的操作就是很简单了,和一般的Android访问网络获取json数据就是完全一样的了:
二、Android客户端获取刚才搭建的服务器的json数据并用真机测试
注意事项:
1.因为用到了Android-Async-Http网络请求框架,所以最好使用eclipse,而不要使用AndroidStudio,因为AndroidStudio取消了Apache的http,会报错的。
2.在用真机测试的时候,需要将URL地址改为你的电脑的IP地址,而不再使用localhost,我的使用”http://192.168.0.104:8080/JsonServer/JsonServlet“这个地址;
3.关闭电脑的防火墙,否则访问不到;
4.手机和电脑最好连接在同一个网络内,WIFI和局域网都行;
5.记得添加网络权限。
<uses-permission android:name="android.permission.INTERNET"/>
6.导入Android-Async-Http的jar包:
很简单,直接上代码:
package com.example.jsonserverclient;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import org.apache.http.Header;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import com.loopj.android.http.AsyncHttpClient;import com.loopj.android.http.JsonHttpResponseHandler;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;public class MainActivity extends Activity { private ListView listView; private List<String> pass; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pass=new ArrayList<String>(); listView = (ListView) findViewById(R.id.listView); initData(); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub // Toast.makeText(getApplicationContext(), "你点击了第"+(position+1)+"个条目", Toast.LENGTH_LONG).show(); ListView lv=(ListView) parent; String str=lv.getItemAtPosition(position)+"";//返回的直接就是item的内容!!!!!!!!!! String password=pass.get(position); Toast.makeText(getApplicationContext(), "你点击了"+str+"&&密码为:"+password, Toast.LENGTH_LONG).show(); } }); } private void initData() { // TODO Auto-generated method stub AsyncHttpClient client = new AsyncHttpClient(); String url = "http://192.168.0.104:8080/JsonServer/JsonServlet"; Toast.makeText(this, "发送请求到服务器", Toast.LENGTH_LONG).show(); client.get(url, new JsonHttpResponseHandler(){ @Override public void onSuccess(int statusCode, Header[] headers, JSONArray response) { // TODO Auto-generated method stub super.onSuccess(statusCode, headers, response); if(statusCode==200){ List<String> objects=new ArrayList<String>(); for(int i=0;i<response.length();i++){ try { JSONObject obj=response.getJSONObject(i); objects.add(obj.getString("name")); pass.add(obj.getString("pass")); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, objects); listView.setAdapter(adapter); } } }); }}
有问题欢迎交流,随时回复:
效果:
- Android服务器搭建——Jsp+Servlet,返回Json到Android客户端
- Jsp读取数据库返回json数据,Android客户端接收json
- Jsp读取数据库返回json数据,Android客户端接收json
- Jsp读取数据库返回json数据,Android客户端接收json
- struts2注解返回json数据到android客户端
- 一步一步的搭建Tomcat服务器 + servlet + android客户端
- IDEA搭建servlet服务器与android客户端通信(一)
- IDEA搭建servlet服务器与android客户端通信(二)
- android客户端通过json连接servlet服务端
- android 发送json 到服务器
- android 发送json 到服务器
- android服务器与客户端交互之servlet
- android 客户端访问自己建立的服务器并返回JSON数据进行解析学习
- android客户端访问tomcat搭建的servlet服务器并互传数据
- Android解析服务器返回的Json数据
- 返回JSON数据到客户端
- Android 发送json数据到servlet
- android手机客户端上传文件,java servlet服务器端接收并保存到服务器
- (三分 两次)Line belt -- HDOJ
- 利用FFmpeg将Jpeg图片转为任意视频容器格式
- JS学习-数据类型
- mathematica抓取网页
- 论文阅读:Fully Convolutional Instance-aware Semantic Segmentation
- Android服务器搭建——Jsp+Servlet,返回Json到Android客户端
- JavaScript获取随机数,要求是长度已知的字符串格式
- Oracle 11g RAC 管理常用命令
- ES6之let关键字
- 8086汇编练习
- HDU1003(动态规划)
- 初探Android中LayoutInflater原理
- BZOJ4237(cdq分治+单调栈)
- 容斥原理 学习 M