下面的結構圖
1.在src你創建com.hqyj.wj.model建立model包,model里放數據庫的元素,User.java的截圖
package com.hqyj.wj.model; //用戶信息表 public class User { private int id; private String name; private String birthday; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } }
2.在src你創建com.hqyj.wj.dao.inf建立包,這個包是放接口類,這是UserDaoInf的截圖
package com.hqyj.wj.dao.inf; import java.util.List; import com.hqyj.wj.model.User; /** * 數據訪問層的接口定義數據接口的方法 * */ public interface UserDaoInf { //定義一個查詢方法 List<User> search(); }
3.在src你創建com.hqyj.wj.dao建立包,這個包連接數據庫,及實現上面的接口類
package com.hqyj.wj.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import com.hqyj.wj.dao.inf.UserDaoInf; import com.hqyj.wj.model.User; /** * * @author wl 數據訪問接口 */ public class UserDao implements UserDaoInf { // 數據訪問數據庫的連接對象 protected Connection con = null; //預編譯你寫的sql語句 protected PreparedStatement ps=null; //查詢預編譯的sql語句 protected ResultSet rs=null; // 獲取數據庫鏈接 @SuppressWarnings("finally") public Connection getCon() { try { // 加載mysql驅動 Class.forName("com.mysql.jdbc.Driver"); //獲取數據庫鏈接 con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/image?characterEncoding=utf8", "root", "root"); System.out.println("鏈接成功"); return con; } catch (Exception e) { System.out.println("鏈接失敗"+e.getMessage()); return null; // } finally { // try { // con.close(); // } catch (SQLException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // return null; // } // } } /** * 查詢方法 */ public List<User> search() { List<User> list=new ArrayList<User>(); try { //定義一個sql語句 //String sql="SELECT a.id as 序號,a.salary as '薪水',b.`name` as '姓名' from salary a LEFT JOIN `user` b on a.u_id=b.id"; String sql="SELECT * from user"; //獲取數據庫連接 con=getCon(); //預編譯sql語句 ps=con.prepareStatement(sql); //把編譯出來的結果集裝載到ResultSet對象里面 rs=ps.executeQuery(); // rs=statement.executeQuery(sql); //取出ResultSet里的結果集裝載到數據模型里 while(rs.next()){ User user=new User(); user.setName(rs.getString("name")); user.setBirthday(rs.getString("birthday")); user.setId(Integer.parseInt(rs.getString("id"))); list.add(user); } } catch (Exception e) { System.out.println("查詢錯誤"+e.getMessage()); }finally{ try { rs.close(); ps.close(); con.close(); } catch (Exception e2) { e2.printStackTrace(); } } return list; } }
5.要引入數據庫包mysql-connector-java-commercial-5.1.25-bin.jar,和json-lib-2.2.3-jdk15.jar在項目名字上右鍵->properties->java Build Path->Libraries->Add External Jars然后選擇你下載的包
6.在src下面創建測試類
import java.util.List; import com.hqyj.wj.dao.UserDao; import com.hqyj.wj.model.User; public class Test { /** * @param args */ public static void main(String[] args) { //獲取數據庫訪問類對象 UserDao dao=new UserDao(); dao.getCon(); List<User> list=dao.search(); for(int i=0;i<list.size();i++){ System.out.println("id=="+list.get(i).getId()); System.out.println("name=="+list.get(i).getName()); System.out.println("birthday=="+list.get(i).getBirthday()); } } }
7.成功顯示
8.src創建服務類和接口,UserServiceInf和UserService
package com.hqyj.wj.service.inf; import java.util.List; import com.hqyj.wj.model.User; public interface UserServiceInf { List<User> search(); }
package com.hqyj.wj.service; import java.util.List; import com.hqyj.wj.dao.UserDao; import com.hqyj.wj.dao.inf.UserDaoInf; import com.hqyj.wj.model.User; import com.hqyj.wj.service.inf.UserServiceInf; /** *邏輯服務層實現類 */ public class UserService implements UserServiceInf{ UserDaoInf us=new UserDao(); public List<User> search() { return us.search(); } }
9.src創建控制層 ,下新建個服務
package com.hqyj.wj.controller; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; import com.hqyj.wj.service.*; import com.hqyj.wj.service.inf.*; import com.hqyj.wj.model.*; import java.util.List; import java.util.ArrayList; public class OneServlet extends HttpServlet { public OneServlet() { super(); } public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } //doget對應的是ajax的$.get()方法 //request是裝載請求數據 //response響應數據到前端對象 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //解決中文亂碼的問題 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //在服務器端設置允許在其他域名下訪問,及響應類型、響應頭設置 System.out.println("這是"); response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods","POST"); response.setHeader("Access-Control-Allow-Headers","x-requested-with,content-type"); //響應的文本格式 response.setContentType("text/html"); //獲取響應的輸出對象 PrintWriter out = response.getWriter(); // out.print("nissssss"); // out.print("您好呀"); //創建服務器層實現類 UserServiceInf service=new UserService(); List<User> list=service.search(); //把list數據解析成前端頁面能讀取的數據 JSONArray json=JSONArray.fromObject(list); out.print(json.toString()); out.flush(); out.close(); } //doget對應的是ajax的$.post()方法 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); out.println(", using the POST method"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } public void init() throws ServletException { // Put your code here } }
10.新建一個html,獲取數據庫數據
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ajax獲取集合</title> <script src="../js/jquery-3.1.1.min.js"></script> </head> <body> <table> <thead> <tr><th>id</th> <th>姓名</th> <th>生日</th></tr> </thead> <tbody> </tbody> </table> <script> $(function(){ $.get("http://localhost:8080/jquery/servlet/OneServlet",function(data){ var num=eval(data); var str; // for(var o in num){ // console.log(num[o].name); // str+=" <tr> <td>"+num[o].id+"</td> <td>"+num[o].name+"</td> <td>"+num[o].birthday+"</td></tr>"; // $("tbody").html(str) // } for(var i=0;i<num.length;i++){ str+=" <tr> <td>"+num[i].id+"</td> <td>"+num[i].name+"</td> <td>"+num[i].birthday+"</td></tr>"; } $("tbody").html(str) }) }) </script> </body> </html>
11.就可以運行成功了,我最開始運行失敗了,把tomcat7換為tomcat6就正確了