采用Model1(JSP+javabean)来实现
步骤:
dbHelper是创建数据库的链接对象,操作数据库JDBC
创建实体类:商品类
创建业务逻辑类(DAO)
创建页面层(也可以放在第一步)
业务逻辑类中包括:
查询所有商品
查询指定商品等
项目原型
items.sql是我们要用到的数据库表。是写好的,直接导入数据库中就行
界面图:
DBHelper类的设计
把jar包放进来
链接mysql的驱动
中文乱码的时候,在Idea右下角,选择GBK然后reload即可,因为默认的是UTF-8
DBHelper
packageutil;importjava.sql.Connection;importjava.sql.DriverManager;public classDBHelper {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() throwsException
{if(conn==null)//如果conn不存在就新建一个
{
conn=DriverManager.getConnection(url, username, password);returnconn;
}returnconn;
}public static voidmain(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方法测试一下是否链接正常
实体类
编写的字段名字最好跟数据库中的字段名字相同
packageentity;//商品类
public classItems {private int id; //商品编号
private String name; //商品名称
private String city; //产地
private int price; //价格
private int number; //库存
private String picture; //商品图片
public intgetId() {returnid;
}public void setId(intid) {this.id =id;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}publicString getCity() {returncity;
}public voidsetCity(String city) {this.city =city;
}public intgetPrice() {returnprice;
}public void setPrice(intprice) {this.price =price;
}public intgetNumber() {returnnumber;
}public void setNumber(intnumber) {this.number =number;
}publicString getPicture() {returnpicture;
}public voidsetPicture(String picture) {this.picture =picture;
}
}
接下来设计数据访问层也就是DAO层
创建业务逻辑类(DAO)
获得所有的商品信息,并在页面上显示
以下三个类重点
Connection
PreparedStatement
ResultSet
packagedao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.ArrayList;importutil.DBHelper;importentity.Items;//商品的业务逻辑类
public classItemsDAO {//获得所有的商品信息
public ArrayListgetAllItems() {
Connection conn= null;
PreparedStatement stmt= null;
ResultSet rs= null;
ArrayList list = new ArrayList(); //商品集合
try{
conn=DBHelper.getConnection();
String sql= "select * from items;"; //SQL语句
stmt =conn.prepareStatement(sql);
rs=stmt.executeQuery();while(rs.next()) {
Items item= newItems();
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页面
商品展示
加入jsp代码后(标红的部分):
商品展示
ItemsDAO itemsDao = new ItemsDAO(); ArrayList list = itemsDao.getAllItems(); if(list!=null&&list.size()>0) { for(int i=0;i { Items item = list.get(i); %> } } %> |
最终展示:
这行一定要有,否则中文乱码。
Items item = itemDao.getItemsById(Integer.parseInt(request.getParameter("id")));
这句话是从上一个页面得到的指定的item
request.getParameter("id")传过来的是字符串了理性所以要转换成int类型
关于前后端的合作:前端页面先写死,固定排版,后面需要改变的变量,用jsp代码替换掉即可。