java图书管理系统(前后端分离前)

项目源码Git地址:https://github.com/liuwen766/MyBookManagement.git
项目源码csdn地址:https://download.csdn.net/download/qq_41822345/12225692
这是没有进行前后端分离的项目(高耦合),用于了解java web开发的发展。

1.本项目用到的java技术。

(tomcat、servlet、JSP、session、cookie、el、jstl、filter、ajax、json、jdbc、c3p0、DButils等,这些虽然已经很少直接使用了,但它们是java web开发的基础,更多点击下面链接)。
Java Web 学习笔记:https://blog.csdn.net/qq_41822345/article/details/104516659

  • tomcat:做java开发最主流的web应用服务器。

1.Tomcat是运行在JVM中的一个进程。它定义为【中间件】,顾名思义,是一个在Java项目与JVM之间的中间容器。
2.Web项目的本质,是一大堆的资源文件和方法。Web项目没有入口方法(main方法),意味着Web项目中的方法不会自动运行起来。
3.Web项目部署进Tomcat的webapp中的目的是很明确的,那就是希望Tomcat去调用写好的方法去为客户端返回需要的资源和数据。
4.Tomcat可以运行起来,并调用写好的方法。那么,Tomcat一定有一个main方法
5.对于Tomcat而言,它并不知道我们会有什么样的方法,这些都只是在项目被部署进webapp下后才确定的,由此分析,必然用到了Java的反射来实现类的动态加载、实例化、获取方法、调用方法。但是我们部署到Tomcat的中的Web项目必须是按照规定好的接口来进行编写,以便进行调用。
6.Tomcat如何确定调用什么方法呢。这取却于客户端的请求,http://127.0.0.1:8080/Liuwen.Tomcat.Study/index.java?show这样的一个请求,通过http协议,在浏览器发往本机的8080端口,携带的参数show方法,包含此方法的路径为Liuwen.Tomcat.Study,文件名为:index.java。
Tomcat原理总结:
1.Tomcat需要main方法启动。
2.Tomcat需要监听本机上的某个端口。
3.Tomcat需要抓取此端口上来自客户端的链接并获得请求调用的方法与参数。
4.Tomcat需要根据请求调用方法,动态地加载方法所在的类,完成类的实例化并通过该实例获得需要的方法,最终将请求传入方法执行。
5.将结果返回给客户端(jsp/html页面、json/xml字符串)。

  • servlet:Servlet 是 Java Web 开发的基⽯,与平台⽆关的服务器组件,它是运⾏在 Servlet 容器/Web 应⽤服务器/Tomcat,负责与客户端进⾏通信。
  • JSP:JSP 本质上就是⼀个 Servlet,JSP 主要负责与⽤户交互,将最终的界⾯呈现给⽤户,它是一个HTML+JS+CSS+Java 的混合⽂件。(当服务器接收到⼀个后缀是 jsp 的请求时,将该请求交给 JSP 引擎去处理,每⼀个 JSP ⻚⾯第⼀次被访问的时候,JSP 引擎会将它翻译成⼀个 Servlet ⽂件,再由 Web 容器调⽤ Servlet 完成响应。)
  • 转发:同⼀个请求在服务器之间传递,地址栏不变,也叫服务器跳转。
  • 重定向:由客户端发送⼀次新的请求来访问跳转后的⽬标资源,地址栏改变,也叫客户端跳转。
    转发 getRequestDispatcher 和重定向 sendRedirect 的区别: 转发是将同⼀个请求传给下⼀个⻚⾯,重定向是创建⼀个新的请求传给下⼀个⻚⾯,之前的请求结束⽣命周期。
  • session:保存在服务器,保存的数据是 Object,会随着会话的结束⽽销毁,用于保存重要信息。
  • cookie:保存在浏览器,保存的数据是 String,可⻓期保存在浏览器中,与会话⽆关。保存不重要信息。
  • EL:Expression Language 表达式语⾔,替代 JSP ⻚⾯中数据访问时的复杂编码,可以⾮常便捷地取出域对象(pageContext、request、session、application)中保存的数据,前提是⼀定要先 setAttribute,
    EL 就相当于在简化 getAttribute。
  • JSTL:JSP Standard Tag Library JSP 标准标签库,JSP 为开发者提供的⼀系列的标签,使⽤这些标签可以完成⼀些逻辑处理,⽐如循环遍历集合,让代码更加简洁,不再出现 JSP 脚本穿插的情况。
    实际开发中 EL 和 JSTL 结合起来使⽤,JSTL 侧重于逻辑处理,EL 负责展示数据。
  • Filter:过滤器。1、⽤来拦截传⼊的请求和传出的响应。2、修改或以某种⽅式处理正在客户端和服务端之间交换的数据流。实际开发应用场景:①统⼀处理中⽂乱码。②屏蔽敏感词。③控制资源的访问权限。
  • Ajax:Asynchronous JavaScript And XML:异步的 JavaScript 和 XML。AJAX 不是新的编程,指的是⼀种交互⽅式,异步加载,客户端和服务器的数据交互更新在局部⻚⾯的技术,不需要刷新整个⻚⾯(局部刷新)。
    ajax原理图如下:
    java图书管理系统(前后端分离前)_第1张图片
  • JSON:JavaScript Object Notation,⼀种轻量级数据交互格式,完成 js 与 Java 等后端开发语⾔对象数据之间的转换。
  • JDBC:Java DataBase Connectivity 是⼀个独⽴于特定数据库的管理系统,通⽤的 SQL 数据库存取和操作的公共接⼝。它定义了⼀组标准,为访问不同数据库提供了统⼀的途径。
  • c3p0:数据库连接池的实现(c3p0-config.xml)。数据库连接池的基本思想就是为数据库建⽴⼀个缓冲池,预先向缓冲池中放⼊⼀定数量的连接对象,当需要获取数据库连接的时候,只需要从缓冲池中取出⼀个对象,⽤完之后再放回到缓冲池中,供下⼀次请求使⽤,做到了资源的重复利⽤,允许程序重复使⽤⼀个现有的数据库连接对象,⽽不需要重新创建。当数据库连接池中没有空闲的连接时,新的请求就会进⼊等待队列,等待其他线程释放连接。
  • DBUtils:可以帮助开发者完成数据的封装(结果集到 Java 对象的映射)。
  • MVC:一种分层思想的开发模式。
    M:Model 业务数据(entity、service、repsoitory)
    V:View 视图(JSP、HTML、APP等)
    C:Controller 控制(servlet、action、handler)
    Java实际开发流程:Controller → Service (ServiceImpl)→ Repository (RepositoryImplz)→ DB
    流程:请求进入Controller中,进行相应的业务逻辑处理之后得到Model,将Model带入View响应显示给用户。

2.图书管理项目功能需求。

①登陆功能(包括普通用户登陆,管理用户登陆)
java图书管理系统(前后端分离前)_第2张图片
②首页书本展示
java图书管理系统(前后端分离前)_第3张图片
③图书借阅管理
java图书管理系统(前后端分离前)_第4张图片
④管理员借书处理、还书管理
java图书管理系统(前后端分离前)_第5张图片
java图书管理系统(前后端分离前)_第6张图片

3.项目中遇到的一些问题。

①jar包管理(新增的静态资源部署到tomcat需要Rebuild)
java图书管理系统(前后端分离前)_第7张图片

4.思考:前后端为什么要分离?

  • 一般公司后端开发人员直接兼顾前端的工作,一边实现API接口,一边开发页面,两者互相切换着做,而且根据不同的url动态拼接页面,这也导致后台的开发压力大大增加。前后端工作分配不均。不仅仅开发效率慢,而且代码难以维护。而前后端分离的话,则可以很好的解决前后端分工不均的问题,将更多的交互逻辑分配给前端来处理,而后端则可以专注于其本职工作,比如提供API接口,进行权限控制以及进行运算工作。而前端开发人员则可以利用nodejs来搭建自己的本地服务器,直接在本地开发,然后通过一些插件来将api请求转发到后台,这样就可以完全模拟线上的场景,并且与后台解耦。前端可以独立完成与用户交互的整一个过程,两者都可以同时开工,不互相依赖,开发效率更快,而且分工比较均衡。

更多有关前后端分离参考:https://blog.csdn.net/qq_41822345/article/details/104403807

你可能感兴趣的:(四.Java项目篇,六.Java框架篇)