在本篇文章中,小编将介绍在jsp页面中通过表格显示数据库的实现:下面我们以“新闻发布系统”中显示一级标题的信息为例进行讲述,在新闻发布系统中存在一二级标题,在后台可以对标题进行管理,可查询标题等信息
【step one】 1-1 建立数据库,在jsp中,我们使用的是mysql数据库,对于此数据的优缺点本篇不予以讲述,首先建立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:<实体类的作用>
-----------------------------------------------------------------------------------------------------------------------------------------------------
2-2-2 数据库操作类 :下面以对数据库的查询功能书写代码,<包:cn.edu.bzu.dao;类:TitleDAO.java>
1 package cn.edu.bzu.news.dao; 2 3 import java.sql.*; 4 import java.util.ArrayList; 5 import java.util.List; 6 7 import cn.edu.bzu.news.entity.FirstTitle; 8 9 public class FirstTitleOperation { 10 //查询 11 public List readFirstTitle(){ 12 List<FirstTitle> list=new ArrayList<FirstTitle>(); 13 Connection conn=null; 14 PreparedStatement pstmt=null; 15 ResultSet rs=null; 16 17 try { 18 Class.forName("com.mysql.jdbc.Driver"); 19 } catch (ClassNotFoundException e) { 20 // TODO Auto-generated catch block 21 e.printStackTrace(); 22 } 23 try { 24 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/news","root","123456"); 25 String sql="select * from firsttitle where id>=?"; 26 pstmt=conn.prepareStatement(sql); 27 pstmt.setInt(1, 1); 28 rs=pstmt.executeQuery(); 29 while(rs.next()){ 30 31 int id=rs.getInt("id"); 32 String titleName=rs.getString("titleName"); 33 String creator=rs.getString("creator"); 34 Date createTime=rs.getDate("createTime"); 35 FirstTitle ft=new FirstTitle(id,titleName,creator,createTime); 36 list.add(ft); 37 } 38 } catch (SQLException e) { 39 // TODO Auto-generated catch block 40 e.printStackTrace(); 41 }finally{ 42 try{ 43 if(rs!=null){ 44 rs.close(); 45 } 46 if(pstmt!=null){ 47 pstmt.close(); 48 } 49 if(conn!=null){ 50 conn.close(); 51 } 52 53 54 55 }catch(SQLException e){ 56 e.printStackTrace(); 57 } 58 } 59 return list; 60 } 61 //测试查询功能,<可以省略> 62 public static void main(String[] args) { 63 FirstTitleOperation fto=new FirstTitleOperation(); 64 List<FirstTitle> list=fto.readFirstTitle(); 65 for(FirstTitle ft:list){ 66 System.out.println(ft.getTitleName()); 67 68 } 69 } 70 71 72 }
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:后续内容....waiting...
-----------------------------------------------------------------------------------------------------------------------------------------------------2-2-3 在web页面中显示数据库信息<在webroot下建立titleList.jsp,使用TitleDao.java中的查询方法得到所有的记录,然后用表格在页面显示>其具体的代码:
1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <%@page import="cn.edu.bzu.news.dao.FirstTitleOperation,cn.edu.bzu.news.entity.FirstTitle"%> 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 <base href="<%=basePath%>"> 12 13 <title>My JSP ‘showFirstTitle.jsp‘ starting page</title> 14 15 <meta http-equiv="pragma" content="no-cache"> 16 <meta http-equiv="cache-control" content="no-cache"> 17 <meta http-equiv="expires" content="0"> 18 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 19 <meta http-equiv="description" content="This is my page"> 20 <!-- 21 <link rel="stylesheet" type="text/css" href="styles.css"> 22 --> 23 24 </head> 25 26 <body> 27 <table border="1"> 28 <tr> 29 <td>ID</td> 30 <td>标题名</td> 31 <td>创建者</td> 32 <td>创建时间</td> 33 </tr> 34 35 <% 36 FirstTitleOperation fto=new FirstTitleOperation(); 37 List<FirstTitle> list=fto.readFirstTitle(); 38 for(FirstTitle ft:list){%> 39 40 <tr> 41 <td><%= ft.getId()%></td> 42 <td><%= ft.getTitleName()%></td> 43 <td><%= ft.getCreator()%></td> 44 <td><%= ft.getCreateTime()%></td> 45 46 </tr> 47 <% } 48 49 %> 50 </table> 51 </body> 52 </html>
ps: <%%>小脚本的内容解释:通过FirstTitleOperation fto=new FirstTitleOperation(); 创建对象,然后调用对象的方法,将其这些数据放在list这个集合中,用的时候
使用遍历的getId()......等来显示数据
-----------------------------------------------------------------------------------------------------------------------------------------------------
ps:内容更新中.........