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

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

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

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

在eclipse里启动

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



JSon 使用 之怪现象[已解决]_第1张图片


JSon 使用 之怪现象[已解决]_第2张图片


JSon 使用 之怪现象[已解决]_第3张图片

 



但是如果我用 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文件夹下)

教训呢!!

JSon 使用 之怪现象[已解决]_第4张图片


你可能感兴趣的:(json,使用,之怪现象)