在本篇文章中,小編將介紹在jsp頁面中經過表格顯示數據庫的實現:下面咱們以「新聞發佈系統」中顯示一級標題的信息爲例進行講述,在新聞發佈系統中存在一二級標題,在後臺能夠對標題進行管理,可查詢標題等信息css
【step one】html
1-1 創建數據庫java
在jsp中,咱們使用的是mysql數據庫,對於此數據的優缺點本篇不予以講述,首先創建news數據庫,其數據庫中表的信息爲:mysql
eg:< id :1 ; name:娛樂; creator:ibbon;createTime:2014-11-21 22:17:43>web
【step two】 創建web項目(news)sql
2-1:首先,咱們在web項目的src文件夾寫入連接數據庫的相關的類,他們分別是:連接數據庫的類,數據的實體類數據庫
-----------------------------------------------------------------------------------------------------------------------------------------------------jsp
2-1-1 : 數據庫實體類,在此類中主要含有數據庫的字段,<包:cn.edu.bzu.entity ;實體類:Title.java;> 學習
1 package cn.news.jsp.entity; 2 3 import java.sql.Date; 4 5 public class Title { /** *下面這四個屬性爲數據庫表中的四個屬性 */ 6 private int id; 7 private String name; 8 private String creator; 9 private Date createTime; 10 11 public int getId() { 12 return id; 13 } 14 public void setId(int id) { 15 this.id = id; 16 } 17 public String getName() { 18 return name; 19 } 20 public void setName(String name) { 21 this.name = name; 22 } 23 public String getCreator() { 24 return creator; 25 } 26 public void setCreator(String creator) { 27 this.creator = creator; 28 } 29 public Date getCreateTime() { 30 return createTime; 31 } 32 public void setCreateTime(Date createTime) { 33 this.createTime = createTime; 34 } 35 public Title(int id, String name, String creator, Date createTime) { 36 super(); 37 this.id = id; 38 this.name = name; 39 this.creator = creator; 40 this.createTime = createTime; 41 } 42 43 }
ps:<實體類的做用>this
/**
*實體類的做用
*在JAVAWeb中,實體類裏面的某一個類,至關因而數據庫裏的一張表,一個類裏面的某個字段至關於表的列名
*在實體裏有getter和setter方法,getter是隻讀,setter是寫入
*/
-----------------------------------------------------------------------------------------------------------------------------------------------------
2-2-2 數據庫操做類 :下面以對數據庫的查詢功能書寫代碼,<包:cn.edu.bzu.dao;類:TitleDAO.java>
1 package cn.edu.bzu.dao; 2 import java.sql.*; 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import cn.edu.bzu.entity.Title; 7 8 public class TitleDAO { 9 public List readFirstTitle(){ 10 List<Title> list =new ArrayList<Title>(); 11 Connection con=null; 12 PreparedStatement psmt=null; 13 ResultSet rs=null; 14 try { 15 Class.forName("com.mysql.jdbc.Driver"); 16 } catch (ClassNotFoundException e) { 17 e.printStackTrace(); 18 } 19 20 try { 21 con=DriverManager.getConnection("jdbc:mysql://localhost:3306/news","root","baby123"); 22 String sql="select * from title"; 23 psmt=con.prepareStatement(sql); 24 rs=psmt.executeQuery(); 25 26 while(rs.next()) 27 { 28 int id=rs.getInt("id"); 29 String name=rs.getString("name"); 30 String creator=rs.getString("creator"); 31 Date createTime=rs.getDate("createTime"); 32 Title tl=new Title(id, name, creator, createTime); 33 list.add(tl); 34 } 35 36 } catch (SQLException e) { 37 e.printStackTrace(); 38 }finally 39 { 40 try { 41 if(rs!=null) 42 { 43 rs.close(); 44 } 45 if(psmt!=null) 46 { 47 psmt.close(); 48 } 49 if(con!=null) 50 { 51 con.close(); 52 } 53 } catch (SQLException e) { 54 e.printStackTrace(); 55 } 56 } 57 return list; 58 } 59 60 }
ps:如今分析一下上述代碼,
one:建立方法(public List readFirstTitle()),之因此選擇返回值是List是由於一個標題含有id,name,creator,cteateTime信息,這些信息存在集合中,便於管理,操做
two:建立變量,連接數據庫,在這個web project使用的是JDBC技術連接的數據庫,這技術須要一類三接口<DriverManager類,Connection接口,Statement接口,ResultSet接口>
ps:與數據庫創建連接的步驟:1.註冊數據庫驅動;2.獲取數據庫鏈接;3.獲取statement對象;4.關閉資源;
具體的實現步驟,請看上述代碼
three:在數據庫中讀取的信息須要使用List接口,以實現對數據庫的一列信息進行封裝起來進行來進行後續的使用,就比如:在桌子上有不少的糖,裝糖的瓶子,裝瓶子的箱子-------->>>>>就比如以前的屬性爲糖,好幾個屬性爲一個瓶子,好幾個瓶子放在箱子中(List)
Four:下面進行細節講解:
public List readFirstTitle()方法對每一行的數據進行封裝, 經過爲實體類創建對象(entity),調用他的構造方法,經過構造方法的方式進行復制,而後把經過賦值完成的數據加入list集合中,這樣一行的數據就進行封裝完成,經過while()循環,從而實現對數據的遍歷,進而實現對多行數據的存儲,可是在此以前須要建立list對象,而且導入list對象的相關類-------------List<Title> list =new ArrayList<Title>();
----------------------------------------------------------------------------------------------------------------------------------------------------------
2-2-3 在web頁面中顯示數據庫信息<在webroot下創建titleList.jsp,使用TitleDao.java中的查詢方法獲得全部的記錄,而後用表格在頁面顯示>其具體的代碼:
1 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> 2 <%@page import="cn.edu.bzu.dao.TitleDAO,cn.edu.bzu.entity.Title"%> 3 <% 4 String path = request.getContextPath(); 5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 6 %> 7 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 9 <html> 10 <head> 11 <title>Test-newsTitle</title> 12 </head> 13 14 <body> 15 <table border="1"> 16 <tr> 17 <td>id</td> 18 <td>name</td> 19 <td>creator</td> 20 <td>createTime</td> 21 </tr> 22 <% 23 TitleDAO dao=new TitleDAO(); 24 List<Title> list =dao.readFirstTitle(); 25 for(Title tl:list) 26 {%> 27 <tr> 28 <td><%=tl.getId() %></td> 29 <td><%=tl.getName() %></td> 30 <td><%=tl.getCreator() %>></td> 31 <td><%=tl.getCreateTime() %></td> 32 </tr> 33 <%} 34 %> 35 </table> 36 </body> 37 </html>
ps: <%%>小腳本的內容解釋:
1.經過TitleDAO dao=new TitleDAO(); 建立對象
2.List <Title> list =dao.readFIrstTitle(); 接口List建立list對象,而後經過對象dao調用TitleDAO中的readFirstTitle()方法,從而把返回的list賦予給list
3.for-each()進行數據的遍歷
4.遍歷的須要放在行(<tr></tr>)標籤外面,這樣的話才能把數據進行行存儲,因爲使用了遍歷,因此說明把數據庫中的Title表中的數據所有以表格的形式輸出
5.具體美化,敬請學習html+css