首先,项目中使用javaweb作为后台服务器,源码地址:服务器和客户端源码地址。
接下来进入正题。
一、java web服务器
这里就多说了,不太了解j2ee的请查阅相关书籍。
项目结构如下:
News类定义了之后解析的JSON对象的内容;
NewsServer则是定义了一个获取最新新闻News的接口;
NewsServer则是实现了这个接口,定义了获取最新新闻的方法;
NewsListServlet则是一个实现客户端get和post请求的servlet,用于实现网络请求时的业务逻辑处理,主要返回含有News内容的json字符串;
jsonnewslist.jsp是一个jsp文件用于测试服务器是否正常运行。
服务器部分就不啰嗦了,直接贴代码和截图
(1)News类
public class News {
private Integer id;
private String title;
private Integer timelength;
public News(Integer id, String title, Integer timelength) {
this.id = id;
this.title = title;
this.timelength = timelength;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getTimelength() {
return timelength;
}
public void setTimelength(Integer timelength) {
this.timelength = timelength;
}
}
(2)NewsServer接口
public interface NewsServer {
/*
* 获取最新的新闻News
*/
public java.util.List<News> getLastNews();
}
(3)NewsServerBean类
import java.util.ArrayList;
import java.util.List;
public class NewsServerBean implements NewsServer {
@Override
public List<News> getLastNews() {
// TODO Auto-generated method stub
List<News> news = new ArrayList<>();
news.add(new News(10, "吕文健", 20));
news.add(new News(45, "李昱喜", 10));
news.add(new News(89, "android is amazing", 50));
return news;
}
}
(4)NewsListServlet类
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name="newslist",
urlPatterns={"/newslist"}
)//配置Servlet
public class NewsListServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
NewsServerBean serverbean =new NewsServerBean();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
req.setCharacterEncoding("GBK");
resp.setCharacterEncoding("GBK");//这里设置成gbk防止手机端显示乱码,之前设置为utf-8总是乱码
List<News> news = serverbean.getLastNews();
StringBuilder json = new StringBuilder();
json.append("[");
for(News news2:news){
json.append('{').append("\"id\":").append(news2.getId()).append(",");
json.append("\"title\":").append("\""+news2.getTitle()+"\"").append(",");
json.append("\"timelength\":").append(news2.getTimelength());
json.append('}').append(",");
}
json.deleteCharAt(json.length()-1);//?
json.append("]");
req.setAttribute("json", json.toString());
req.getRequestDispatcher("/jsonnewslist.jsp").forward(req, resp);
}
}
(5)jsonnewslist.jsp(在服务端测试服务器是否布置成功)
<%@ page language="java" contentType="text/plain; charset=GBK"
pageEncoding="GBK"%>
${json}
(6)服务器运行结果
OK,运行成功,服务器解决了,楼主把它打包成war,放在阿里云服务器上,省去了用电脑做服务器的各种麻烦。 接下来进入正题,客户端解析Json
二、android客户端