代码改变世界

20220419-Servlet和HTTP请求协议

2022-04-25 16:38  晓峰如月  阅读(32)  评论(0编辑  收藏  举报
主要内容:
1,Servlet_快速入门
2,Servlet_生命周期方法
3,Servlet_3.0注解配置
4,Servlet_IDEA与tomcat相关配置
5,Servlet_体系结构与urlpartten配置
6,HTTP请求协议
 
一,什么是servlet?
运行在服务器上的一个小程序,一个可以让浏览器找到java类的接口,类似.net种的一般处理程序ashx(request和response)
 
 
二,怎么使用servlet(2.0版本)?
1,创建一个J2EE的类才可以访问servlet。
2,实现(implement)servlet接口。
3,实现(implement)servlet接口中的抽象方法。
4,在web.xml配置servlet,两个节点:servlet和servlet-mapping。两个都有一个servlet-name。不用点为servlet-class(全类目)和url-pattern
 
 
三,servlet执行原理和过程是怎样的?
1,用户通过浏览器地址和端口找到tomcat,tomcat根据url中的资源类。
2,在web.xml中找url- pattern。
3,找到url-pattern一样的类名。
4,再根据mapping,找到对应的全类名(看到全类目就想到反射)。
5,将全类名内容字节码反射到内存中,并创建类对象。
6,调用servlet方法。
 
---------------------------------------------------------------------------------------------------------------------------------------------------- 
 
四,servlet的生命周期
1,主要是3个方法。
2,init方法,只执行一次,并且可以通过servlet的配置文件节点load-on-startup来决定执行时间点,默认是-1,在被第一次访问时执行,即小于0的情况,此时方法体里面是代码还没有被执行。
大于等于0的情况是代表服务被加载的时候执行init方法,可以看到init方法体里的输出。
2,service方法,每次访问都会被执行,执行多次。
3 ,destroy方法,程序正常关闭时执行此销毁方法,只执行一次。
4,servlet是单例,所以尽量不要在servlet中定义成员变量,即使定义了,也不要对其进行赋值,这是为了防止线程安全。
 
---------------------------------------------------------------------------------------------------------------------------------------------------- 
 
五,servlet3.0比2.0好处是什么?
不用添加web.xml去做一堆配置了,直接在实现servlet的类上写上,即:注解配置
@webservlet,再加上url-pattern资源路径即可
 
---------------------------------------------------------------------------------------------------------------------------------------------------- 
 
六,Ideal与tomcat的关系和配置?
1,Ideal调试的时候要打断点,同时点小虫debug。
2,Ideal中项目每一个程序都有一个tomcat文件夹管理,可以在运行的log里面看到路径。
3,tomcat运行找的的程序对象是在web文件夹下,即使是src文件,也会编译到web文件夹下调用。
 
---------------------------------------------------------------------------------------------------------------------------------------------------- 
 
七,Servlet体系结构是怎样的?
1,GenericServlet(儿子),它实现了servlet接口和所有抽象方法都做了空实现(因为那4个方法基本用的很少),只有service方法依然是抽象方法。 
2,HttpSservlet(孙子)继承了GenericServlet,同时是对Http协议的封装,Http协议有7种请求方式(get,post,head,put,delete,options,trace),http协议对每一个都做了一个判断,然后继承httpServlet的类只要调用doGet,doPost等即可。
 
 
八,webServlet路径urlpatten的配置方式有哪些?
1,它本身定义的是数组类型,如果只写一个就/demo1,如果写多个用{}括起来,用,号分开。
2,多层路径:/xx/xxx,也可以/xx/*
3,随便访问/*
4,随便访问*.do,这里前面不能加/,比如:demo.do即可找到资源路径
注意*的优先级最低
 
---------------------------------------------------------------------------------------------------------------------------------------------------- 
 
九,Http协议概念
1,全称:Hyper text transfer protocol超文本传输协议
2,基于TCP/IP的高级协议
3,默认端口:80
4,基于请求/响应模型,一次请求对应一次响应
5,无状态:每次请求都相互独立,不能交互数据。
6,1.1的版本对比1.0版本,应该是多了keep alive,就是请求完之后,会多等一会,如果还有请求,那么就复用之前的请求。
 
 
十,请求行有哪些内容?
1,请求方式:get、post等,请求路径:login.html页面,请求协议:Http 1.1
 
 
十一,请求头有哪些主要内容?
1,键值对形式。
2,user-Agent:浏览器版本信息。
3,Referer:告诉服务器从哪里请求过来的,用于防盗链,统计点击数等
 
 
十二,get方式有请求体吗?
没有,请求体只是封装了post的请求参数