JSon 使用 之怪现象[已解决]

简介: 最近 学extjs 结合 json 时候 遇到一个 非常困扰的问题

使用  json-lib.jar 以及  jackson json 的  jar包

的类 将对象等封装成Json字符串

在eclipse里启动

tomcat均会报出一连串的错误 异常等

1.png2.png

3.png

但是如果我用 StringBuilder拼接成的 Json 项目运行毫无问题


百思不得其解





百度了半天,也没找到合理的答案,网上大多数说是web.xml的问题


但是检查了 却没有发现

,即使是它的问题 那为什么  字符串拼接的时候却没有报那么多异常呢?



现在将 web.xml代码 贴出,求指正




<?xml version="1.0" encoding="GBK"?>

<web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 <javaee:display-name>Welcome to Tomcat</javaee:display-name>

 <javaee:description>

    Welcome to Tomcat

 </javaee:description>

 

 

 

                 <!--登陆页面-->

 <servlet>

   <servlet-name>LoginCtl</servlet-name>

   <servlet-class>com.baidu.ManageSystem.Handler.LoginCtl</servlet-class>

 </servlet>

 <servlet-mapping>

   <servlet-name>LoginCtl</servlet-name>

   <url-pattern>/loginCtl</url-pattern>

 </servlet-mapping>

 

                   <!--获取数据页面-->

 <servlet>

   <servlet-name>GetJson</servlet-name>

   <servlet-class>com.baidu.ManageSystem.Handler.GetJson</servlet-class>

 </servlet>

 <servlet-mapping>

   <servlet-name>GetJson</servlet-name>

   <url-pattern>/getJson</url-pattern>

 </servlet-mapping>

 

</web-app>



servlet代码如下



package com.baidu.ManageSystem.Handler;

import java.io.IOException;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import java.util.ArrayList;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

import com.baidu.ManageSystem.Dao.BookDao;

import com.baidu.ManageSystem.Dao.CategoryDao;

import com.baidu.ManageSystem.DaoImpl.BookDaoJdbcImpl;

import com.baidu.ManageSystem.DaoImpl.CategoryDaoJdbcImpl;

import com.baidu.ManageSystem.Daomain.Book;

public class GetJson extends HttpServlet

{

PrintWriter pw = null;

private BookDao bookDao = new BookDaoJdbcImpl();

private ArrayList<Book> list_books = null;

private CategoryDao categoryDao = new CategoryDaoJdbcImpl();

JSONObject jsonObj = new JSONObject();

 


public void doGet(HttpServletRequest req,HttpServletResponse res)

{

 doPost(req,res);

}

public void doPost(HttpServletRequest req,HttpServletResponse res)

{

 

    //设置 字符编码  UTF-8防止中文乱码问题

     try {

   req.setCharacterEncoding("UTF-8");

  } catch (UnsupportedEncodingException e1) {

   e1.printStackTrace();

  }

     res.setCharacterEncoding("UTF-8");

  res.setContentType("text/html;charset=UTF-8");


  //获取起始索引  和  每页显示的个数

   String category_engname ="computer";

   int cat_id = 1;

   if(category_engname!=null)

    {

 

    cat_id =categoryDao.getCategoryId(category_engname);

 

    }

           //获取grid传来的 开始和每页的字段数      

        int start = Integer.parseInt(req.getParameter("start"));

        int limit = Integer.parseInt(req.getParameter("limit"));

        System.out.println("Grid传来的"+start+limit);

 

        list_books = bookDao.getBooks(cat_id,start,limit);

     

           //查询出总数

        int count =  bookDao.getBooksCount(cat_id);  

     

        //获取输出流

   try {

   pw = res.getWriter();

/*

        StringBuilder sb = new StringBuilder();  

       

         sb.append("{totalProperty:" + count + ",root:[");  

       //          迭代输出Json格式

        Iterator<Book> it = list_books.iterator();

        int i=0;

     

        while(it.hasNext()){

         Book book = it.next();

       

            i++;

         sb.append("{book_name:\""+book.getBook_name()+"\",book_number:\""+book.getBook_number()+

            "\",book_author:\""+book.getBook_author()+"\",book_count:"+book.getBook_count()+ ",book_printer:\""+book.getBook_printer()+

            "\",book_price:"+book.getBook_price()+"}");

           if(i<limit)

           {

            sb.append(",");

           }

        }

         sb.append("]}");  

 

         System.out.println(sb.toString());        

         pw.println(sb.toString()); */


 

   jsonObj.accumulate("totalProperty:", count);

   jsonObj.accumulate("root", list_books);

   pw.println(jsonObj.toString());


 

  } catch (IOException e) {

   e.printStackTrace();

  }

 

 

 

}


//servlet销毁时  关闭输出流

public void destroy()

{

 if(pw!=null){

  pw.close();

 }

 

}


}






最后居然找到了原因,教训呀!




我本来把jar 加到了 Apache  EAR Libraries 等平级的地方




应该加到 Web App Libraries 下  (或者项目的lib文件夹下)


教训呢!!


444444.png

相关文章
|
XML JSON 开发框架
为什么要使用 JSON?|学习笔记
快速学习 为什么要使用 JSON?
487 0
为什么要使用 JSON?|学习笔记
|
JSON JavaScript 前端开发
JSON学习笔记(三、使用)
JSON学习笔记(三、使用)
112 0
|
JSON JavaScript 前端开发
《AngularJS高级程序设计》——5.10 使用JSON
JavaScript对象符号(JSON)已经成了名副其实的Web应用数据格式。在JavaScript代码中使用JSON是简单且容易的,这就是为什么它已经变得如此流行。JSON支持一些基本的数据类型,与JavaScript巧妙地结合在了一起:Number、String、Boolean、Array、Object和特殊类型null。
1671 0
|
2天前
|
JSON 前端开发 API
【淘系】商品详情属性解析(属性规格详情图sku等json数据示例返回参考),淘系API接口系列
在淘宝(或天猫)平台上,商品详情属性(如属性规格、详情图、SKU等)是商家在发布商品时设置的,用于描述商品的详细信息和不同规格选项。这些信息对于消费者了解商品特性、进行购买决策至关重要。然而,直接通过前端页面获取这些信息的结构化数据(如JSON格式)并非直接暴露给普通用户或开发者,因为这涉及到平台的商业机密和数据安全。 不过,淘宝平台提供了丰富的API接口(如淘宝开放平台API),允许有资质的开发者或合作伙伴通过编程方式获取商品信息。这些API接口通常需要注册开发者账号、申请应用密钥(App Key)和秘钥(App Secret),并遵守淘宝的API使用协议。
|
2天前
|
JSON Java Android开发
Android 开发者必备秘籍:轻松攻克 JSON 格式数据解析难题,让你的应用更出色!
【8月更文挑战第18天】在Android开发中,解析JSON数据至关重要。JSON以其简洁和易读成为首选的数据交换格式。开发者可通过多种途径解析JSON,如使用内置的`JSONObject`和`JSONArray`类直接操作数据,或借助Google提供的Gson库将JSON自动映射为Java对象。无论哪种方法,正确解析JSON都是实现高效应用的关键,能帮助开发者处理网络请求返回的数据,并将其展示给用户,从而提升应用的功能性和用户体验。
|
5天前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
15 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
18天前
|
JSON 前端开发 Java
Spring MVC返回JSON数据
综上所述,Spring MVC提供了灵活、强大的方式来支持返回JSON数据,从直接使用 `@ResponseBody`及 `@RestController`注解,到通过配置消息转换器和异常处理器,开发人员可以根据具体需求选择合适的实现方式。
42 4
|
1月前
|
JSON 文字识别 数据格式
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
|
6天前
|
JSON JavaScript 数据格式
Jquery 将 JSON 列表的 某个属性值,添加到数组中,并判断一个值,在不在数据中
Jquery 将 JSON 列表的 某个属性值,添加到数组中,并判断一个值,在不在数据中
21 0