JavaWeb总结 - 走向框架

总结

为了更好的了解框架,我去复习了JavaWeb的基础知识

当我学完了JavaWeb的基础知识,在去看Spring简单多了,脑海里也能够想象出解决的思路(当然,具体如何执行的还要深入了解)


XML

刚刚接触JavaWeb,相信都搞不懂为什么一个一个零件(Servlet、Jsp、Listener等等)可以拼装在一起形成一个网页?

为什么各种组件需要注册到web.xml中?

在这里插入图片描述

web.xml中上面一堆的地址是什么?
为什么一个标签<servlet></servlet>就注册了一个servlet容器?

通过两章的复习,学习

真的了解XML吗? - XML 基础
真的了解XML吗? - XML解析方式

大致明白了实现的思路:

  • XML是一种标记语言,是一种数据格式
  • 这些格式、上面的地址是Schema约束技术,用来约束标签内容,指定约束文件地址
  • 通过dom或者sax解析方式可以得到xml配置文件中设置的信息
  • 得到了这些配置信息,再经过服务器内部的一些定义类就可以完成注册(具体实现需要解读Tomcat源码,暂时做不到)

Servlet

Servlet是什么?为什么通过Servlet就可以处理浏览器信息?

在这里插入图片描述
Tomcat服务器=Web服务器+Servlet/JSP容器(Web容器)

Servlet是用Java编写的服务器端程序,主要功能在于交互式地浏览和生成数据,生成动态Web内容,Servlet是具体处理业务的地方

在Tomcat中,各种请求的处理都是各种Servlet,包括默认页面处理DefaultServlet,JSP页面处理JspServlet等等

可以看:真的了解Servlet吗?- Tomcat与Servlet
真的了解Servlet吗? - Servlet的一些细节

Servlet本身有三个层次,Servlet接口、GenericServlet抽象类、HttpServlet类

还有服务器的各种状态对象、域对象等:ServletConfig是什么?ServletContext是什么?都需要知道


Request和Response

浏览器和服务器怎么交流的?

这里涉及到HTTP协议,或者说网络通信协议模式

网络通信协议(1)网络通信了解五层网络模型,大致了解网络通信是怎么完成的?

网络通信协议(4)HTTP协议了解HTTP协议:浏览器与服务器如何交流?

服务器对于一次浏览器请求,会创建两种对象:Request、Response
这两种对象也有3个层次:Request、Response到ServeltRqeuset、ServeltResponse到HttpServletRequest、HttpServletResponse

分别对应Servlet的3个层次:Servlet接口、GenericServlet抽象类、HttpServlet类

HttpServletRequest里包含了浏览器请求和HTTP协议的信息,HttpServletResponse创建时是一个空对象,当服务器响应给浏览器信息时,响应信息保存在Response中


Cookie和Session

Cookie的具体知识可以看:真的了解Cookie吗 - Cookie详解

Session的具体知识可以看:真的了解Session吗 - Session详解

Cookie和Session是什么?为什么要Cookie和Session?Cookie和Session怎么用?

由于历史原因,HTTP协议是无状态的
无状态就是:HTTP协议不会保存一次客户端、服务器会话的临时数据(用户名、密码等),服务器不会记忆客户端的信息,每一次请求都是独立的

为了解决无状态的造成的问题,客户端有了Cookie,服务器有了Session

Cookie是将会话的临时信息以Cookie文件的形式存储在客户端上,每次请求带上Cookie即可

即是用Cookie存储了这些临时信息,url请求时不需要在url后带上一串参数
在这里插入图片描述

但是Cookie有一定的局限性:保存在客户端不安全,且携带不了很多信息

而Session是保存在服务器上的,在服务器保存这些会话的临时信息,仅需创建一个唯一的JSESSIONID 传输给客户端,客户端在请求时带上JSESSIONID就可以获得会话的临时数据,Session是基于Cookie的

但是Session也可以不使用Cookie技术,使用url传值也行


Listener

JavaWeb有3个组件:Servlet、Listener、Filter
Servlet是处理,Listener是监听

Listener的具体知识:真的了解Listener吗?- Listener详解

一张图表示监听器:
在这里插入图片描述

监听器可以监听服务器中的3个域对象:Request、Session、Context

监听器涉及到观察者模式,观察者模式的使用挺广的,包括MVC等,需要学习一下


Filter

Filter是过滤器
过滤器是什么?有什么用?怎么用?

可以看看真的了解Filter吗?- Filter详解

这个时候大致明白了3个组件的运作了:
在这里插入图片描述

通过我们自定义的Filter过滤器,过滤掉我们不需要的请求,也可以过滤响应信息

Filter的继承体系和Servlet类似:Filter - > GenericFilter - > HttpFilter

每一个Filter都会随着服务器的创建而创建,关闭而销毁,是唯一的(所以对于多种过滤需要多个过滤器)

Filter中有4个对象需要关注:Request、Response、FilterConfig、FilterChain

FilterConfig是过滤器配置信息(可以得到ServletConfig)
FilterChain是过滤链,过滤器是顺序执行的,需要FilterChain对象连通


JDBC

到这里,Tomcat服务怎么运行大致了解了,在运行时,可能要保存数据、调用数据,就必须要用到数据库

一个Java程序如何使用数据库呢?
最好的方式是通过JDBC连接相应的数据库驱动,通过驱动连接数据库

关于JDBC的实现,可以看
真的了解JDBC吗?- JDBC详解

在这里插入图片描述

JDBC需要关注4个对象:DriverManager、Connection、Statement、ResultSet

DriverManager管理注册到其上的Driver驱动,程序调用驱动连接数据库通过DriverManager的DriverManager.getConnection(url,name,password);获得连接对象(本质上还是Driver的connect方法连接的数据库)

Connection是对程序连接数据库的一种抽象,把连接抽象成一个对象,通过这个对象可以获得连接信息
在这里插入图片描述

Statement是sql执行对象,是静态的,一般使用的是PrepareStatement动态执行对象,不仅功能多,而且安全,避免sql注入的危险

执行sql方法有execute、executeQuery、executeUpdate,三者的选择?

ResultSet是一个结果集,即执行完sql语句后数据库返回的执行结果,类似与迭代器,可以迭代获取结果

其实还有很多细节没有去深究


Json

Json、XML都是数据格式,为什么选用Json来作为客户端、服务器的数据传输格式?
简单了解了Json的格式与使用:Web - Json数据交换格式

XML是重量级的数据格式:
需要约束文件,需要标签定义,需要解析方式
Json是轻量级的数据格式:
基于JavaScript的语法,键值对存储数据,不需要解析,直接拿取数据即可

JSON是现在最流行的数据交换格式,XML是流行的配置文件


未涉及的知识点

在这里插入图片描述

JavaWeb知识挺多的,还包含了前端知识:HTML、CSS、JavaScript、JQuery等
前后端异步结合:AJAX
动态页面:JSP
EL表达式等等

前端知识HTML是名词、css是形容词、JavaScript是动词,JQuery是JS的升级
入门容易,深入复杂

AJAX可以深入了解一下(但是Thymeleaf太好用了)
JSP和EL等,慢慢的使用少了,了解即可


走向框架

既然普通的JavaWeb可以实现Web开发,为什么要框架?

以我当前的使用来说,普通的JavaWeb太复杂了。。。

Servlet、Listener、Filter必须注册在web.xml中(Spring已经可以不用配置xml了)
而且这些组件的使用也很复杂,继承接口、重写方法。。。
JDBC连接数据库,每一个操作必须手写连接、sql语句(JPA不用写sql语句,MyBatis要写sql语句但是处理简单)
前后端结合AJAX,而Thymeleaf模板可以轻松搞定

我没有经历过使用JavaWeb开发Web的时代,但是框架确实好用

未来,将开始Spring的深入学习

发布了121 篇原创文章 · 获赞 31 · 访问量 7869

猜你喜欢

转载自blog.csdn.net/key_768/article/details/105482896