商品项目流程分析

商品项目流程分析

|  流程分析


l  数据库建立

Create table goods {

 id int auto_increment primary key,

 `name` varchar(50),

 price double,

 count int,

 desc varchar(1000)

}

 

l  源码结构与页面建立

 

 

 

 

 

 

|--com.phome.model 封装项目中使用的具体的数据的包

 --Goods 商品属性类

|--com.phome.dbhelper 管理数据库连接,执行sql语句的包

 --ConnectionManager.java  进行数据操作

 --DbHelper.java 操作数据库的类

|--com.phome.dao 数据访问对象,负责增删改查具体的包装数据包

 --DAO  数据操作的超级接口

|--com.phome.dao.impl 实现数据访问对象超级接口的包

 --DAO  数据操作的超级接口

|--com.phome.service 业务处理层,负责具体的业务功能逻辑的包

 --Service 业务处理层的超级接口

|--com.phome.service.impl 实现业务处理层的包

 --Service 业务处理层的超级接口

|--com.phome.filter 过滤器包

 --CharacterFilter 过滤器类

|--com.phome.servlet 控制器包

 --GoodsServlet 商品控制器类

|--com.phome.util 用来处理重复出现语句以及一些方法的包

 --FindType

 

|--index 添加商品主页

|--success 添加商品成功

|--failed 添加商品失败

l  代码设计

   * 首先写操作数据库的类

ConnectionManager

   public class ConnectionManager {
// 1.加载驱动
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.err.println("数据库驱动加载失败..." + e.getMessage());
}
}

// 2.获取连接
public static Connection getConn() throws SQLException{
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/pxhome" ,"root","root");
return conn;
}

// 3.释放连接
public static void free(Connection conn){
try {
if(conn != null && !conn.isClosed()){
conn.close();
conn = null;
}
} catch (SQLException e) {
System.err.println("数据库连接关闭失败..." + e.getMessage());
}
}
}

   * 其次写DBHelper

    public class DBHelper {
private Connection conn;
private ResultSet rs;
private PreparedStatement pstat;
/**
* 处理增 ,删,改语句的方法
* @param conn
* @param sql
* @param objs
* @return
* @throws SQLException 
*/
public int excuteSQL(Connection conn , String sql , Object...objs) throws SQLException{
// 建立预编译对象
pstat = conn.prepareStatement(sql);
setParameters(objs);
return pstat.executeUpdate();
}

/**
* 处理查询语句的方法
* @param conn
* @param sql
* @param objs
* @return
* @throws SQLException
*/
public ResultSet excuteQuery(Connection conn , String sql , Object...objs) throws SQLException{
// 创建预编译对象
pstat = conn.prepareStatement(sql);
setParameters(objs);
rs = pstat.executeQuery();
return rs;
}
// 私有的赋值方法
private void setParameters(Object...objs) throws SQLException{
if(objs != null && objs.length > 0){
for (int i = 0; i < objs.length; i++) {
pstat.setObject(i + 1, objs[i]);
}
}
}
}

   *最后按照以下步骤写类

1.model

package com.phome.model;
/**
 * 商品的属性类
 * @author ChenLiYun
 *
 */
public class Goods {
private int id; // 商品编号
private String name; // 商品名称
private double price; // 商品价格
private int count; // 商品库存
private String desc; // 商品描述

// 构造方法
public Goods() {
super();
}
public Goods(int id, String name, double price, int count, String desc) {
super();
this.id = id;
this.name = name;
this.price = price;
this.count = count;
this.desc = desc;
}
public Goods(String name, double price, int count, String desc) {
super();
this.name = name;
this.price = price;
this.count = count;
this.desc = desc;
}
// 提供外界访问的方法
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 double getPrice() {
return price;
}


public void setPrice(double price) {
this.price = price;
}


public int getCount() {
return count;
}


public void setCount(int count) {
this.count = count;
}


public String getDesc() {
return desc;
}


public void setDesc(String desc) {
this.desc = desc;
}

2.dao

package com.phome.dao;


import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;


import com.phome.util.FindType;


/**
 * 数据访问对象的超级接口
 * @author ChenLiYun
 *
 */
public interface DAO<T> {
int add(Connection conn , T t) throws SQLException ;
int delete(Connection conn , int id) throws SQLException ;
int update(Connection conn , T t) throws SQLException ;
List<T> findAll(Connection conn) throws SQLException ;
T findById(Connection conn , int id) throws SQLException ;
List<T> findByCondition(Connection conn , FindType type , Object ... objs) throws SQLException ;
}

3.dao.impl

package com.phome.dao.impl;


import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;


import com.phome.dao.DAO;
import com.phome.dbhelper.ConnectionManager;
import com.phome.dbhelper.DBHelper;
import com.phome.model.Goods;
import com.phome.util.FindType;


/**
 * 实现访问数据的类
 * @author ChenLiYun
 *
 */
public class GoodsDAOImpl implements DAO<Goods>{
private String sql = "";
private ResultSet rs;
private DBHelper dh = new DBHelper();

@Override
public int add(Connection conn, Goods goods) throws SQLException {
// 定义sql语句
sql = "insert into goods(`name`,price,count,`desc`) values(?,?,?,?);";
// 获取数据库连接 
conn = ConnectionManager.getConn();
System.out.println(goods.getName() + "/*/*/*/*/*/*/");
// 执行sql语句
int rows = dh.excuteSQL(conn, sql, goods.getName(),
goods.getPrice(),
goods.getCount(),
goods.getDesc());
if(rows > 0){
System.out.println("添加成功");
return rows;
}else{
System.out.println("添加失败");
return 0;
}

}


@Override
public int delete(Connection conn, int id) throws SQLException {
return 0;
}


@Override
public int update(Connection conn, Goods t) throws SQLException {
return 0;
}


@Override
public List<Goods> findAll(Connection conn) throws SQLException {
return null;
}


@Override
public Goods findById(Connection conn, int id) throws SQLException {
// 定义sql语句
sql = "select * from goods where id=?";
// 获取连接
conn = ConnectionManager.getConn();
// 执行sql语句
rs = dh.excuteQuery(conn, sql, id);
Goods goods = null;
while(rs.next()){
goods = new Goods();
goods.setId(rs.getInt("id"));
goods.setName(rs.getString("name"));
goods.setPrice(rs.getDouble("price"));
goods.setCount(rs.getInt("count"));
goods.setDesc(rs.getString("desc"));
}
return goods;
}


@Override
public List<Goods> findByCondition(Connection conn, FindType type,
Object... objs) throws SQLException {
return null;
}
}

4.service

package com.phome.service;


import com.phome.model.Goods;


/**
 * 处理业务层的类
 * @author ChenLiYun
 *
 */
public interface GoodsService {
int addGoods(Goods goods);
Goods findById(int id);
}

5.service.impl

package com.phome.service.impl;


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


import com.phome.dao.DAO;
import com.phome.dao.impl.GoodsDAOImpl;
import com.phome.dbhelper.ConnectionManager;
import com.phome.model.Goods;
import com.phome.service.GoodsService;


/**
 * 实现处理业务层的类
 * @author ChenLiYun
 *
 */
public class GoodsServiceImpl implements GoodsService{
private DAO gdi = new GoodsDAOImpl();
private Connection conn;
/**
* 添加商品
*/
@Override
public int addGoods(Goods goods) {

try {
// 获取连接
conn = ConnectionManager.getConn();
// 调用方法
return gdi.add(conn, goods);
} catch (SQLException e) {
e.printStackTrace();
}finally{
// 关闭连接
ConnectionManager.free(conn);
}
return -1;
}
/**
* 查找商品
*/
@Override
public Goods findById(int id) {
try {
conn = ConnectionManager.getConn();
return (Goods) gdi.findById(conn, id);
} catch (SQLException e) {
e.printStackTrace();
}finally{
// 关闭连接
ConnectionManager.free(conn);
}

return null;
}

}

6.servlet

package com.phome.servlet;


import java.io.IOException;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import com.phome.model.Goods;
import com.phome.service.GoodsService;
import com.phome.service.impl.GoodsServiceImpl;


/**
 * 商品类型控制器
 * @author ChenLiYun
 *
 */
public class GoodsServlet extends HttpServlet{
private GoodsServiceImpl gsi = new GoodsServiceImpl();

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}


@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 获取请求中执行的不同的功能
String method = req.getParameter("method");
System.out.println(method + "-------------------");
if ("add".equals(method)) {
add(req, resp);
} else if ("delete".equals(method)) {
delete(req, resp);
}else if ("update".equals(method)) {
update(req, resp);
}else if (method.startsWith("find")) {
find(req, resp);
}
}

// 增加通道
private void add(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 获取页面数据
String name = req.getParameter("goodsname");
System.out.println(name + "******");
String price = req.getParameter("goodsprice");
String count = req.getParameter("goodscount");
String desc = req.getParameter("goodsdesc");
System.out.println(desc + "******");
// 创建一个商品对象
Goods goods = new Goods(name , Double.parseDouble(price) , Integer.parseInt(count) , desc);

// 调用业务处理方法,上架商品
int id = gsi.addGoods(goods);

// 根据执行结果跳转到不同的页面
if(id == -1) {
resp.sendRedirect("failed.jsp");
} else {
goods = gsi.findById(id);// 根据id获取到数据库中的商品
req.setAttribute("currentGoods", goods);// 存放到request空间中
req.getRequestDispatcher("success.jsp").forward(req, resp);
}
}


//删除
private  void delete(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 获取请求中执行的不同的功能,进行分发
}
//修改
private  void update(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 获取请求中执行的不同的功能,进行分发
}
//查询
private  void find(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 获取请求中执行的不同的功能,进行分发
}

}

7.filter

package com.phome.filter;


import java.io.IOException;


import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


/**
 * 编码过滤器
 * @author ChenLiYun
 *
 */
public class CharacterFilter implements Filter{


@Override
public void destroy() {

}


@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding("Gb18030");
resp.setContentType("text/html;charset=gb18030");

chain.doFilter(req, resp);
}


@Override
public void init(FilterConfig arg0) throws ServletException {

}

}

8.util

package com.phome.util;
/**
 * 查找类型的枚举
 * @author ChenLiYun
 *
 */
public class FindType {


}

   *运行方法

首先启动服务器也就是tomcat后在浏览器页面输入http://localhost:8080/shopping,回车后出现以下页面


输入商品信息后点击提交按钮如果添加成功就会跳转到success.jsp页面并打印相关商品信息,否则跳转到添加失败页面failed.jsp


数据在数据库里的存储为


当然按照这种方法进行查找的话只能查找出添加到里面的一个商品,要想全部显示数据库里的商品信息就得将所查到的信息放到集合中然后在页面遍历集合输出即可,这里就不写了,可以由读者自己完成。

以上就是一个简单的开发流程,由于我是初学者会有不足道的地方希望大家能提出您宝贵的意见或是建议! 微笑

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值