为了更好的了解框架,我去复习了JavaWeb的基础知识
当我学完了JavaWeb的基础知识,在去看Spring简单多了,脑海里也能够想象出解决的思路(当然,具体如何执行的还要深入了解)
刚刚接触JavaWeb,相信都搞不懂为什么一个一个零件(Servlet、Jsp、Listener等等)可以拼装在一起形成一个网页?
为什么各种组件需要注册到web.xml中?
web.xml中上面一堆的地址是什么?
为什么一个标签
就注册了一个servlet容器?
通过两章的复习,学习
真的了解XML吗? - XML 基础
真的了解XML吗? - XML解析方式
大致明白了实现的思路:
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是什么?都需要知道
浏览器和服务器怎么交流的?
这里涉及到HTTP协议,或者说网络通信协议模式
网络通信协议(1)网络通信了解五层网络模型,大致了解网络通信是怎么完成的?
网络通信协议(4)HTTP协议了解HTTP协议:浏览器与服务器如何交流?
服务器对于一次浏览器请求,会创建两种对象:Request、Response
这两种对象也有3个层次:Request、Response到ServeltRqeuset、ServeltResponse到HttpServletRequest、HttpServletResponse
分别对应Servlet的3个层次:Servlet接口、GenericServlet抽象类、HttpServlet类
HttpServletRequest里包含了浏览器请求和HTTP协议的信息,HttpServletResponse创建时是一个空对象,当服务器响应给浏览器信息时,响应信息保存在Response中
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传值也行
JavaWeb有3个组件:Servlet、Listener、Filter
Servlet是处理,Listener是监听
Listener的具体知识:真的了解Listener吗?- Listener详解
监听器可以监听服务器中的3个域对象:Request、Session、Context
监听器涉及到观察者模式,观察者模式的使用挺广的,包括MVC等,需要学习一下
Filter是过滤器
过滤器是什么?有什么用?怎么用?
可以看看真的了解Filter吗?- Filter详解
通过我们自定义的Filter过滤器,过滤掉我们不需要的请求,也可以过滤响应信息
Filter的继承体系和Servlet类似:Filter - > GenericFilter - > HttpFilter
每一个Filter都会随着服务器的创建而创建,关闭而销毁,是唯一的(所以对于多种过滤需要多个过滤器)
Filter中有4个对象需要关注:Request、Response、FilterConfig、FilterChain
FilterConfig是过滤器配置信息(可以得到ServletConfig)
FilterChain是过滤链,过滤器是顺序执行的,需要FilterChain对象连通
到这里,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、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的深入学习
看到这里,点个赞呗(^_−)☆