zoukankan      html  css  js  c++  java
  • 一个小实例(使用JDBC,JSP在浏览器展示数据库中的数据)

    采用Model1(JSP+javabean)来实现

    步骤:

    1. dbHelper是创建数据库的链接对象,操作数据库JDBC
    2. 创建实体类:商品类
    3. 创建业务逻辑类(DAO)
    4. 创建页面层(也可以放在第一步)

    业务逻辑类中包括:

    • 查询所有商品 
    • 查询指定商品等

    项目原型

    items.sql是我们要用到的数据库表。是写好的,直接导入数据库中就行

    界面图:

    DBHelper类的设计

    把jar包放进来  

    链接mysql的驱动

    中文乱码的时候,在Idea右下角,选择GBK然后reload即可,因为默认的是UTF-8

    DBHelper

    package util;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    
    public class DBHelper {
       
        private static final String driver = "com.mysql.jdbc.Driver"; //数据库驱动
        //连接数据库的URL地址
        private static final String url="jdbc:mysql://localhost:3306/shopping?useUnicode=true&characterEncoding=UTF-8"; 
        private static final String username="root";//数据库的用户名
        private static final String password="123456";//数据库的密码
        
        private static Connection conn=null;
        
        //静态代码块负责加载驱动
        static 
        {
            try
            {
                Class.forName(driver);
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
        }
        
        //单例模式返回数据库连接对象
        public static Connection getConnection() throws Exception
        {
            if(conn==null)//如果conn不存在就新建一个
            {
                conn = DriverManager.getConnection(url, username, password);
                return conn;
            }
            return conn;
        }
        
        public static void main(String[] args) {
            
            try
            {
               Connection conn = DBHelper.getConnection();
               if(conn!=null)
               {
                   System.out.println("数据库连接正常!");
               }
               else
               {
                   System.out.println("数据库连接异常!");
               }
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
            
        }
    }

      数据库中建好shopping这个scheme

    然后将items.sql导入。

       写一个main方法测试一下是否链接正常

    实体类

     

    编写的字段名字最好跟数据库中的字段名字相同

    package entity;
    
    //商品类
    public class Items {
    
        private int id; // 商品编号
        private String name; // 商品名称
        private String city; // 产地
        private int price; // 价格
        private int number; // 库存
        private String picture; // 商品图片
    
        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 getCity() {
            return city;
        }
    
        public void setCity(String city) {
            this.city = city;
        }
    
        public int getPrice() {
            return price;
        }
    
        public void setPrice(int price) {
            this.price = price;
        }
    
        public int getNumber() {
            return number;
        }
    
        public void setNumber(int number) {
            this.number = number;
        }
    
        public String getPicture() {
            return picture;
        }
    
        public void setPicture(String picture) {
            this.picture = picture;
        }
    
    }

    接下来设计数据访问层也就是DAO层

    创建业务逻辑类(DAO)

    获得所有的商品信息,并在页面上显示

    以下三个类重点

    • Connection
    • PreparedStatement
    • ResultSet
    package dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    
    import util.DBHelper;
    
    import entity.Items;
    
    //商品的业务逻辑类
    public class ItemsDAO {
    
        // 获得所有的商品信息
        public ArrayList<Items> getAllItems() {
            Connection conn = null;
            PreparedStatement stmt = null;
            ResultSet rs = null;
            ArrayList<Items> list = new ArrayList<Items>(); // 商品集合
            try {
                conn = DBHelper.getConnection();
                String sql = "select * from items;"; // SQL语句
                stmt = conn.prepareStatement(sql);
                rs = stmt.executeQuery();
                while (rs.next()) {
                    Items item = new Items();
                    item.setId(rs.getInt("id"));
                    item.setName(rs.getString("name"));
                    item.setCity(rs.getString("city"));
                    item.setNumber(rs.getInt("number"));
                    item.setPrice(rs.getInt("price"));
                    item.setPicture(rs.getString("picture"));
                    list.add(item);// 把一个商品加入集合
                }
                return list; // 返回集合。
            } catch (Exception ex) {
                ex.printStackTrace();
                return null;
            } finally {
                // 释放数据集对象
                if (rs != null) {
                    try {
                        rs.close();
                        rs = null;
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                }
                // 释放语句对象
                if (stmt != null) {
                    try {
                        stmt.close();
                        stmt = null;
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                }
            }
    
        }
    }

    业务逻辑层写好后,下面要做的就是在页面上来显示就可以了

    展示所有商品

    在index.jsp中(只贴出了body标签中的内容),这时候还么有去写jsp代码,仅仅是html页面

    <body>
        <h1>商品展示</h1>
        <hr>
      
        <center>
        <table width="750" height="60" cellpadding="0" cellspacing="0" border="0">
          <tr>
            <td>
              
              <!-- 商品循环开始 ,里面的属性值需要等下动态从数据库获取--> 
              <div>
                 <dl>
                   <dt>
                     <a href="details.jsp?id=<%=item.getId()%>"><img src="images/<%=item.getPicture()%>" width="120" height="90" border="1"/></a>
                   </dt>
                   <dd class="dd_name"><%=item.getName() %></dd> 
                   <dd class="dd_city">产地:<%=item.getCity() %>&nbsp;&nbsp;价格:¥ <%=item.getPrice() %></dd> 
                 </dl>
              </div>
              <!-- 商品循环结束 -->      
            </td>
          </tr>
        </table>
        </center>
      </body>

    加入jsp代码后(标红的部分):

     <body>
        <h1>商品展示</h1>
        <hr>
      
        <center>
        <table width="750" height="60" cellpadding="0" cellspacing="0" border="0">
          <tr>
            <td>
              
              <!-- 商品循环开始 -->
               <% 
                   ItemsDAO itemsDao = new ItemsDAO();
                   ArrayList<Items> list = itemsDao.getAllItems();
                   if(list!=null&&list.size()>0)
                   {
                       for(int i=0;i<list.size();i++)
                       {
                          Items item = list.get(i);
               %>   
              <div>
                 <dl>
                   <dt>
                     <a href="details.jsp?id=<%=item.getId()%>"><img src="images/<%=item.getPicture()%>" width="120" height="90" border="1"/></a>
                   </dt>
                   <dd class="dd_name"><%=item.getName() %></dd> 
                   <dd class="dd_city">产地:<%=item.getCity() %>&nbsp;&nbsp;价格:¥ <%=item.getPrice() %></dd> 
                 </dl>
              </div>
              <!-- 商品循环结束 -->
            
              <%
                       }
                  } 
              %>
            </td>
          </tr>
        </table>
        </center>
      </body>

     最终展示:

     这行一定要有,否则中文乱码。

    <%@  page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>




    Items item = itemDao.getItemsById(Integer.parseInt(request.getParameter("id")));
    这句话是从上一个页面得到的指定的item
    request.getParameter("id")传过来的是字符串了理性所以要转换成int类型



    关于前后端的合作:前端页面先写死,固定排版,后面需要改变的变量,用jsp代码替换掉即可。
  • 相关阅读:
    nohup ./startWebLogic.sh >out.log 2>&1 & 解析
    Eclipse debug 断点不能调试 ,Eclipse Unable to install breakpoint in 解决办法
    Servlet工作原理解析(tomcat7、嵌入式服务器)
    Servlet工作原理
    [Java] SpringMVC工作原理之四:MultipartResolver
    SQLite_安装
    leetcode_315_逆序对问题
    git 学习 3
    dubbo与zookeeper
    Kafka安装
  • 原文地址:https://www.cnblogs.com/volvane/p/9300811.html
Copyright © 2011-2022 走看看