图书馆项目----介绍相关逻辑

源码地址

去下载源码的同学给个star哦~

首先我先介绍一下我写的这个项目,由于是我一个人负责的全栈,而且写项目的时间很短,只有一周,这一周我还要回家,家里还有各种饭局,

所以真正写项目的时间很少,而且我计划就是两周时间,一周写项目,一周学习写博客,正好卡点,有一些我想实现的功能也并没有来的及实现,

所以可能有点简陋。

我的项目是做一个图书馆管理系统,我这个系统的健壮性没有那么强,我的系统是属于那种希望借书的同学们都是遵纪守法的好少年,不搞破坏hhh,

他主要实现了用户的借书和查看书功能,和管理员的管理图书的功能。

项目亮点就是实现了分页的功能,可以统计有多少种书以及实现分页,可以跳转到指定的一页。

我这个项目是用java2E 去实现的,而这也正好是我这学期要学习的内容,首先来介绍一下java2e的逻辑:

项目还基于了MVC概念:

也许我的项目功能不是亮点,但是代码的耦合度很低,实现了内聚和解耦,如果想添加功能可以很方便的实现,

因为我使用了里氏代换原则这个设计模式的思想,和工厂模式的思想,如果想添加功能不用改变源代码,只需要添加方法就可以了,体现了封闭开放原则。

 

我先放出来我的代码的一个亮点:

 public static <T> T copyParamToBean(Map value, T bean)
    {
        try {
            //使用: Bean bean = WebUtils.copyParamToBean(req.getParameterMap(),new Bean())
            BeanUtils.populate(bean,value);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        return bean;
    }

这是WebUtils里面的一种方法,可以把request域得到的参数注入到Bean对象中。

这里的参数明明也可以是req对象,但是我却用了Map,这是因为如果我们用req的话,那么在Dao层和Service层就无法使用了,

就增加了代码的耦合,如果用Map那么在调用方法的时候就可以传入req.getParameterMap(),这样在其他层也可以传入Map对象使用了。

我的代码使用了大量的反射和泛型

比如在BaseServlet中:

@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setCharacterEncoding("UTF-8");
        req.setCharacterEncoding("UTF-8");
        String action = req.getParameter("action");

        try {
            //获取action业务鉴别字符串,获取相应的业务,方法反射对象
            Method method = this.getClass().getDeclaredMethod(action,HttpServletRequest.class,HttpServletResponse.class);
            //通过反射进行调用
            method.invoke(this,req,resp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

我们知道改变传入的action的值,就可以实现调用同名方法。

不行了我受不了了,我要去学JavaSE了。

posted @ 2021-09-06 15:03  Apak陈柏宇  阅读(106)  评论(0编辑  收藏  举报