JavaWeb-JDBC-4-连接是页面显示的前奏

来源:互联网 发布:淘宝1元包邮怎么赚钱 编辑:程序博客网 时间:2024/05/17 09:23

话说

前面1-3已经实现了Java与数据库的交互,好戏只是刚刚开始,所有的连接都是为了前段的“绽放”!

在前面BaseDao基础上,还需要三步走,就可以在网页显示数据库内容,而不仅仅只是在控制台打印。
先看下笔者Web项目结构:

这里写图片描述

一、创建News.java类(JavaBean)

Bean是豆子滴意思,JavaBean就是Java类中一粒神奇的“豆子”。News.java类完全根据数据库中t_news数据表的字段类设置属性。这是JavaBean的核心,在下认为如此。代码如下:
package com.hmc.jdbc.model;/** * @Author Meice * @Date 2017年8月5日 */public class News {    private int id;    private String title;    private String author;    public News() {}    public News(int id, String title, String author) {        super();        this.id = id;        this.title = title;        this.author = author;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getAuthor() {        return author;    }    public void setAuthor(String author) {        this.author = author;    }    @Override    public String toString() {        return "News [id=" + id + ", title=" + title + ", author=" + author                + "]";    }}

二、创建NewsDao类,写一个方法返回集合list,存放数据库中的新闻信息,为页面输出做准备。

package com.hmc.jdbc.dao;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.hmc.jdbc.model.News;/** * @Author Meice * @Date 2017年8月5日 */public class NewsDao extends BaseDao {    //定义list方法,目的就是把从数据库中取得的数据全部存放到list中,方便给页面传值    public List<News> list () {        List<News> list = new ArrayList<>();        this.getConn();        String sql = "select * from t_news";        try {            ps = conn.prepareStatement(sql);            rs = ps.executeQuery();            while(rs.next()) {                int id = rs.getInt("id");                String title = rs.getString("title");                String author = rs.getString("author");                //下面这行代码仅仅是为了测试前面写的是否正确(获取第二列的内容,第二列为title)                //System.out.println(rs.getString(2));                /**                 * 这样每次遍历,每条新闻就是一个对象,并且初始化了参数,从此以后,数据                 * 成功从数据库和对象搭建起桥梁,JavaBean发挥至关重要的作用                 */                News news = new News(id, title, author);                list.add(news);            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }           return list;    }    public static void main(String[] args) {        //配合list方法中途测试        //new NewsDao().list();    }}

三、创建前端页面,显示数据。

<%@page import="com.hmc.jdbc.model.News"%><%@page import="com.hmc.jdbc.dao.NewsDao"%><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">    <title>新闻页面显示</title>    <meta http-equiv="pragma" content="no-cache">    <meta http-equiv="cache-control" content="no-cache">    <meta http-equiv="expires" content="0">        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="This is my page">    <!--    <link rel="stylesheet" type="text/css" href="styles.css">    -->  </head>  <body>    <%         NewsDao newsDao = new NewsDao();         List<News> list = newsDao.list();          //以下代码是为了测试        /* for(News news:list) {            out.println(news);        }      */     %>    <table border="1" width="80%" align="center">        <caption>新闻列表</caption>        <thead>            <tr>                <th>编号</th>                <th>标题</th>                <th>作者</th>            </tr>        </thead>        <tbody>        <%for(News news : list) { %>            <tr>                <td><%=news.getId() %></td>                <td><%=news.getTitle() %></td>                <td><%=news.getAuthor() %></td>            </tr>        <%} %>        </tbody>        <tfoot>        </tfoot>    </table>  </body></html>

最终效果如下:

这里写图片描述


总结
1 前端页面显示的过程是一个流程化的过程:从数据库获取数据–》构建业务类–》存放到list集合中–》页面从list集合中获取数据

2 在下认为里面最核心的代码就是News news = new News(id,title,author) 我们在new的时候,就把从数据库rs.get方法获取的数据全部传递给了News类,也就是说实现了数据库表到对象的一个跨时代的巨变!每一条新闻信息摇身一变成了一个个具体的对象。既然对象有了,对象又是根据表的属性来设置的,那么调用属性就易如反掌啦。

3 现在还是用古老的JSP在页面显示和遍历,后续再慢慢升级。有时候,一蹴而就并非是高效。

4 深刻体会了JSP在页面的不灵活,为后期的JSTL粉墨登场埋下伏笔。

5 接下来,在页面实现增删改查;实现分页,我们拭目以待!