JavaWeb-书城项目总结


JavaWeb-书城项目总结

在这里插入图片描述
这是web的项目结构,目前还没利用到框架,开发流程就是:

在数据库内创建需要的对象对应的表

在这里插入图片描述
如图分为储存:

  • 书信息:每本书的名字,作者,价钱等属性
  • 订单信息:订单生成的时间,订单号,订单金额,订单项(哪些书)
  • 订单项信息:和书的属性差不多,多了一个订单号的标识,表示属于哪个订单
  • 用户信息:用户名和密码

建立Bean对象

在web项目下建立pojo类,建立由表格转换成的javabean对象,也就是java的属性对应表格的属性
在这里插入图片描述
这里购物车的Cart我们没有创建数据库表,是因为我们存放在Session域中,不用存放在数据库内,作为临时存放的数据

建立Jdbc.Util工具类

方便Dao层后续连接数据库
我们利用了druil类工具

建立BaseDao类

这个类是后面建立各种Dao可以继承的一个工具性质的类对象,通用


public abstract class BaseDao {

    //使用DbUtils操作数据库

    private QueryRunner queryRunner = new QueryRunner();


    //用来执行 Insert/Update/Delete语句
    public int update(String sql,Object ... args){
        Connection connection = JdbcUtils.getConnection();
        try {
            //连接对象,sql语句,占位符数据值
            return queryRunner.update(connection,sql,args);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
            throw new RuntimeException(throwables);
        }
    }



    /**
     * 查询返回一个javaBean的sql语句
     * @param type  返回的对象类型
     * @param sql   执行的sql语句
     * @param args  占位符数据值
     * @param <T>  返回的类型值
     * @return
     */
    public <T> T queryForOne(Class<T> type,String sql,Object...args){
        Connection conn = JdbcUtils.getConnection();
        try {
            return queryRunner.query(conn,sql,new BeanHandler<T>(type),args);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
            throw new RuntimeException(throwables);
        }

    }

    /**
     * 查询返回多个javaBean的sql语句
     * @param type  返回的对象类型
     * @param sql   执行的sql语句
     * @param args  占位符数据值
     * @param <T>  返回的类型值
     * @return
     */
    public <T> List<T> queryForList(Class<T> type, String sql, Object ... args){
        Connection conn = JdbcUtils.getConnection();
        try {
            return queryRunner.query(conn,sql,new BeanListHandler<T>(type),args);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
            throw new RuntimeException(throwables);
        }
    }

    /**
     * 执行返回一行一列的sql语句
     * @param sql   sql语句
     * @param args  占位符数据值
     * @return    对应的参数值
     */
    public Object queryForSingleValue(String sql,Object... args){
        Connection conn = JdbcUtils.getConnection();
        try {
            return queryRunner.query(conn,sql,new ScalarHandler(),args);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
            throw new RuntimeException(throwables);
        }

    }
}

建立操作各个数据库表格数据的Dao层代码

先建立接口,然后建立实现类实现接口方法
在这里插入图片描述

建立各个功能的Service,实现对各个Dao对象的功能调用

在这里插入图片描述

建立各个功能的Servlet程序,实现对Service的方法调用

在这里插入图片描述
BaseServlet是工具Servlet,利用反射功能使得复用doget方法,后面的servlet都直接继承BaseServlet即可,代码如下:

public abstract  class BaseServlet extends HttpServlet {

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

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        String action = req.getParameter("action");   //获取隐藏域对象的值,处理不同的请求

        try {
            //通过获取到的方法名称反射获取到java类方法
            Method method = this.getClass().getDeclaredMethod(action, HttpServletRequest.class, HttpServletResponse.class);
            //激活类方法,传入运行的对象和参数
            method.invoke(this,req,resp);

        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);  //抛给过滤器
        }
    }
}

加入Filter优化

在这里插入图片描述
ManagerFilter实现对每个页面进行权限判断
TranSactionFliter实现对每个操作进行事务管理,出错即回滚事务

项目需要的jar包

在这里插入图片描述

开发功能实现的流程图

分页功能:
在这里插入图片描述

找到价格区间的书:
在这里插入图片描述

订单功能:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值