使用 json-lib.jar 以及 jackson json 的 jar包
的类 将对象等封装成Json字符串
在eclipse里启动
tomcat均会报出一连串的错误 异常等
但是如果我用 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文件夹下)
教训呢!!