本人在学习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 href="#">等方法实现对servlet的调用。当然jsp可以应用我们servlet中传递的各

种参数。

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

Servlet+jsp开发图书管理系统流程。相关推荐

  1. PHP网站源码-ThinkPHP5框架内核开发图书管理系统

    介绍: PHP网站源码-ThinkPHP5框架内核开发图书管理系统, 半成品的图书管理系统,有基本功能,很多功能不完善,只能二开使用,也可以做毕业设计使用哦! 源码文件包安装教程已经打包好,小白也可以 ...

  2. jsp/servlet 实现的图书管理系统

    最近闲来无事,有很多同学来说要做一个图书管理系统的课程设计.要求的技术是jsp/servlet,后端采用mvc架构.数据库使用mysql,于是就花了点时间做了一个有简单业务逻辑的图书管理系统.比较适合 ...

  3. 基于JSP(java)图书管理系统的设计和实现(含源文件)

    获取项目源文件,联系Q:1225467431,可指导毕设,课设 摘 要 伴随着互联网的蓬勃发展,人们已经不再满足于信息的浏览和发布,而是渴望着能够充分享受网络所带来的更加多的便利.掌握计算机知识和应用 ...

  4. Android大作业:安卓开发图书管理系统APP

    Android Studio开发项目图书管理系统项目视频展示: 点击进入图书管理系统项目视频 引 言 现在是一个信息高度发达的时代,伴随着科技的进步,文化的汲取,人们对于图书信息的了解与掌握也达到了一 ...

  5. JSP+structs图书管理系统

    作者主页:源码空间站2022 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 该项目为图书管理系统,主要功能如下所示: 首页:图书借阅排行榜: 系统设置:图书馆 ...

  6. 基于servlet+jsp开发的电影购票系统(附源码)

    1.简介 随着国民经济快速发展,人们对生活的要求越来越高,对服务的快捷.便利性要求也越来越高,他们对电影院行业的建设与管理提出了更高的要求.为适应和推动电影行业的发展,各电影院公司和部门开始广泛采用计 ...

  7. 手摸手教会你在idea中配置Tomcat进行servlet/jsp开发(多图超详)

    1. 下载安装idea,创建project,如果没有JDK可以通过idea指定文件夹并下载JDK.工程就是普通的Java工程,名字为webdemo 2.因为是Web项目,所以要对这个普通的项目进行WE ...

  8. 基于jsp的图书管理系统_计算机毕业设计基于JSP书籍租阅管理系统的设计与实现...

    系统总业务流程图: 普通用户业务流程图: 管理员业务流程图: 系统功能需求设计: 1.系统用户管理:超级管理员和普通管理员都需要对系统用户进行管理,包括添加.删除.修改和查询普通管理员,修改管理员密码 ...

  9. 基于java+jdbc+servlet+jsp实现图书商城

    1.网站前台首页

最新文章

  1. 请不要将抛出异常作为业务逻辑使用!!!
  2. 百度员工吐槽:百度江河日下,不知该何去何从?
  3. springSecurity源码分析-spring-security.xml文件配置
  4. 【遥感数字图像处理】实验:遥感图像分析方法大全(Erdas版)
  5. Musik音乐社区整套UI网站模板
  6. shell编程基础:逻辑运算
  7. 服装业需要什么样的信息化?
  8. ant centos环境下 编译没有将配置文件加载_Linux 下的动态库、静态库与环境变量...
  9. 玩转基金(3)买卖基金
  10. vue实现拍照人脸识别功能带人脸选中框
  11. 联想昭阳e43l笔记本配置
  12. hse是什么意思的缩写_什么是HSE
  13. 多线程同步有几种实现方法C语言,线程同步与并发
  14. iphone远没有android好用,IPhone真的比Android流畅?不要被视觉欺骗了
  15. 零基础学习Hadoop
  16. 时尚内容短视频制作素材AE模板 Stylish Fashion Opener
  17. 哔哩哔哩 BV、AV互转 C#版
  18. linux shadow文件*,Linux怎么查找shadow文件进入这样几步轻松搞定
  19. 抖快推出流媒体音乐平台 会改变在线音乐市场格局吗?
  20. 2021年6大好用又免费BI软件系统

热门文章

  1. freeRTOS学习 — 消息邮箱
  2. VMware安装mac的流程及unlocker 报错 、出现的一些问题解决方案整理
  3. dpdk pmd驱动分析
  4. PC电源的保持时间是用来做什么的?
  5. 【随机优化】李雅普诺夫优化在通信与排队系统中的应用(第一章)-绪论
  6. 在docker下安装运行vue
  7. 【数据结构】7-4 病毒感染检测 (15 分)
  8. 八、MySQL 常用函数汇总(1)
  9. ES6学习笔记2:字符串的repeat()方法
  10. html中repeat平铺图片5张,no-repeat