model1

概述:

这里写图片描述

  1. 界面层:由JSP页面进行与客户端浏览器的交互,可以直接调用JavaBean
  2. 业务逻辑层:由JavaBean进行处理业务逻辑,封装数据,并与数据库层进行交互
  3. 数据库层:底层数据库,可被javaBean访问

优点:避免了JSP页面直接进行业务逻辑处理所带来的维护性,扩展性差的弱点.体现了分层设计的思想

缺点:Model 1模式的实现比较简单,适用于快速开发小规模项目。但从工程化的角度看,它的局限性非常明显:JSP页面身兼View和Controller两种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用的扩展性和维护的难度。

实例:

需求:完成商品的展示与详细信息查看
分析:使用model1实现,javabean负责与数据库交互,实现业务逻辑,jsp负责与浏览器交互,页面展示

这里写图片描述

Items类-商品实体类,数据库表的映射

package entity;
public class Items {

    private int id; // 商品编号
    private String name; // 商品名称
    private String city; // 产地
    private int price; // 价格
    private int number; // 库存
    private String picture; // 商品图片
    ..............
    setter,getter方法
}

DBHelper类 -提供数据库连接,提高代码复用性

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBHelper {
    private static final String driver = "com.mysql.jdbc.Driver";
    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 = "970728";
    private static Connection con = null;
    static{
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection(){
        if (con == null) {
            try {
                con = DriverManager.getConnection(url,username,password);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return con;
        }
        return con;
    }
}

ItemsDAO类-实现业务逻辑

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()
    {
        ArrayList<Items> list = new ArrayList<Items>();
        Connection con = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        try {
            con = DBHelper.getConnection();
            String sql = "select * from Items;";
            stmt = con.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);
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }finally{
            //释放数据集
            if(rs!=null)
            {
                try {
                    rs.close();
                    rs = null;
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
            //释放语句对象
            if(stmt!=null)
            {
                try {
                    stmt.close();
                    stmt = null;
                } catch (Exception e3) {
                    e3.printStackTrace();
                }
            }
        }
        return list;
    }
    //根据商品编号,获取商品资料
    public Items getItemsById(int id)
    {
        Connection con = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        Items item = new Items();
        try {
            con = DBHelper.getConnection();
            String sql = "select * from Items where id=?";
            stmt = con.prepareStatement(sql);
            stmt.setInt(1, id);
            rs = stmt.executeQuery();
            if(rs.next())
            {
                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"));
            }
            else 
                return null;
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            if(rs!=null)
            {
                try {
                    rs.close();
                    rs = null;
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
            if(stmt!=null)
            {
                try {
                    stmt.close();
                    stmt = null;
                } catch (Exception e3) {
                    e3.printStackTrace();
                }
            }
        }
        return item;
    }
}

index.jsp-商品展示页

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

<style type="text/css">
div {
    float: left;
    margin: 10px;
}

div dd {
    margin: 0px;
    font-size: 10pt;
}

div dd.dd_name {
    color: blue;
}

div dd.dd_city {
    color: #000;
}
</style>
</head>

<body>
    <h1>商品展示</h1>
    <hr>
    <center>
        <table width="750" height="60" cellpadding="0" cellspacing="0"
            border="0">
            <tr>
                <td>
                    <!-- 商品循环开始 --> 
                    <% 
                     ArrayList<Items> list =  new 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>
</html>

details.jsp-商品详细内容页

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %>
<%@ page import="entity.Items"%>
<%@ page import="dao.ItemsDAO"%>
    <style type="text/css">
       div{
          float:left;
          margin-left: 30px;
          margin-right:30px;
          margin-top: 5px;
          margin-bottom: 5px;
       }
       div dd{
          margin:0px;
          font-size:10pt;
       }
       div dd.dd_name
       {
          color:blue;
       }
       div dd.dd_city
       {
          color:#000;
       }
    </style>
  </head>

  <body>
    <h1>商品详情</h1>
    <hr>
    <center>
      <table width="750" height="60" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <!-- 商品详情 -->
          <% 
             ItemsDAO itemDao = new ItemsDAO();
             Items item = itemDao.getItemsById(Integer.parseInt(request.getParameter("id")));
             if(item!=null)
             {
          %>
          <td width="70%" valign="top">
             <table>
               <tr>
                 <td rowspan="4"><img src="images/<%=item.getPicture()%>" width="200" height="160"/></td>
               </tr>
               <tr>
                 <td><B><%=item.getName() %></B></td> 
               </tr>
               <tr>
                 <td>产地:<%=item.getCity()%></td>
               </tr>
               <tr>
                 <td>价格:<%=item.getPrice() %></td>
               </tr> 
             </table>
          </td>
          <% 
            }
          %></tr>
      </table>
    </center>
  </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值