服务器端用Servlet响应客户端请求,Gson请求。可以返回多个数据库中的信息
来源:互联网 发布:c语言区间内素数 编辑:程序博客网 时间:2024/05/01 22:14
Gson解析工具类GsonUtil,可以实现对象转换为Json字符串,也可以将json字符串转换为object
package gsonutil;import java.util.ArrayList;import java.util.List;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.reflect.TypeToken;public class GsonUtil<T> { private static Gson gson = new Gson(); public static <T> String objectToJsonStr(T object) { String jsonStr; jsonStr = gson.toJson(object); return jsonStr; } public static <T> String objectsToJsonStr(List<T> objects) { String jsonStr; jsonStr = gson.toJson(objects); return jsonStr; } public static <T> T jsonStrToObject(String jsonStr,Class<T> cla) { T object = gson.fromJson(jsonStr,cla); return object; } public static <T> List<T> jsonStrToObjects(String jsonStr,Class<T> cla) { //json字符串不能为空 //json字符串必须为数组节点类型 List<T> listT = null; try { //创建泛型对象 T t = cla.newInstance(); //利用类加载加载泛型的具体类型 Class<T> classT = (Class<T>) Class.forName(t.getClass().getName()); List<Object> listObj = new ArrayList<Object>(); //将数组节点中json字符串转换为object对象到Object的list集合 listObj = new GsonBuilder().create().fromJson(jsonStr, new TypeToken<List<Object>>(){}.getType()); //转换未成功 if(listObj == null || listObj.isEmpty()) return null; listT = new ArrayList<T>(); //将Object的list中的的每一个元素中的json字符串转换为泛型代表的类型加入泛型代表的list集合返回 for (Object obj : listObj) { T perT = new GsonBuilder().create().fromJson(obj.toString(), classT); listT.add(perT); } } catch (Exception e) { e.printStackTrace(); } return listT; }}
ProductInfo类,get,set方法实现获取产品id,name,path
package bean;public class ProductInfo { private String img; private String name; private int id; public ProductInfo() { } public ProductInfo( int id,String img, String name) { this.img = img; this.name = name; this.id = id; } public String getImg() { return img; } public void setImg(String img) { this.img = img; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; }}
ProductInfoDao类返回类对象prds,包含了数据库中的产品id,name,path信息
package db;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import bean.ProductInfo;public class ProductInfoDao { int id = -1; private DBConn db; public ProductInfoDao() { db = DBConn.getInstance(); } public List<ProductInfo> getProductInfos() throws Exception { List<ProductInfo> prds = new ArrayList<ProductInfo>(); try { /*这种结果集不支持,滚动的读去功能所以,如果获得这样一个结果集,只能使用它里面的next()方法,逐个的读去数据. * 所以如果只是想要可以滚动的类型的Result只要把Statement如下赋值就行了. * Statement st=conn.createStatement(Result.TYPE_SCROLL_INSENITIVE,ResultSet.CONCUR_READ_ONLY); * */ Connection conn = db.getConnection(); Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery("SELECT * FROM product where prdId <=10"); while (rs.next()) { ProductInfo prd = new ProductInfo(); prd.setId(rs.getInt(1)); prd.setImg(rs.getString(2)); prd.setName("haha"+rs.getInt(1)); prds.add(prd); System.out.println(prd.getId()); System.out.println(prd.getImg()); System.out.println(prd.getName()); } stat.close(); conn.close(); return prds; } catch (SQLException e) { System.out.println("查询失败!"); e.printStackTrace(); } return null; } public static void main(String[] args) { ProductInfoDao pDao=new ProductInfoDao(); try { pDao.getProductInfos(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
DBConn类实现数据库连接
package db;import java.io.File;import java.sql.*;public class DBConn { private static DBConn db = null; public static DBConn getInstance(){ if (db == null){ db = new DBConn(); } return db; } //初始化数据库 private DBConn() { Connection conn = null; //System.out.println(new java.util.Date()); try { conn = getConnection(); conn.setAutoCommit(false); conn.commit(); conn.close(); } catch (SQLException e) { System.out.println("数据库创建失败!"); e.printStackTrace(); } } //创建数据库连接 public Connection getConnection() { try { String driver = "com.mysql.jdbc.Driver"; // URL指向要访问的数据库名 String url = "jdbc:mysql://127.0.0.1:3306/mall"; // MySQL配置时的用户名 String user = "root"; // MySQL配置时的密码 String password = ""; String sql=null; File file=null; Class.forName(driver); // 连续数据库 Connection conn = DriverManager.getConnection(url, user, password); if(!conn.isClosed()) System.out.println("数据库连接成功"); return conn; } catch(Exception e) { System.out.println("数据库连接异常"); e.printStackTrace(); return null; } }/*public static void main(String[] args) { DBConn dbConn =new DBConn();}*/}
ProductServlet类实现post方法向客户端响应请求
package servlet;import gsonutil.GsonUtil;import java.io.IOException;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 db.ProductInfoDao;import bean.ProductInfo;@SuppressWarnings("serial")public class ProductServlet extends HttpServlet{ String jsonStr; ProductInfo prdInfo = new ProductInfo(); ProductInfoDao prdDao = new ProductInfoDao(); Gson gson = new Gson(); protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setCharacterEncoding("utf-8"); resp.setContentType("text/html;Charset=utf-8"); List<ProductInfo> prds = null; try { prds = new ProductInfoDao().getProductInfos(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } jsonStr =GsonUtil.objectToJsonStr(prds); System.out.println(prds.size()); for(int i=0;i<prds.size();i++) { System.out.println(prds.get(i).getId()+" "+prds.get(i).getImg()+" "+prds.get(i).getName()); } System.out.println("---------"); System.out.println(jsonStr); resp.getWriter().print(jsonStr); }}
实验结果
1 0
- 服务器端用Servlet响应客户端请求,Gson请求。可以返回多个数据库中的信息
- Java实现服务器端对多个客户端请求响应
- 在Java中使用HttpURLConnection发送http客户端请求、服务器端返回信息、接受服务器端的信息
- servlet中的请求与响应
- 通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分)
- 通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分)
- 通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分
- 通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分)
- 通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分)
- 通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分
- 通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分)
- 响应客户端请求(servlet与jsp)
- 服务器端我们通过一个 Servlet 来处理来自客户端的请求,并对客户端作出响应。其核心处理代码
- 一个servlet响应多个请求实现方式--反射
- Servlet 客户端 HTTP 请求重要头信息
- Servlet容器响应客户端请求访问特定的Servlet流程
- Servlet容器响应客户端请求访问特定的Servlet流程
- Servlet容器响应客户端请求访问特定的Servlet流程
- 两个脚本的相互加载
- 游戏界面的跳转
- 用draw9patch.bat绘制的气泡图片用在Android程序中有黑线,怎么解决?
- 最小生成树(vector)用法
- Service的使用(一)
- 服务器端用Servlet响应客户端请求,Gson请求。可以返回多个数据库中的信息
- MSP430 定时器输出PWM波形
- C++语言中位运算符在计算中的实际运用
- 2016 Multi-University Training Contest 1 1006 PowMod
- 安卓端的简单计算器
- 7.24——8.23暑期计划
- 【Poj】-1363-Rails(栈)
- Bzoj2839:集合计数:组合数学+容斥
- Android中为什么使用Log,而不适用System.out()?