JSON简介

  首先我们来理解json(JavaScript Object Notation),如果你熟悉python的字典结构和列表结构,其实json格式是非常容易理解的,当然不熟也不难理解,网上的资料很多。

  JSON格式包含有两种结构:

  json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
  1、对象:对象在js中表示为“{}”括起来的内容引用了一个对象,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
  2、数组:数组在js中是中括号“[]”括起来的内容引用了一个数组,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
  经过对象、数组2种结构就可以组合成复杂的数据结构了。

可以到http://www.json.org/java/index.html 下载解析我们要使用到的代码,我们用这个包来封装json格式的字符串,我们可以用toString()把这些对象装换成字符串。

JSONObject

  注意它的使用和一个Map非常相似,因为JSONObject类对应的字符串实际上可以被认为是一个字典结构(正如python中打印出来的字典格式一样)

使用put(string,string)或构造函数,在json中添加一个键值对

使用put(string, new string[]{})来添加一个键值对,值是一个数组

使用put(string, map)来添加一个键值对,值是一个满足json格式的字符串

使用getString(key)来返回一个值,当然它被转换称字符串了

JSONArray

  它的用法和List相似,如果只需要返回一个[ ... ]形式的字符串,这个方法就很好。

使用静态方法fromObject( new string[]{})或fromObject(list)来得到一个这个类的对象,对应一个数组字符串。

使用add(string)或add(index,string)添加元素

使用add(jsonobj)添加一个符合json格式的字符串

tips:添加很多嵌套虽然理论上可行,然而实际应用中完全没有必要如此复杂,简单容易被解释就是最好的。

Servlet简介

响应代码的编程范式:

public class ServletTest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setContentType("text/html");
PrintWriter writer = response.getWriter(); String persontype = request.getParameter("persontype");
String name = request.getParameter("name"); writer.println("this is html or json"); writer.close();
}
}

request对象的方法:

getHeaderNames(); 返回所有的报文头的字段名字符串

getHeader(java.lang.String name) 返回某个字段名对应的字符串

Cookie[]   getCookies() ; 返回的是根据报文生成的cookie对象

Cookie[] getCookies() ; //获取报文头中的Cookie(读取Cookie的报文头属性) 
java.util.Locale getLocale() //获取客户端本地化信息(读取 Accept-Language 的报文头属性) 
int getContentLength();//获取请求报文体的长度(读取Content-Length的报文头属性)

HttpSession getSession() 返回这个请求关联的会话对象

response对象的方法:

void    setHeader(String name, String value);在报文头增加一个字段

void addCookie(Cookie cookie) //添加Cookie报文头属性
void sendRedirect(String location) //不但会设置Location的响应报文头,还会生成303的状态码

JDBC简介

mysql或postgresql的jdbc编程范式:

public class JdbcTest {
public static final String url = "jdbc:mysql://127.0.0.1/emarket";
public static final String name = "com.mysql.jdbc.Driver";
public static final String user = "root";
public static final String password = "mysql"; public Connection conn = null;
public PreparedStatement pst = null; public execute(String sql) {
try {
Class.forName(name);//指定连接类型
conn = DriverManager.getConnection(url, user, password);//获取连接
pst = conn.prepareStatement(sql);//准备执行语句
ResultSet rs = pst.executeQuery();
while (rs.next()) {
System.out.println("@1");
System.out.print(rs.getString(1));
System.out.println(rs.getString(2));
}
} catch (Exception e) {
e.printStackTrace();
} try {
this.conn.close(); //关闭数据库链接,否则会导致连接数目过多
this.pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

完整的流程代码

  web服务器把HTTP请求报文封装成对象,并以此为参数执行我们的servlet代码,那么我们的代码要怎么样写呢?很自然,我们要用jdbc读取数据,然后让数据存储在字典或者数组结构中,在借助json包构建JSONObect对象,然后把它装换成字符串,写入HTTP报文体中。现在给出数据库中一个关系模式 item_homepage,我们要读取它:

JSON包源代码分析

  

Servlet,JDBC,JSONObject三者配和处理客户端请求并返回正确的json数据的更多相关文章

  1. 实现客户端与服务端之间传输json数据

    步骤:创建数据库,并创建表.利用myeclipse创建新工程,利用JDBC实现java操纵数据库.实现客户端类,服务端类.具体实现:创建数据表create table usertable( usern ...

  2. ICE学习第四步-----客户端请求服务器返回数据

    这次我们来做一个例子,流程很简单:客户端向服务器发送一条指令,服务端接收到这条指令之后,向客户端发送数据库中查询到的数据,最终显示在DataGridView上. 根据上一篇文章介绍的Slice语法,我 ...

  3. android客户端从服务器端获取json数据并解析的实现代码

    今天总结一下android客户端从服务器端获取json数据的实现代码,需要的朋友可以参考下   首先客户端从服务器端获取json数据 1.利用HttpUrlConnection /** * 从指定的U ...

  4. (转)android客户端从服务器端获取json数据并解析的实现代码

    今天总结一下android客户端从服务器端获取json数据的实现代码,需要的朋友可以参考下       首先客户端从服务器端获取json数据 1.利用HttpUrlConnection   复制代码 ...

  5. android客户端从服务器端获取json数据并解析的实现代码(重要)

    首先客户端从服务器端获取json数据 1.利用HttpUrlConnection /** * 从指定的URL中获取数组 * @param urlPath * @return * @throws Exc ...

  6. JSP-Runood:JSP 客户端请求

    ylbtech-JSP-Runood:JSP 客户端请求 1.返回顶部 1. JSP 客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息 ...

  7. 用easyui从servlet传递json数据到前端页面的两种方法

    用easyui从servlet传递json数据到前端页面的两种方法 两种方法获取的数据在servlet层传递的方法相同,下面为Servlet中代码,以查询表中所有信息为例. //重写doGet方法 p ...

  8. JSP、servlet、SQL三者之间的数据传递

    JSP.servlet.SQL三者之间的数据传递 博客分类: web开发 JSPservletSQL数据库连接池web开发  前言: 最近一直在做WEB开发,现总结一下这一段时间的体会和感触. 切记, ...

  9. MVC-1(javabean+jsp+servlet+jdbc)

    这是一篇最初版本的mvc设计模式的demo.路要一步一步走,弄明白这其中的逻辑,对后面掌握ssh,ssm等框架大有裨益. 计算机系的同学们也要为毕设做准备了,希望可以帮你们迈出自己做毕设的第一步(微笑 ...

随机推荐

  1. transparent 的新问题

    http://msdn.microsoft.com/en-us/library/windows/desktop/bb172255(v=vs.85).aspx 人物透明 显示是纹理和白色混合 开始怀疑是 ...

  2. C# 虚方法 与 隐藏方法(new) 区别

    重写和隐藏的定义: 重写:继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的          例如:基类方法声明为virtual(虚方法),派生类中使用override申明此 ...

  3. $POST数组论证($GET || $COOKIE || $REQUEST 同理)

    我觉得还是有多个$_POST  如果只有一个$_POST,那么,多个人[同时]提交的话就不好处理  或者一个$_POST 时间限制(如同时钟周期)处理(不可能,不然响应没这么快) 或者 一个$_POS ...

  4. ssh 内在溢出

    相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识. 在解决j ...

  5. Unity3D研究院之IOS全自动打包生成ipa

    接着上一篇文章, 自动生成framework,这篇文章我把shell自动化打包ipa整理了一下,希望大家喜欢,嘿嘿.. 建议大家先看一下上一篇文章.http://www.xuanyusong.com/ ...

  6. 轻轻修改配置文件完成 OpenStack 监控

    当我们使用虚拟化云平台 OpenStack 时,必然要时时监控其虚拟机性能,随着近年企业级数据中心的不断发展,像混合虚拟化环境的业务需求也在持续增长中,因而也随之带来的监控需求更显重要,所以小编带来一 ...

  7. 玩转图片Base64编码

    什么是 base64 编码? 图片的 base64 编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址. 这样做有什么意义呢?我们知道,我们所看到的网页上的每一个图片,都是需要消耗一 ...

  8. 在win7之后安装Ubuntu14.04系统后,丢失对win7的引导

    安装完ubuntu 14.04后,开机直接进入ubuntu.但是win7下的分区还在,只是未显示引导菜单. 恢复步骤: (前提是机器上确实存在win7的引导) $ sudo update-grub G ...

  9. lintcode 中等题:kth-largest-element 第k大元素

    题目 第k大元素 在数组中找到第k大的元素 样例 给出数组[9,3,2,4,8],第三大的元素是4 给出数组 [1,2,3,4,5],第一大的元素是5,第二大的元素是4,第三大的元素是3,以此类推 注 ...

  10. Hibernate逍遥游记-第12章 映射值类型集合-002映射Bag(<idbag><collection-id>)

    1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...