做作業工程中遇到一些問題,特此記錄一下
解決的問題:使用EasyUI框架搭建簡單學生管理系統(數據庫增刪改查)操作時配合JSP,不知道如何把從數據庫獲得的數據封裝成JSON格式並傳回前端JSP並進行展示
解決工具:Servlet、MVC設計模式
1.數據封裝
//連接數據庫 Connection connection=null; String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";//SQL數據庫引擎 String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=tjl";//數據源 !!!注意若出現加載或者連接數據庫失敗一般是這里出現問題 String Name="sa"; String Pwd="19990713"; ResultSet rs=null; //定義JSON數組,用於保存從數據庫查出來的數據 JSONArray array = new JSONArray(); try{ Class.forName(driverName); connection=DriverManager.getConnection(dbURL,Name,Pwd); System.out.println("連接數據庫成功"); }catch(Exception e){ e.printStackTrace(); System.out.println("連接失敗"); } Statement stmt = null; try { stmt = connection.createStatement(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } /*//增刪改操作 String sql_1="insert into student values('990403','佩奇','男','12','1','2101')"; int count_1 = 0; try { count_1 = stmt.executeUpdate(sql_1); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }//返回值表示增刪改幾條數據 //處理結果 if(count_1>0){ System.out.println("更新成功!"); }*/ //查詢操作 String sql_2="select * from student"; try { rs = stmt.executeQuery(sql_2); // 獲取列數 ResultSetMetaData metaData = rs.getMetaData(); int columnCount = metaData.getColumnCount(); while (rs.next()) { JSONObject jsonObj = new JSONObject(); // 遍歷每一列 for (int i = 1; i <= columnCount; i++) { String columnName =metaData.getColumnLabel(i); String value = rs.getString(columnName); jsonObj.put(columnName, value); } array.put(jsonObj); } } catch (SQLException e1) { e1.printStackTrace(); }
2.Servlet基礎知識
3.在Ecplise內創建Servlet
在您所創建的WEB項目的src目錄右鍵新建,如圖,選擇Servlet,如果有版本選項,選擇3.0版本,系統會自動創建映射和基本都代碼格式
4.完整代碼
package com.jwglxt.data; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.JSONArray; import org.json.JSONObject; @WebServlet("/getStudent") public class getStudent extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //設置編碼格式 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/json; charset=utf-8"); //連接數據庫 Connection connection=null; String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";//SQL數據庫引擎 String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=tjl";//數據源 !!!注意若出現加載或者連接數據庫失敗一般是這里出現問題 String Name="sa"; String Pwd="19990713"; ResultSet rs=null; //定義JSON數組,用於保存從數據庫查出來的數據 JSONArray array = new JSONArray(); try{ Class.forName(driverName); connection=DriverManager.getConnection(dbURL,Name,Pwd); System.out.println("連接數據庫成功"); }catch(Exception e){ e.printStackTrace(); System.out.println("連接失敗"); } Statement stmt = null; try { stmt = connection.createStatement(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } /*//增刪改操作 String sql_1="insert into student values('990403','佩奇','男','12','1','2101')"; int count_1 = 0; try { count_1 = stmt.executeUpdate(sql_1); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }//返回值表示增刪改幾條數據 //處理結果 if(count_1>0){ System.out.println("更新成功!"); }*/ //查詢操作 String sql_2="select * from student"; try { rs = stmt.executeQuery(sql_2); // 獲取列數 ResultSetMetaData metaData = rs.getMetaData(); int columnCount = metaData.getColumnCount(); while (rs.next()) { JSONObject jsonObj = new JSONObject(); // 遍歷每一列 for (int i = 1; i <= columnCount; i++) { String columnName =metaData.getColumnLabel(i); String value = rs.getString(columnName); jsonObj.put(columnName, value); } array.put(jsonObj); } } catch (SQLException e1) { e1.printStackTrace(); } //關閉 try { if(rs!=null) rs.close(); stmt.close(); connection.close(); } catch (SQLException e) { e.printStackTrace(); } PrintWriter out = response.getWriter(); out.println(array); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
5.EasyUI引用數據
參考文章:https://blog.csdn.net/qq_38313548/article/details/85966603