在本篇文章中,小编将介绍在jsp页面中通过表格显示 数据库 的实现:下面我们以“新闻发布系统”中显示一级标题的信息为例进行讲述,在新闻发布系统中存在一二级标题,在后台可以对标题进行管理,可查询标题等信息

 

      【step one】

 

      1-1 建立数据库

 

        在jsp中,我们使用的是my sql数据库,对于此数据的优缺点本篇不予以讲述,首先建立news数据库,其数据库中表的信息为:

 

 

 

 

 

       eg:< id :1 ; name:娱乐; creator:ibbon;createTime:2014-11-21 22:17:43>

 

    【step two】  建立web项目(news)

 

    2-1:首先,我们在web项目的src文件夹写入链接数据库的相关的类,他们分别是:链接数据库的类,数据的实体类

 

-----------------------------------------------------------------------------------------------------------------------------------------------------

 

       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:<实体类的作用>

 

    /**

     *实体类的作用 

     *在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>