Servlet基础
1、网络基础概念
互联网,英文是internet,又称国际网络。是网络与网络之间-所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一且巨大的全球化网络,在这个网络中有交换机、路由器等网络设备、各种不同的连接链路、种类繁多的服务器和数不尽的计算机、终端。使用互联网可以将信息瞬间发送到千里之外的人手中,它是信息社会的基础。
2、HTTP简介
HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
2.1 HTTP请求报文
HTTP 报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。一 般一个HTTP请求报文由请求行、请求报头、空行和请求数据4个部分组成。如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lOr0ctOS-1594978053916)(Servlet.assets/http_request.png)]
2.1.1 请求行
请求行由请求方法、URL字段和HTTP协议的版本组成。
2.1.2 请求头
请求报头通知服务器关于客户端请求的信息。
2.1.3 空行
2.1.4 请求数据
请求数据不在GET方法中使用,而在POST方法中使用。POST方法适用于需要客户填写表单的场合。
2.2 HTTP响应报文
在接收和解释请求消息后,服务器返回一个HTTP响应消息。HTTP 的响应报文由状态行、响应报头、空行、响应正文组成。
2.2.1 状态行
一般由服务器HTTP协议的版本、服务器发回的响应状态码、状态码的文本描述等组成。
2.2.2 响应报头
用于服务器传递自身信息的响应
2.2.3 空行
2.2.4 响应正文
响应正文就是服务器返回的资源的内容。
3、B/S与C/S应用
大家思考一个问题,淘宝和英雄联盟有什么区别?为什么一个用浏览器就能访问,一个要下载特定的客户端呢?
B/S:浏览器与服务器应用。体验要求一般,加载资源少;升级方便、无需安装、维护便利、跨平台。
C/S:客户端和服务器应用。体验要求极高,加载资源多;升级不方便、安装不方便、维护不方便、不跨平台。
B/S开发模式也叫web开发。
4、连接的建立跟断开
4.1、连接的建立(3次握手)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f2mrwJpQ-1594978053919)(Servlet.assets/建立连接.png)]
4.2 断开连接(4次挥手)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xN7Vpzyk-1594978053926)(Servlet.assets/断开连接.png)]
5、服务器软件介绍
写一个html很简单,但如何想让这个html让其他人也能访问,该如何处理呢?
Tomcat是目前非常流行的一款开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。它和其它服务器软件类似,能将本地资源向外提供服务。
常见Web应用服务器:Tomcat(Apache)、Weblogic( Oracle), WebSphere(IBM)和JBoss( Redhat)。
6、Tomcat下载、安装、及目录介绍
官网下载:http://tomcat.apache.org/ .默认端口号是8080
安装:解压到任意目录(注意路径不要有中文和空格)
目录介绍:
bin:存放可执行文件
conf:存放配置文件
lib:存放第三方依赖包
logs:存放日志
temp:存放临时文件
webapps:存放应用程序
work:存放运行时的文件
7、10分钟学会搭建电影网站
8、Servlet的使用
8.1、在eclipse中配置Tomcat
8.2、web项目的打包方式(war)
8.3、Servlet简介
servlet是运行在服务器上的应用程序。
8.4、Servlet使用步骤
-
创建web项目,编写web.xml
Index com.blb.seven.IndexServlet Index /IndexServlet -
编写Servlet
-
运行项目
-
http://ip:端口号/项目名称/映射地址
8.5、Servlet实例
Servlet是单实例多线程的。
8.6、Servlet生命周期
-
加载跟实例化Servlet
Servlet 通过调用 构造 方法进行实例化,构造方法必须为无参构造方法。默认是在第一次被访问的时候构造对象。也可以在web.xml中通过N配置Servlet被创建的时机。(N为一个整数表示优先级,>=0表示在web服务器启动的时候创建,<0表示第一次访问时创建)
-
Servlet 实例创建完毕后立马通过调用 init () 方法进行初始化,如果初始化失败抛出ServletException,Servlet对象将会被垃圾回收器回收。init初始化操作只会执行一次。初始化时机紧跟Servlet创建。
-
Servlet 调用 service() 方法来处理客户端的请求。
-
Servlet 通过调用 destroy() 方法终止(结束)。
-
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
8.7、Servlet接收表单数据与返回数据
接收表单数据
request.getParameter("xxx");
返回数据
response.getWriter.write("xxx");
8.8、get请求与post请求
问题:get请求与post的请求的区别是什么?
get:
1,参数拼接在url,不安全
2,只能是字符串类型
3,大小有限制2kb,速度快
post:
1,参数封装到请求体,安全
2,还可以是非字符串类型比如文件
3,理论上大小没限制,速度慢
8.9、转发与重定向(必考)
8.9.1、转发
req.getRequestDispatcher("xxx").forward(req, res);
一次请求,返回200,地址栏没变化
8.9.2、重定向
res.sendRedirect("xxx");
二次请求,第一返回302,第二次请求会使用第一次请求响应中的Location头信息地址进行访问。第二次请求返回200或者304,地址栏会改变。
问题:请求转发跟请求重定向的区别是什么?
s);
一次请求,返回200,地址栏没变化
##### 8.9.2、重定向
```java
res.sendRedirect("xxx");
二次请求,第一返回302,第二次请求会使用第一次请求响应中的Location头信息地址进行访问。第二次请求返回200或者304,地址栏会改变。
问题:请求转发跟请求重定向的区别是什么?