首页 > 编程知识 正文

书管理系统开题报告,jsp书管理系统代码

时间:2023-05-05 19:19:00 阅读:206024 作者:214

本人在学习Servlet+JSP时候,是直接看的一个40课时的实战项目。根据项目学习写这种项目时候的套路。

学习了包括如何分层,数据结构的使用,文件,接口的整理,还有servlet+jsp的基础知识等。

本文主要介绍的是Servlet+jsp 开发图书管理系统的流程。

有关servlet和jsp的基础知识在我的博客中有很多学习笔记可以参考。我都是分模块介绍的。

稍后我还会写一个文章是描述MVC模式的。


下面的分层和如何命名是我查阅资料后自己总结的,肯定还有很多种灵活的写法。

主要有数据层、业务层、控制层、前端界面、4个层、

侧重后端,也就是前3个层。同时我们是从数据层开始写的。

1.数据层----主要功能就是和数据库连接,然后对数据进行处理。把处理后的结果返回

给servlet类。

总结数据层怎么写:

首先要有一个jdbc驱动的连接。然后再写一个抽象函数,每次连接数据库的时候,只

需要生成那个抽象函数的对象就可以连接数据库,不需要在写驱动。

其次,数据库中的表全部都要建好。

然后,根据每个表要执行的不同功能或者对数据库中数据操作的不同,生成不同的

I***DAO的接口和相应的实现类****DAOimpl。

最后,在DAOFactory的工厂中要进行注册,也就是要把每个***DAOimpl对象的创

建写好。工厂类只有一个,但是要进行多次注册。

(为什么写工厂类的问题,在设计模式中有一种模式是工厂模式,此时采用的就是这个,它有它的好处。在我的博客中针对3种不同的工厂模型都有介绍)。

下面是具体的执行步骤:


1.1第一次写的时候,需要写一个工具类,表示JDBC对数据的连接。叫DatebaseConnection类。

其中包括open和close。数据库的连接和关闭。




1.2定义一个抽象类,名称为AbstractDAOImpl.java(实现dao接口),创建了一个Connction和PreparedStatement。直接使用就可以了。


1.3 定义数据库中的表(可以叫VO类或者JavaBean类)

-class:VO类(表示我们数据库中的每个表,每个数据都是private的,每个变量都有相应的setter和getter函数)

        举个列子:定义一个管理员的表。其中有5个属性。 

            

1.4 第一次定义一个IDAO类,此后都是继承该接口,用哪个函数override其中的哪个函数

-interface:IDAO(定义公共接口)实现接下来所有可能对数据库中数据进行的各种修改函数的声明

        其中可以包括函数为:

            <K>表示主键       <V>表示要操作的对象

            -public boolean doCreate(V vo) throws SQLException;   

                                         //实现对数据的增加操作,成功返回true,否则返回false

            -public boolean doUpdate(V vo) throws SQLException;  

                                            //实现对数据的更新操作

            -public  boolean deRemove(Set<?> ids) throws SQLException; 

                                       //实现对数据的批量删除,ids表示要删除的数据集合

            -public V findById( K id)  throws SQLException;  

                                       //根据用户提供的id进行查询,查询成功返回该数据行中的记录,失败返回null。

            -public List<V> findAll( ) throws SQLException;

                                        //实现数据的全部查询(查询结果有多行),成功返回多行数据

      -public  List<V> findAllBySplit ( String column , String keyword , int currentpage , int linesize) throws SQLException;   

                                             //实现数据的分页操作,column 表示要执行查询列;keyword 表示查询的关键字;currentpage表示当前页;linesize表示每页显示记录数。成功返回所有数据。

                -public int getAllCount(String column , String keyword ) throws SQLException;  

                                              //表示数据量统计操作。

            -

  1.5 定义和表有关的具体的IDAO(继承IDAO的所有操作数据的方法,并且根据该模块的特殊需求,可以添加所需的新方法)

比如:IAdminDao中,继承了IDAO的所有处理数据的方法(上面的橘色的方法),同时可以有自己的特殊的方法。比如这里是登录的一个验证功能。






  1.6 写一个I***DAO的实现类。继承I***DAO的接口,继承接口中的方法,并且具体实现它。

例如:新建一个public  class AdminDAOimpl extends AbastractDAOImpl implement IAdminDAO<String ,Admin> 其中包括该函数。

extends AbastractDAOImpl 的作用:可以直接使用其中的PrepareStatement  pstmt语句。和数据库的连接,不需要每次都写了。

AdminDAOImpl就是具体实现了登录功能的方法。包括:sql语句编写;处理sql语句,因为是变量传参所以要pstmt.setString()每个参数;execteQuery()返回的都是resultset集合。所以用next()循环处理。因为这里是判断是否有记录,用if。如果是查找全部的结果就要用while。


1.7编写一个工厂类DAOFactory,实现所有的***DAOimpl创建对象的过程。

例如:这个工厂只注册了一个IAdminDAOImpl的实现类,在我们写完课程表等表后,都需要在其中注册。





2.业务层

             ----其实本人觉得业务层和控制层可以合并,只是我参考的代码的人是全部分开写的。 如果说数据层是具体的告诉数据库要干啥的,那么业务层我理解为把数据库干的一些事进行整理,然后把最后的一个结果返回给下面的控制层。比如控制层要增加一个数据,那么控制层就调用业务层的一个函数insert(参数)即可。那么业务层的insert(判断是否可以添加(即数据库是否存在该行数据,要调用数据层的函数findById) + 如果可以添加就添加(即调用数据层的函数doCreat()函数))。所以这个insert函数相当于调用了两个数据库中的函数,但是他其中没有任何的具体实现,就是调用数据层写好的函数而已。


总结业务层怎么写:

1.实现service的接口(根据模块的不同,生成的不同)

2.实现与接口对应的具体实现***ServiceImpl

3.在工厂中注册


2.1根据该对象(例如admin)要执行的功能,写一个service类。

例如:根据数据层的IAdminDAO,写一个interface:IAdminService(admin模块)

或者根据lenbookDAO写的一个interface:lenbookService(借书lenbook模块)


2.1 写刚刚接口的实现。

比如:AdminServiceImpl 继承IAdminService接口。

仔细观察,发现调用数据层的函数都是调用的DaoFactory中的函数来创建的对象,然后调用的对象的函数,.findLogin(vo).


比如:lenbookServiceImpl 继承lenbookService接口。

他调用数据层的函数于是调用的工厂中DAOFactory的函数。



2.3第一次的时候,要定义服务层工厂类ServiceFactory

      当然下次就只需要在工厂中注册就可以了,不需要定义工厂了。

可以如下定义:

与接口层的工厂定义类似。



3.控制层

        -----控制层就是我们的servlet类。就是用来接收request中的函数,然后调用serviceImpl中函数进行处理,然后再和前端界面进行连接(前端连接主要是url到该servlet中)

总结业务层怎么写(控制层一个servlet就可以搞定,但是其中编写具体分如下的几步)

1.doGet()和doPost()函数,用来取到url中“/”后的那个servlet中的函数

2. 编写该函数。包括:接受参数;调用函数传递参数;跳转3个部分。


3.1servlet被调用后,doPost调用doGet方法。在doGet方法中,status就可以取到要调用的servlet中哪个类的名字,然后根据if判断,就可以跳到下面的该类中。

比如下面的函数是用来判断是否是login字段的然,然后调用3.2中login函数。


3.2 编写该函数。包括:接受参数;调用函数传递参数;跳转3个部分。

例如:login函数的编写。

它的密码部分用了一个加密处理,可以忽略。





4前端界面的编写。

    -----因为我们编写的时候是从数据层开始编写的,在控制层如果写好了url,那么就

根据写好的编写jsp界面就可以。在其中可以使用html<form action="#" >或者

<a rel="external nofollow" href="#">等方法实现对servlet的调用。当然jsp可以应用我们servlet中传递的各

种参数。

前端用到的技术主要是html+css+js+jsp(偏后台)。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。