背景

全民编程的时代孕育了一大批野生程序员,他们来自土木,来自机械,来自电气,来自全国各地,来自五湖四海,总之不管是出于这样还是那样的原因,最终都走上了开发的道路,成为了一名野生程序员。没有经过计算机专业课程的洗礼,一个人在这条路上默默摸索,迷茫又坚定,执拗又执着。好了不扯了,写此篇的目的是为了献给那些非计算机专业,刚接触JavaEE的孩子,希望可以帮你们抹掉脑子里的一些小问号。

问题清单

1.什么是服务器?

答:一台装有服务器软件的计算机,核心是服务器软件。

2.什么是服务器软件?

答:用来运行我们写的web项目的软件,它可以接受,处理用户的请求并返回给用户相应的资源。比如tomcat就是一个服务器软件。

3.为什么在浏览器输入一个网址就能得到我们想要的信息,浏览器和服务器如何通信?

关于JavaWeb的一些必须烂熟于心的基础知识

看了上面这个图是不是有一堆问号?什么是HTTP,www.xxx.cn和192.168.100.32:8080有什么区别?TCP是什么?对于一个未受过计算机课程洗礼的我和你一样有诸多为什么?不要慌,继续看

 

网络基础

计算机网络

把分布在不同的地理区域的计算机与专门的外部设备用通信线路连成一个规模大,功能强的网络系统,从而使众多的计算机可以方便的互相传递信息,共享资源。

问题:看了上面一段话,是不是依旧觉得很抽象?这样的网络系统那到底是怎么搭建的呢?

答:作为一个非计算机专业的学生,这里我告诉你,如果只是为了学习JavaEE,那么就没有必要再深究网络构建的问题。你只需要明确一点,两台计算机在有网的情况下可以实现信息传递和资源共享。那么是如何实现的呢?

扩展:资源分为静态资源和动态资源,静态资源像图片文件等,动态资源指的是可变化的网页,比如我们看到的淘宝首页都不一样,因为淘宝首页会根据我们各自的喜好给我们推荐不同的商品。

网络通信的三要素

IP:计算机在网络中的唯一标识,客户端通过IP能找到服务器

端口号:应用程序在计算机中的唯一标识,通过端口号可以找到服务器上的具体某个应用

网络通信协议:客户端和服务端互相传递信息需要遵循的规则

总结:IP和端口号确定位置,通信协议负责信息传输

问题:通信协议有哪些?

关于JavaWeb的一些必须烂熟于心的基础知识

TCP/IP模型是国际通信标准,每一层都有对应的协议,负责处理不同的事情

HTTP协议

Http是我们平常见的比较多的一种协议了,也许你从来没想过它是什么,那么现在你就应该知道所谓http协议就是客户端(浏览器)和服务器通信(发送数据)时需要遵守的规则。http协议中的数据又叫报文。

浏览器向服务器发送请求,请求的方式有两种,一种是get请求,一种是post请求,他们最大的区别在于他们发送数据的方式,前者通过拼接在url后面,后者通过请求体封装。

不同的请求对应的HTTP协议格式也不同,具体如下:

  1. GET 请求

1、请求行

         (1) 请求的方式 GET

         (2) 请求的资源路径[+?+请求参数]

         (3) 请求的协议的版本号 HTTP/1.1

2、请求头

         key : value 组成 不同的键值对,表示不同的含义。

关于JavaWeb的一些必须烂熟于心的基础知识

  1. POST请求

1、请求行

           (1) 请求的方式 POST

           (2) 请求的资源路径[+?+请求参数]

           (3) 请求的协议的版本号 HTTP/1.1

2、请求头

           1) key : value 不同的请求头,有不同的含义

           空行

3、请求体 ===>>> 就是发送给服务器的数据

关于JavaWeb的一些必须烂熟于心的基础知识

通过上面的介绍,大家对客户端和服务器的交互大概有了一个认识,我们现在知道了在有网的情况下,我们可以通过IP和端口号就能找到我们的服务器,那么问题来了,服务器是如何给我们返回相应的资源呢?是谁在帮服务器处理我们的请求呢?答案是Servlet

JavaWeb三大组件

作为一个JavaEE方向的程序员,必须要知道的三大组件,Servlet 程序、Filter 过滤器、Listener 监听器。

问题:什么是组件?

答:组件就是满足规范的的对象;三大组件就是满足JavaEE规范的三个接口

Servlet

Servlet是运行在服务器上的一个Java小程序,每一个请求都对应一个Servlet,当浏览器有请求发送过来时,服务器就会调用与请求相对应的Servlet去处理该请求,即Servlet的作用就是接收浏览器发送过来的请求并响应数据给客户端。

Servlet是有生命周期的,大致如下:

1、执行 Servlet 构造器方法

2、执行 init 初始化方法

       第一、二步,是在第一次访问的时候创建 Servlet 程序会调用。

3、执行 service 方法

       第三步,每次访问都会调用。

4、执行 destroy 销毁方法

      第四步,在 web 工程停止的时候调用。

Servlet创建时都会伴随着创建一个ServletConfig对象,该对象拥有自己所对应着的那个Servlet的各种配置信息

Listener(监听器)

监听器的作用是,监听某种事物的变化。然后通过回调函数,反馈给客户(程序)去做一些相应的处理。监听器的种类有很多种,但是在实际的业务场景中用到的机会很少,甚至几乎不用了,但是作为一个JavaEE方向的程序员必须要知道有这么一件事。

Filter(过滤器)

Filter过滤器它的作用是:拦截请求,过滤响应。在日常的开发中主要用于拦截请求,拦截请求常见的应用场景有:

1、权限检查

2、日记操作

3、事务管理......等等

Filter 的生命周期包含以下几个方法

1、构造器方法

2、init 初始化方法

       第 1,2 步,在web工程启动的时候执行

3、doFilter 过滤方法

       每次拦截到请求,就会执行

4、destroy 销毁:

       停止 web 工程的时候,就会执行(停止 web 工程,也会销毁 Filter 过滤器)

当系统中同时有多个过滤器的时候,我们将它们称之为过滤器链,执行顺序按他们在web.xml中配置的顺序,但里面还会涉及到其他的一些细节,这里不多赘述。

当系统中每创建一个Filter时,都会伴随着创建一个FilterConfig对象,它拥有与之对应的那个Filter的所有配置信息

总结

这三大组件基本构成了一个JavaEE的核心,Servlet用来处理具体的业务逻辑,落实到底层其实就是通过Socket建立通信,通过IO实现数据的传递;Listener和Filter对于初学者来说对其可以应用的业务场景也许依旧模糊,但是这种模糊感一定会随着自己经验的增长以及知识体系的完善慢慢消除。

 

JavaWeb的其他核心概念

上面三章主要是围绕浏览器和服务器之间的通信方式来展开的,还有一些其他的概念也没有提,接下来主要是对JavaEE中涉及的几个核心概念展开论述。

转发和重定向

转发:浏览器向服务器发送一次请求,服务器内部的Servlet交给另一个Servlet去处理了并向浏览器作出响应

转发的特点:

  1. 只包含一次请求
  2. 地址栏不变
  3. 数据共享因为只创建了一个Request
  4. 只能将请求转发给服务器内部的组件

重定向:浏览器向服务器发送一次请求,服务器内部的Servlet向该浏览器响应了该请求并给他重新发送了一个地址,浏览器自动解析该地址并再一次向该地址发出请求

重定向的特点:

  1. 包含两次请求
  2. 地址栏改变
  3. 数据无法共享
  4. 可以将请求转发给外部组件

Cookie

Cookie 是服务器通知客户端保存键值对的一种技术。客户端有了 Cookie 后,每次请求都发送给服务器。每个 Cookie 的大小不能超过 4kb

Cookie支持生命控制,即可以设置其的销毁时间

浏览器查看cookie的方式

关于JavaWeb的一些必须烂熟于心的基础知识

Session

1、Session 是一个接口(HttpSession)。

2、Session 就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。

3、每个客户端都有自己的一个 Session 会话。并且存储在服务器上。

4、Session 会话中,我们经常用来保存用户登录之后的信息。

5、Session也支持生命控制,超时了会自动销毁,超时指的是两次请求之间的最大时间间隔

浏览器和Session之间关联的技术内幕,如下图所示

关于JavaWeb的一些必须烂熟于心的基础知识

由上图可知,Session 技术,底层其实是基于 Cookie 技术来实现的。

ServletContext

1、ServletContext 是一个接口,它表示 Servlet 上下文对象

2、一个 web 工程,只有一个 ServletContext 对象实例。

3、ServletContext 对象是一个域对象。

4、ServletContext 是在 web 工程部署启动的时候创建。在 web 工程停止的时候销毁。

需要注意的是ServletContext和Session都是JavaEE的域对象,JavaEE的域对象总共有四个,剩下的两个是HttpServletRequest和PageContext .

相关文章: