-
java编写的Cs模式计算器
2009-11-20 13:37:24java编写的CS模式的计算器 客户端雨服务端分离! -
Java数据接口编写简单例子,Java Json解析,服务端接口输出Json数据,客户端通过HTTP获取接口Json数据
2016-05-20 09:25:10Java数据接口编写简单例子,Java Web Json解析,服务端接口输出Json数据,客户端通过HTTP获取接口Json数据。 目前主流的CS结构,数据都是通过RESTful风格接口形式呈现,不管是桌面级应用程序还是手机端,接口是我们...实现效果
实现原因
目前主流的CS结构,数据都是通过RESTful风格接口形式呈现,不管是桌面级应用程序还是手机端,接口是我们获取数据的大多数选择,主流数据接口呈现形式主要是Json和Xml,后者目前基本渐行渐远。Json的轻量级和可读型成为了大多数公司及个人开发者的第一选择。主流公司在编写数据接口时大多通过框架实现,如RESTEasy、Retrofit等,在这里通过简单的java web代码写一个简单的接口项目例子供大家参考,后附项目源代码。实现步骤
在Eclipse中新建项目JsonTest项目,项目结构如下,
此处主要用到的类只有几个,其他类为Json测试用类,此处可以忽略。
在lib下导入或在maven中引用gson-2.6.2.jar包和servlet-api.jar包。
gson此处用于将持久化对象解析为Json,或将Json序列化为对象。
servlet-api用于servlet相关类创建及API运用。
关于gson,是Google开源项目下的一个Java Json解析工具包,具体使用及详细信息可以看这篇文章:Gson简要使用
步骤一:新建测试用Model类
新建新闻测试类News,主要用于数据模型测试显示,Json转换测试等,代码如下:
新建分页测试类NewTotal,主要用于Json分页显示,代码如下:import java.util.Date; public class News { private int nId; // 新闻ID private String title; // 新闻标题 private String content; // 新闻内容 private String date; // 新闻发布日期 private String url; //新闻地址 private Date nDate; // 新闻日期,Date类型 public News(int nId, String title, String content, String date, String url) { this.nId = nId; this.title = title; this.content = content; this.date = date; this.url = url; } public News() { } public News(int nId, String title, String content, Date nDate, String url) { this.nId = nId; this.title = title; this.content = content; this.nDate = nDate; this.url = url; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public Date getnDate() { return nDate; } public void setnDate(Date nDate) { this.nDate = nDate; } public int getnId() { return nId; } public void setnId(int nId) { this.nId = nId; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } }
import java.util.List; public class NewTotal { private int total; //新闻数量 private List<News> rows; //新闻列表 public NewTotal() { } public NewTotal(int total, List<News> rows) { this.total = total; this.rows = rows; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public List<News> getRows() { return rows; } public void setRows(List<News> rows) { this.rows = rows; } }
步骤二:添加测试用Action和JSP界面
新建JsonServlet,继承自HttpServlet,具体代码详解已经在代码中注释:
import java.io.IOException; import java.io.PrintWriter; 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.test.model.NewTotal; import com.test.model.News; public class JsonServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 创建多个新闻类,模拟从数据库获取数据,可将此处改为用JDBC从数据库读取数据 News new1 = new News(110, "日本地震", "日本福田发生了7级地震", "2016-5-16 10:22:20", "http://world.huanqiu.com/exclusive/2016-05/8974294.html"); News new2 = new News(111, "Apple库克第八次访华", "近日库克第八次访华,与滴滴高层会谈", "2016-5-16 10:22:20", "http://mobile.163.com/16/0523/09/BNO7SG2B001168BQ.html"); News new3 = new News(113, "Google I/O大会开幕", "Google开发者大会即将举办,是否推出Android7.0?", "2016-5-16 10:22:20", "http://www.ithome.com/html/android/227647.htm"); News new4 = new News(114, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "http://news.mydrivers.com/1/484/484072.htm"); News new5 = new News(115, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new6 = new News(116, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new7 = new News(117, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new8 = new News(118, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new9 = new News(119, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new10 = new News(120, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new11 = new News(121, "获取新数据!!!!!!", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new12 = new News(122, "获取新数据!!!!!!", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new13 = new News(123, "获取新数据!!!!!!", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new14 = new News(124, "获取新数据!!!!!!", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new15 = new News(125, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new16 = new News(126, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new17 = new News(127, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new18 = new News(128, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new19 = new News(129, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new20 = new News(130, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); String page = req.getParameter("page"); // 将数据添加到数组 List<News> newslist = new ArrayList<News>(); if (page == null || page.equals("0")) { newslist.add(new1); newslist.add(new2); newslist.add(new3); newslist.add(new4); newslist.add(new5); newslist.add(new6); newslist.add(new7); newslist.add(new8); newslist.add(new9); newslist.add(new10); } else { newslist.add(new11); newslist.add(new12); newslist.add(new13); newslist.add(new14); newslist.add(new15); newslist.add(new16); newslist.add(new17); newslist.add(new18); newslist.add(new19); newslist.add(new20); } // 将数据封装到新闻总计类 NewTotal nt = new NewTotal(newslist.size(), newslist); // 调用GSON jar工具包封装好的toJson方法,可直接生成JSON字符串 Gson gson = new Gson(); String json = gson.toJson(nt); // 输出到界面 System.out.println(json); resp.setContentType("text/plain"); resp.setCharacterEncoding("gb2312"); PrintWriter out = new PrintWriter(resp.getOutputStream()); out.print(json); out.flush(); // 更多Json转换使用请看JsonTest类 } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
修改项目index.jsp页面如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>Test Json</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="getJson" method="get"> <input type="submit" value="点击获取新闻JSON数据"/> </form> </body> </html>
在项目中配置web.xml,注册JsonServlet映射,配置如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>JsonTest</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>JsonServlet</servlet-name> <servlet-class>com.test.json.JsonServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>JsonServlet</servlet-name> <url-pattern>/getJson</url-pattern> </servlet-mapping> </web-app>
步骤三:添加项目到Tomcat容器,运行服务器
运行服务器,在地址栏输入地址:http://localhost:8080/JsonTest/getJson?page=0,效果如图:其他关于JSON解析的也可以看我发布的源代码中的JsonTest类,获取源代码:JavaJson解析
声明
欢迎转载,但请保留文章原始出处
作者:Jaiky_杰哥
出处:http://blog.csdn.net/jaikydota163/article/details/51458880 -
Java实现CS框架的聊天程序.rar
2019-07-10 18:41:45Java实现CS框架的聊天程序,CS框架也就是Client客户端和Server服务端,客户端和服务端都可以看到消息,在客户端可编写消息,通过建立好的服务端连接,可实现点对点式的简单消息发送,也就是聊天的功能,程序还是框架... -
【转载】Java数据接口编写简单例子,Java Json解析,服务端接口输出Json数据,客户端通过HTTP获取接口Json...
2017-06-05 13:05:55版权声明:本文为Jaiky_杰哥原创实现效果实现原因目前主流的CS结构,数据都是通过RESTful风格接口形式呈现,不管是桌面级应用程序还是手机端,接口是我们获取数据的大多数选择,主流数据接口呈现形式主要是Json和Xml...版权声明:本文为Jaiky_杰哥原创
目前主流的CS结构,数据都是通过RESTful风格接口形式呈现,不管是桌面级应用程序还是手机端,接口是我们获取数据的大多数选择,主流数据接口呈现形式主要是Json和Xml,后者目前基本渐行渐远。Json的轻量级和可读型成为了大多数公司及个人开发者的第一选择。主流公司在编写数据接口时大多通过框架实现,如RESTEasy、Retrofit等,在这里通过简单的java web代码写一个简单的接口项目例子供大家参考,后附项目源代码。实现步骤
在Eclipse中新建项目JsonTest项目,项目结构如下,
此处主要用到的类只有几个,其他类为Json测试用类,此处可以忽略。
在lib下导入或在maven中引用gson-2.6.2.jar包和servlet-api.jar包。
gson此处用于将持久化对象解析为Json,或将Json序列化为对象。
servlet-api用于servlet相关类创建及API运用。
关于gson,是Google开源项目下的一个Java Json解析工具包,具体使用及详细信息可以看这篇文章:Gson简要使用
步骤一:新建测试用Model类
新建新闻测试类News,主要用于数据模型测试显示,Json转换测试等,代码如下:- import java.util.Date;
- public class News {
- private int nId; // 新闻ID
- private String title; // 新闻标题
- private String content; // 新闻内容
- private String date; // 新闻发布日期
- private String url; //新闻地址
- private Date nDate; // 新闻日期,Date类型
- public News(int nId, String title, String content, String date, String url) {
- this.nId = nId;
- this.title = title;
- this.content = content;
- this.date = date;
- this.url = url;
- }
- public News() {
- }
- public News(int nId, String title, String content, Date nDate, String url) {
- this.nId = nId;
- this.title = title;
- this.content = content;
- this.nDate = nDate;
- this.url = url;
- }
- public String getUrl() {
- return url;
- }
- public void setUrl(String url) {
- this.url = url;
- }
- public Date getnDate() {
- return nDate;
- }
- public void setnDate(Date nDate) {
- this.nDate = nDate;
- }
- public int getnId() {
- return nId;
- }
- public void setnId(int nId) {
- this.nId = nId;
- }
- public String getTitle() {
- return title;
- }
- public void setTitle(String title) {
- this.title = title;
- }
- public String getContent() {
- return content;
- }
- public void setContent(String content) {
- this.content = content;
- }
- public String getDate() {
- return date;
- }
- public void setDate(String date) {
- this.date = date;
- }
- }
新建分页测试类NewTotal,主要用于Json分页显示,代码如下:import java.util.Date; public class News { private int nId; // 新闻ID private String title; // 新闻标题 private String content; // 新闻内容 private String date; // 新闻发布日期 private String url; //新闻地址 private Date nDate; // 新闻日期,Date类型 public News(int nId, String title, String content, String date, String url) { this.nId = nId; this.title = title; this.content = content; this.date = date; this.url = url; } public News() { } public News(int nId, String title, String content, Date nDate, String url) { this.nId = nId; this.title = title; this.content = content; this.nDate = nDate; this.url = url; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public Date getnDate() { return nDate; } public void setnDate(Date nDate) { this.nDate = nDate; } public int getnId() { return nId; } public void setnId(int nId) { this.nId = nId; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } }
- import java.util.List;
- public class NewTotal {
- private int total; //新闻数量
- private List<News> rows; //新闻列表
- public NewTotal() {
- }
- public NewTotal(int total, List<News> rows) {
- this.total = total;
- this.rows = rows;
- }
- public int getTotal() {
- return total;
- }
- public void setTotal(int total) {
- this.total = total;
- }
- public List<News> getRows() {
- return rows;
- }
- public void setRows(List<News> rows) {
- this.rows = rows;
- }
- }
import java.util.List; public class NewTotal { private int total; //新闻数量 private List<News> rows; //新闻列表 public NewTotal() { } public NewTotal(int total, List<News> rows) { this.total = total; this.rows = rows; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public List<News> getRows() { return rows; } public void setRows(List<News> rows) { this.rows = rows; } }
步骤二:添加测试用Action和JSP界面
新建JsonServlet,继承自HttpServlet,具体代码详解已经在代码中注释:
- import java.io.IOException;
- import java.io.PrintWriter;
- 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.test.model.NewTotal;
- import com.test.model.News;
- public class JsonServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- // 创建多个新闻类,模拟从数据库获取数据,可将此处改为用JDBC从数据库读取数据
- News new1 = new News(110, ”日本地震”, ”日本福田发生了7级地震”, “2016-5-16 10:22:20”,
- “http://world.huanqiu.com/exclusive/2016-05/8974294.html”);
- News new2 = new News(111, “Apple库克第八次访华”, ”近日库克第八次访华,与滴滴高层会谈”, “2016-5-16 10:22:20”,
- “http://mobile.163.com/16/0523/09/BNO7SG2B001168BQ.html”);
- News new3 = new News(113, “Google I/O大会开幕”, “Google开发者大会即将举办,是否推出Android7.0?”, “2016-5-16 10:22:20”,
- “http://www.ithome.com/html/android/227647.htm”);
- News new4 = new News(114, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”,
- “http://news.mydrivers.com/1/484/484072.htm”);
- News new5 = new News(115, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new6 = new News(116, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new7 = new News(117, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new8 = new News(118, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new9 = new News(119, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new10 = new News(120, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new11 = new News(121, ”获取新数据!!!!!!”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new12 = new News(122, ”获取新数据!!!!!!”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new13 = new News(123, ”获取新数据!!!!!!”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new14 = new News(124, ”获取新数据!!!!!!”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new15 = new News(125, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new16 = new News(126, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new17 = new News(127, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new18 = new News(128, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new19 = new News(129, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- News new20 = new News(130, ”格力营收下滑400亿”, ”格里营收下滑400亿,董明珠说我活得好的很”, “2016-5-16 10:22:20”, “www.baidu.com”);
- String page = req.getParameter(“page”);
- // 将数据添加到数组
- List<News> newslist = new ArrayList<News>();
- if (page == null || page.equals(“0”)) {
- newslist.add(new1);
- newslist.add(new2);
- newslist.add(new3);
- newslist.add(new4);
- newslist.add(new5);
- newslist.add(new6);
- newslist.add(new7);
- newslist.add(new8);
- newslist.add(new9);
- newslist.add(new10);
- }
- else {
- newslist.add(new11);
- newslist.add(new12);
- newslist.add(new13);
- newslist.add(new14);
- newslist.add(new15);
- newslist.add(new16);
- newslist.add(new17);
- newslist.add(new18);
- newslist.add(new19);
- newslist.add(new20);
- }
- // 将数据封装到新闻总计类
- NewTotal nt = new NewTotal(newslist.size(), newslist);
- // 调用GSON jar工具包封装好的toJson方法,可直接生成JSON字符串
- Gson gson = new Gson();
- String json = gson.toJson(nt);
- // 输出到界面
- System.out.println(json);
- resp.setContentType(“text/plain”);
- resp.setCharacterEncoding(“gb2312”);
- PrintWriter out = new PrintWriter(resp.getOutputStream());
- out.print(json);
- out.flush();
- // 更多Json转换使用请看JsonTest类
- }
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- this.doGet(req, resp);
- }
- }
import java.io.IOException; import java.io.PrintWriter; 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.test.model.NewTotal; import com.test.model.News; public class JsonServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 创建多个新闻类,模拟从数据库获取数据,可将此处改为用JDBC从数据库读取数据 News new1 = new News(110, "日本地震", "日本福田发生了7级地震", "2016-5-16 10:22:20", "http://world.huanqiu.com/exclusive/2016-05/8974294.html"); News new2 = new News(111, "Apple库克第八次访华", "近日库克第八次访华,与滴滴高层会谈", "2016-5-16 10:22:20", "http://mobile.163.com/16/0523/09/BNO7SG2B001168BQ.html"); News new3 = new News(113, "Google I/O大会开幕", "Google开发者大会即将举办,是否推出Android7.0?", "2016-5-16 10:22:20", "http://www.ithome.com/html/android/227647.htm"); News new4 = new News(114, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "http://news.mydrivers.com/1/484/484072.htm"); News new5 = new News(115, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new6 = new News(116, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new7 = new News(117, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new8 = new News(118, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new9 = new News(119, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new10 = new News(120, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new11 = new News(121, "获取新数据!!!!!!", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new12 = new News(122, "获取新数据!!!!!!", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new13 = new News(123, "获取新数据!!!!!!", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new14 = new News(124, "获取新数据!!!!!!", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new15 = new News(125, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new16 = new News(126, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new17 = new News(127, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new18 = new News(128, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new19 = new News(129, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); News new20 = new News(130, "格力营收下滑400亿", "格里营收下滑400亿,董明珠说我活得好的很", "2016-5-16 10:22:20", "www.baidu.com"); String page = req.getParameter("page"); // 将数据添加到数组 List<News> newslist = new ArrayList<News>(); if (page == null || page.equals("0")) { newslist.add(new1); newslist.add(new2); newslist.add(new3); newslist.add(new4); newslist.add(new5); newslist.add(new6); newslist.add(new7); newslist.add(new8); newslist.add(new9); newslist.add(new10); } else { newslist.add(new11); newslist.add(new12); newslist.add(new13); newslist.add(new14); newslist.add(new15); newslist.add(new16); newslist.add(new17); newslist.add(new18); newslist.add(new19); newslist.add(new20); } // 将数据封装到新闻总计类 NewTotal nt = new NewTotal(newslist.size(), newslist); // 调用GSON jar工具包封装好的toJson方法,可直接生成JSON字符串 Gson gson = new Gson(); String json = gson.toJson(nt); // 输出到界面 System.out.println(json); resp.setContentType("text/plain"); resp.setCharacterEncoding("gb2312"); PrintWriter out = new PrintWriter(resp.getOutputStream()); out.print(json); out.flush(); // 更多Json转换使用请看JsonTest类 } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
修改项目index.jsp页面如下:
- <%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;
- %>
- <!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN”>
- <html>
- <head>
- <base href=“<%=basePath%>”>
- <title>Test Json</title>
- <meta http-equiv=“Content-Type” content=”text/html; charset=UTF-8>
- <meta http-equiv=“pragma” content=“no-cache”>
- <meta http-equiv=“cache-control” content=“no-cache”>
- <meta http-equiv=“expires” content=“0”>
- <meta http-equiv=“keywords” content=“keyword1,keyword2,keyword3”>
- <meta http-equiv=“description” content=“This is my page”>
- <!–
- <link rel=”stylesheet” type=”text/css” href=”styles.css”>
- –>
- </head>
- <body>
- <form action=“getJson” method=“get”>
- <input type=“submit” value=“点击获取新闻JSON数据”/>
- </form>
- </body>
- </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>Test Json</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="getJson" method="get"> <input type="submit" value="点击获取新闻JSON数据"/> </form> </body> </html>
在项目中配置web.xml,注册JsonServlet映射,配置如下:
- <?xml version=“1.0” encoding=“UTF-8”?>
- <web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns=“http://java.sun.com/xml/ns/javaee” xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd” id=“WebApp_ID” version=“3.0”>
- <display-name>JsonTest</display-name>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <servlet>
- <servlet-name>JsonServlet</servlet-name>
- <servlet-class>com.test.json.JsonServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>JsonServlet</servlet-name>
- <url-pattern>/getJson</url-pattern>
- </servlet-mapping>
- </web-app>
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>JsonTest</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>JsonServlet</servlet-name> <servlet-class>com.test.json.JsonServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>JsonServlet</servlet-name> <url-pattern>/getJson</url-pattern> </servlet-mapping> </web-app>
步骤三:添加项目到Tomcat容器,运行服务器
运行服务器,在地址栏输入地址:http://localhost:8080/JsonTest/getJson?page=0,效果如图:其他关于JSON解析的也可以看我发布的源代码中的JsonTest类,获取源代码:JavaJson解析
声明
欢迎转载,但请保留文章原始出处
作者:Jaiky_杰哥
出处:http://blog.csdn.net/jaikydota163/article/details/51458880 -
[创新杯] java net CS 多线程,多客户?
2011-05-21 17:36:00* 编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。 * 服务器程序启动后,监听端口5678的请求;客户端程序启动后,向服务器端口5678发送请求。 * 服务器不断接收客户机所写入的信息,并且... -
客户端与服务器的连接--java网络编程第一课
2020-09-30 22:18:48需要使用到两个类,来编写TCP协议的 CS程序 . 1.ServerSocket 搭建服务器 2.Socket 搭建客户端 两方使用socket(套接字 , 通信端点) 进行交流 ServerSocket 用于创建服务器 ,创建完毕后,,会绑定一个端口号。 然后此...TCP 协议 的 C/S程序
需要使用到两个类,来编写TCP协议的 CS程序 .
1.ServerSocket 搭建服务器
2.Socket 搭建客户端
两方使用socket(套接字 , 通信端点) 进行交流ServerSocket
用于创建服务器 ,创建完毕后,,会绑定一个端口号。
然后此服务器可以等待客户端连接 ,每连接一个客户端 , 服务器就会得到一个新的Socket对象, 用于跟客户端进行通信 .。常用构造方法:
ServerSocket(int port);
创建一个基于TCP/IP协议的服务器 , 并绑定指定的端口号.
注意: 参数port的范围是: 0-65535 (建议1025-65535)常用方法:
Socket accept();
等待客户端连接 ,此方法会导致线程的阻塞,直到一个新的客户端连接成功, return Socket对象后, 线程在继续执行.
void close();
释放占用的端口号 , 关闭服务器.Socket
是两台计算机之间通信的端点 , 是网络驱动提供给应用程序编程的一种接口 一套标准, 一种机制 .
构造方法:
Socket(String ip,int port)
创建一个套接字, 并连接指定ip和端口号的 服务器.
参数1. 服务器的ip地址
参数2. 服务器软件的端口号…常用方法:
- OutputStream getOutputStream();
返回的是 , 指向通信的另一端点的输出流
- InputStream getInputStream();
返回的是 , 指向通信的另一端点的输入流
- void close();
关闭套接字
注意:
在网络编程时, 获取输入输出流的操作 ,对于客户端与服务器来说是相对的
客户端的输入流, 输入的是服务器的输出流输出的内容.
客户端的输出流, 输出到了服务器的输入流中.
所以在使用时,需要注意以下一点规则:户端与服务器获取流的顺序必须是相反的:
例如:客户端先得到了输入流 , 那服务器必须先获取输出流package com.test; import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class ServerDemo { public static void main(String[] args) throws IOException { //搭建服务器 ServerSocket server = new ServerSocket(55565); System.out.println("服务器建立完毕,等待连接!"); //等待客户端连接 Socket socket = server.accept(); OutputStream os = socket.getOutputStream(); PrintStream ps = new PrintStream(os); ps.println("欢迎连接服务器!"); InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String text = br.readLine(); System.out.println("收到了客户端的消息:"+text); System.out.println("服务器连接完毕!"); } } 服务器建立完毕,等待连接! 收到了客户端的消息:你好,服务器 服务器连接完毕!
package com.test; import java.io.*; import java.net.Socket; public class ClientDemo { public static void main(String[] args) throws IOException { Socket socket = new Socket("127.0.0.1",55565); InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String text = br.readLine(); System.out.println("收到消息:"+text); OutputStream os = socket.getOutputStream(); PrintStream ps = new PrintStream(os); ps.println("你好,服务器"); } } 收到消息:欢迎连接服务器!
-
Java Json解析,Java Web Json解析,Java Web服务端获取Json数据,客户端通过HTTP获取Json数据
2016-09-25 00:16:37实现原因 目前主流的CS结构,数据都是通过RESTful接口形式呈现了,不管是桌面级应用程序还是手机端,接口是我们...主流公司在编写数据接口时大多通过框架实现,如RESTEasy、Retrofit等,在这里通过简单的java -
java web基础与编写第一个Servlet程序!
2018-12-17 22:32:13指采用client/server即客户机、服务器结构 简称cs结构 。服务器端程序需要等待响应客户程序发来的请求,客户端需要安装专用的客户端程序 。如qq等应用程序 优点:客户端响应速度快 缺点:高昂的维护,升级成本且投资... -
java源码包---java 源码 大量 实例
2013-04-18 23:15:26Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket... -
FTP客户端库(C#)
2008-08-06 09:39:00FTP客户端库(C#)作者:Jaimon Mathew翻译:eastvc这是一个C#版本的FTP客户端库,原始版本采用Java编写。该库将被编译为DLL文件,也包含了一个测试程序以演示库的使用方法。你可以从rfc得到更多关于FTP的信息。在... -
java源码包2
2013-04-20 11:28:17Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket... -
java源码包
2015-12-01 16:29:37Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket... -
Java学习篇27_[网络编程]软件架构、CS/BS、网络通信三要素、TCP通信、Scoket套接字、ServertSocket
2020-10-16 22:18:39上一篇博客:Java学习篇25_IO概述、字节流、字符流、IO流异常处理、属性集 目录 软件架构CS/BS 网络通信三要素 TCP通信 Socket套接字 ServerSocket 目标 能够辨别UDP和TCP协议特点 能够说出TCP协议下两个常用... -
java源码包3
2013-04-20 11:30:13Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket... -
[Java小程序]聊天室——Socket和ServerSocket的使用
2016-09-26 16:18:00这段小代码是因为担任Java助教给刚学习Java的本科大二的小学弟小学妹们指导,他们的实验作业就是编写一个Java聊天室客户端和服务器,为了避免出纰漏,自己事先写了一下。 客户端Ui代码: package com.CS; ... -
JAVA上百实例源码以及开源项目
2016-01-03 17:37:40Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket... -
自定义java.policy配置(如何让你的类禁止读写文件?禁止创建Socket对象?)
2018-12-10 13:55:28最近做的项目有一个特殊的需求,由于系统是CS的,客户端需要自己编写JAVA类上传至服务器运行,整个流程如下: 1.客户端编写JAVA类,并实现特定接口 2.由客户端的JAVA编译器将其编译成class 3.客户端通过socket将... -
JAVA上百实例源码以及开源项目源代码
2018-12-11 17:07:42Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证... -
java网络编程_Java基础 网络编程
2020-10-14 16:58:41主要内容软件架构CS/BS网络通信三要素TCP通信Socket套接字ServerSocket教学目标能够辨别UDP和TCP协议特点能够说出TCP协议下两个常用类名称能够编写TCP协议下字符串数据传输程序能够理解TCP协议下文件上传案例能够... -
成百上千个Java 源码DEMO 4(1-4是独立压缩包)
2017-03-29 17:40:59Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证... -
成百上千个Java 源码DEMO 3(1-4是独立压缩包)
2017-03-29 17:39:54Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证... -
CS-Notes :技术面试必备基础知识、Leetcode 题解、后端面试、Java 面试、春招、秋招、操作系统、计算机网络、系统设计。 Waking-Up :计算机基础(计算机网络/操作系统/数据库/Git...)面试问题全面总结,包含详细...
-
高端的HTML5响应式自适应企业通用类织梦模板.rar
-
MySQL 主从复制 Replication 详解(Linux 和 W
-
java泛型和集合 pdf_2020年最新整理的Java26个核心知识点PDF,刷完成功面试上了阿里...
-
使用vue搭建微信H5公众号项目
-
Odin - Inspector and Serializer3.0.3.unitypackage.zip
-
2021年 系统架构设计师 系列课
-
java泛型的实现原理_共享手册|想学Java吗?那先来看看JAVA泛型实现原理
-
回收站选址
-
TL1771 vs TL1772_Comparison_Ver10.pdf
-
在 Linux 上构建企业级 DNS 域名解析服务
-
Ubuntu install OpenWRT.docx
-
Amoeba 实现 MySQL 高可用、负载均衡和读写分离
-
win10批处理优化.bat
-
TL1769 Qualification Report_20050809.pdf
-
物联网基础篇:快速玩转MQTT
-
TL1763_V0.0_20060125.pdf
-
TL1771 Initial Sequence_166_20060105.pdf
-
UC1697v_V1.01_20071128.pdf
-
Mysql数据库面试直通车
-
java泛型类 方法 接口_java泛型(泛型接口、泛型类、泛型方法)