Tomcat&Servlet
Tomcat
web相关知识回顾
1.web服务器软件
启动tomcat软件bin目录下的startup.bat
c/s:客户端/服务器端
b/s:浏览器/服务器端
2、资源分类
1.静态资源:所有用户访问后,得到的结果都是一样的。静态资源可以直接被浏览器解析
*如:html,css,JavaScript
2.动态资源:每个用户访问相同资源后,得到的结果可能不一样。动态资源被访问后,需要先转换为静态资源,在返回给浏览器
*如:servlet/jsp,php,asp……
3、网络通信三要素
1.IP:电子设备(计算机)在网络中的唯一标识
2.端口:应用程序在计算机中的唯一标识 0~65536
3.传输协议 :规定了数据传输规则
1.基础协议
1.tcp:安全协议,三次握手,速度稍慢
2.udp:不安全协议,速度快
web服务器软件
服务器:安装了服务器软件的计算机
服务器软件:接受用户的请求,处理请求,做出响应。
web服务器软件:接受用户的请求,处理请求,做出响应。
*在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目。
*web容器
常见的java相关的web服务器软件:
*webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
*webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
*JBOSS:JBOSS公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
*TomCat:Apache基金组织,中小型的JavaEE服务器,支持部分JavaEE规范,免费的。
JavaEE:Java语言在企业及开发中使用的技术规范的总和,一共规定了13项大的规范。
Ctrl+c关闭tomcat
配置
部署项目的方式:
1.直接将项目放到webapps目录下即可。
*/hello:项目的访问路径——>虚拟目录
*简化部署:将项目打包成一个war包,在将war包放置到webapps目录下
war报会自动解压
动态项目和静态项目:
*目录结构:
*java动态项目:
--项目 名称
--WEB-INF
--web.xml:该项目的核心配置文件
--classes目录;放置字节码文件
--lib目录:放置项目依赖的jar包
*将Tomcat集成到IDEA中,并且创建JavaEE的项目,部署项目。
Servlet:server applet
概念:运行在服务器端的小程序
Servlet 就是一个接口,定义了Java类被浏览器访问到(tomcat)的规则。
将来我们自定义一个类,实现Servlet接口,覆写方法。
快速入门:
1.创建JavaEE项目
2.定义一个类,实现Servlet方法
public class ServletDemo1 implements Servlet {
3.实现接口中的抽象方法,
4.配置Servlet
注意:在webxml中配置
<!--配置Servlet--><servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
</servlet><servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
执行原理:
1.当服务器接收到客户端浏览器的请求之后,会解析请求的URL路径
2.查找web.xml文件,是否会有对应的标签体内容
3.如果有,则在找到对应的全类名
4.tomcat会将字节码文件加载到内存,并且创建其对象
5.调用其方法
Servlet中的生命周期方法:
Servlet是Java对于Web开发而产生的一项技术,可以说Servlet技术是Java专有的,它是**服务器端的技术,客户端通常是浏览器**,Servlet提供了请求/响应模式,是JAVA的一种规范,只能使用于Java上,用来替代早期使用的难懂的CGI,是一种无状态的请求响应,客户端访问一个服务器的url,只需要发送简单的httprequest即可。规定了四个范围:pageContext、request、session、application。一定依赖于各种Servlet容器,但Servlet只能接受一个简单的http请求。
1.被创建:执行init方法,只执行一次
Servlet什么时候被创建
默认情况下,第一次被访问时,servlet被创建
可以配置servlet创建的时机,
<!--指定Servlet的创建时机
1.第一次被访问时,创建<load-on-startup>的值为负数
2.在服务器启动时,创建<load-on-startup>的值为0或正整数-->
2.提供服务:执行service方法,执行多次
每次访问Servlet时,Service方法都会被调用一次
3.被销毁:执行destory方法,只执行一次
destory方法在Servlet被关闭前执行
只有服务器正常关闭,才会执行destory方法
Servlet3.0
好处:
支持注解配置。可以不需要web.xml
步骤:
1.创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
2.定义一个类,实现Servlet接口
3.复写方法
4.在类上使用@WebServlet(urlPatterns="/demo")注解,进行配置
@WebServlet(urlPatterns=“资源路径”)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JfUSlIHI-1582279248149)(C:\Users\张常超\Documents\Idea与tomcat的相关配置.JPG)]
Servlet的体系结构
Servlet —接口
|
GenericServlet —抽象类
|
⚪HttpServlet —抽象类
HttpServlet:对http协议的一种封装,简化操作
1.定义类继承HttpServlet
2.复写doGet/doPost 方法
7.Servlet相关配置
1.urlpartten : Servlet访问路径
1.一个Servlet可以定义多个访问路径@WebServlet("/demo3","/d3")
2.路径定义规则:
1, /xx
2. /xx/xx: 多层路径,目录结构
3. *.do
Http
概念:Hyper Text Transfer Protocol 超文本传输协议
传输协议:定义了,客户端和服务器端通信时,发送数据的格式
特点:
1.基于TCP/Ip的高级协议
2.默认端口号:80
3.基于请求/响应模型的:一次请求对应一次响应
4.无状态的:每次请求之间相互独立,不能交互数据
请求消息数据格式
1.请求行
请求方式 请求url 请求协议/版本
GET /login.html HTTP/1.1
请求方式常用的两种:GET和POST
GET:1.请求参数在请求行中,在url之后
2.请求的url长度有限制
3.不太安全
POST:1.请求的参数在请求体中
2.请求的url长度没有限制
3.相对安全
2.请求头:
客户端浏览器告诉服务器一些信息
请求头名称:请求头的值
常见的请求头:
1.User-Agent :浏览器告诉服务器,我访问你使用的浏览器版本类型
可以在服务器端获取该头的信息,解决浏览器的兼容性问题
2.Referer: http://locathost/login.html
告诉服务器,请求从哪里来的
作用:防盗链 、 统计工作(优酷电影连接)
3.请求空行
空行,就是用于分割POST请求的头和请求体
4.请求体(正文)
封装POST请求消息的请求参数
Host: localhost:63342
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: Idea-3d07eec1=66a8beee-3529-44eb-9c55-f67617538956
Upgrade-Insecure-Requests: 1
If-Modified-Since: Tue, 28 Jan 2020 03:10:11 GMT
Cache-Control: max-age=0
HTTP协议:响应消息
(服务器端发送给客户端的数据)
数据格式:
响应行
1.组成:协议/版本 响应状态码 状态码描述
响应状态吗:
服务器告诉客户端浏览器本次请求和相应的一个状态
1.状态吗都是三位数
2.分类:
1.1xx:服务器接收客户端的消息 ,但没有接受完成,等待一段时间后,发送1xx多状态吗
2.2xx成功。代表200
3.3xx:重定向。代表:302(重定向)304(访问缓存)
4.4xx:客户端错误
代表:
404(请求的路径没有对应的资源)
405:请求的方式没有对应的doXXx方法
5.5xx:服务器端错误。代表:500(服务器内部出现了异常)
响应头
1.格式:头名称:值
2.常见的响应头
1.Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
2.Content-disposition:服务器告诉客户端以什么格式打开响应体数据
值;
in-line:默认值,在当前页面内打开
attachment:filename=xxx:以附件形式打开响应体。文件下载
响应空行
响应体:传输的数据
响应字符格式:
HTTP/1.1 200 OK
content-type: text/html
server: IntelliJ IDEA 2019.1
date: Sun, 2 Feb 2020 07:24:11 GMT
X-Frame-Options: SameOrigin
X-Content-Type-Options: nosniff
x-xss-protection: 1; mode=block
cache-control: private, must-revalidate
last-modified: Tue, 28 Jan 2020 03:10:11 GMT
content-length: 266