Tomcat+Servlet

238 阅读4分钟

一、Tomcat概述

Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器
相关术语介绍
tomcat结构目录

二、Serlvet概述

Servlet其实就是一个遵循Servlet开发的java类。Serlvet是由服务器调用的,运行在服务器端。

为什么要用到Serlvet?
我们编写java程序想要在网上实现 聊天、发帖、这样一些的交互功能,普通的java技术是非常难完成的。sun公司就提供了Serlvet这种技术供我们使用。

HTTP协议

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
所有的WWW文件都必须遵守这个标准。它是TCP/IP协议的一个应用层协议  

简单来说,HTTP协议就是客户端和服务器交互的一种通迅的格式\color{#008000}{HTTP协议就是客户端和服务器交互的一种通迅的格式}

HTTP请求

浏览器向服务器请求某个web资源时,称之为浏览器向服务器发送了一个http请求

HTTP响应

一个http响应代表着服务器向浏览器回送数据

Servlet的作用

Servlet带给我们最大的作用就是Servlet能够处理浏览器带来HTTP请求,并返回一个响应给浏览器,从而实现浏览器和服务器的交互\color{#008000}{Servlet能够处理浏览器带来HTTP请求,并返回一个响应给浏览器,从而实现浏览器和服务器的交互}

Servlet生命周期可分为5个步骤

加载Servlet:当Tomcat第一次访问Servlet的时候,Tomcat会负责创建Servlet的实例

初始化:当Servlet被实例化后,Tomcat会调用init()方法初始化这个对象

处理服务:当浏览器访问Servlet的时候,Servlet 会调用service()方法处理请求

销毁:当Tomcat关闭时或者检测到Servlet要从Tomcat删除的时候会自动调用destroy()方法,让该实例释放掉所占的资源。一个Servlet如果长时间不被使用的话,也会被Tomcat自动销毁

卸载:当Servlet调用完destroy()方法后,等待垃圾回收。如果有需要再次使用这个Servlet,会重新调用init()方法进行初始化操作。

简单总结:只要访问Servlet,service()就会被调用。init()只有第一次访问Servlet的时候才会被调用。 destroy()只有在Tomcat关闭的时候才会被调用。

response、request对象

Tomcat收到客户端的http请求,会针对每一次请求,分别创建一个代表请求的request对象、和代表响应的response对象

什么是HttpServletResponse对象?

http响应由状态行、实体内容、消息头、一个空行组成。HttpServletResponse对象就封装了http响应的信息

三、会话技术

基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话。会话跟踪技术有Cookie和Session

**Cookie的流程:**浏览器访问服务器,如果服务器需要记录该用户的状态,就使用response向浏览器发送一个Cookie,浏览器会把Cookie保存起来。当浏览器再次访问服务器的时候,浏览器会把请求的网址连同Cookie一同交给服务器。
Cookie不可跨域名性\color{#008000}{Cookie不可跨域名性}
很多人在初学的时候可能有一个疑问:在访问Servlet的时候浏览器是不是把所有的Cookie都带过去给服务器,会不会修改了别的网站的Cookie

答案是否定的。Cookie具有不可跨域名性。浏览器判断一个网站是否能操作另一个网站的Cookie的依据是域名。
所以一般来说,当我访问baidu的时候,浏览器只会把baidu颁发的Cookie带过去,而不会带上google的Cookie。

Cookie的有效期\color{#008000}{Cookie的有效期}
Cookie的有效期是通过setMaxAge( )来设置的

什么是Session

Session 是另一种记录浏览器状态的机制。不同的是Cookie保存在浏览器中,Session保存在服务器中。 用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录在服务器,这就是Session

Session和Cookie的区别

从存储方式上比较

Cookie只能存储字符串,如果要存储非ASCII字符串还要对其编码。
Session可以存储任何类型的数据,可以把Session看成是一个容器 

从隐私安全上比较

Cookie存储在浏览器中,对客户端是可见的。信息容易泄露出去。如果使用Cookie,最好将Cookie加密
Session存储在服务器上,对客户端是透明的。不存在敏感信息泄露问题  

从有效期上比较

Cookie保存在硬盘中,只需要设置maxAge属性为比较大的正整数,即使关闭浏览器,Cookie还是存在的

Session的保存在服务器中,设置maxInactiveInterval属性值来确定Session的有效期。
如果关闭了浏览器,该Session虽然没有从服务器中消亡,但也就失效了。