Servlet的相关知识:
Servlet中的service方法:
这个方法的作用是对客户端的请求做出相应的相应
一个Servlet程序的编写过程:
1、先写一个类,这个类实现Servlet,实现相应的方法
2、在service方法中编写对应的代码
3、在web.xml中编写相应的Servlet程序配置
Servlet的生命周期:
- 执行Servlet构造方法
- 执行init初始化方法
第一二步都是在第一次进行执行的时候执行的,如果重复访问Servlet网页,第一二步不会再次执行
- 执行service方法
第三步,每访问一次Servlet网页都会进行执行
- 执行destroy销毁方法
第四步,在web工程停止的时候进行调用
(上述的都是在实现Servlet类中都应该实现的类)
在一般的实际项目开发中,都是使用继承Servlet的HttpServlet类的方法取实现Servlet程序的
步骤:
- 编写一个类去继承HttpServlet类
- 根据业务需要重写doGet和doPost方法
- 到web.xml文件中配置Servlet程序的访问地址
ServletConfig是Servlet程序的配置信息类
ServletCofig和Servlet程序都是Tomcat服务器负责创建,我们负责使用。
Servlet程序默认是在第一次访问的时候进行创建,ServletConfig是在每个Servlet程序创建的时候,就创建一个相应的ServletConfig对象(每一个ServletConifg对象那个对应一个Servlet程序,他只能获取到他自己对应的Servlet对象在web.xml文件中的标签的值)
我们在重写init()方法的时候,一定要加上一句super.init(ServletConfig对象),不然就会出现空指针异常,为什么呢?
原因是我们重写的init方法中的参数中的ServletConfig这个参数是一个在GenericServlet抽象类中的参数,在GenericServlet抽象类中也具有init方法,在这个init方法中,他将传入的ServletConfig参数进行保存起来了,如果我们再重写init方法的时候没有加上super.init(ServletConfig对象)这段代码的话,我们就不能将ServletConfig进行保存起来,就会出现异常
ServletContext类他是一个接口。
ServletContext对象:(Servlet上下文对象)
ServletContext对象在每一个web工程只存在一个,不管使用多少次getServletContext()方法,返回的都是同一个ServletContext对象
ServletContext对象是一个域对象,在工程进行部署的时候进行创建,在web工程停止的时候销毁,一个工程在部署的时候都只能创建一个ServletContext对象
什么是域对象?
域对象,是可以和map集合一样的可以存取数据的对象,叫做域对象
这里的域指的是存储数据的操作范围
添加数据: 获取数据: 删除数据
域对象:setAttribute() getAttribute()removeAttribute()
Map:put() get() remove()
ServletContext类的四个作用:
1、获取在web.xml文件中的context-param标签中的上下文参数
2、获取当前工程的路径:格式:/工程路径
3、获取当前工程部署后在服务器硬盘上的绝对路径
4、像map集合一样存取数据
第一种工程部署的方式:
直接将文件拷贝到Tomcat中的webapps中(webapps中的每一个文件夹都是一个工程,也就是网页)
部署好之后,如果想要进行访问,需要将html文件的路径从webapps中这个工程为起始文件进行添加路径进行访问
工程部署的第二种方法
在conf这个配置文件夹中的Catalina\localhost中添加一个xml文件,我举例为kkk.xml文件,在xml文件中进行编写以下代码:
<Context path="/kkk" docBase="E:\IdeaProjects\JavaWeb\out\artifacts\web03_war_exploded" />
代码解释:
Context表示是一个工程上下文
path表示工程的访问路径为/kkk(这个kkk是和xml文件名相同的)
docBade表示的是你的工程目录在哪里(也就是第一种方法中的在webapps中添加的文件夹的位置)
使用这种方式,就不需要再将工程目录存放在webapps目录下了,可以存放在任意位置,前提是docBase后面的值等于工程目录的位置
在进行访问的时候,会从配置文件中加载进行工程的位置,在进行访问
客户端向服务器发送数据叫做请求,服务器向客户端发送数据叫做相应
请求又分为两种:(get请求和post请求)
- get请求
- 请求行
- 请求的方式 get
- 请求的资源路径[ +?+请求参数](这里的请求参数就是标签中的name属性)
- 请求的协议版本号 Http/1.1
- 请求头
1)key:value 组成 不同的键值对表示不同的涵义
请求头中常见的key:
Accept:告诉服务器,客户端可以接受的数据类型
Accept-Language:告诉服务器,客户端接受的语言类型
Zh_CN 中文
En_US 英文
User-Agent:里面就是浏览器的信息(Agent表示代理, 代替用户替我们发送信息的东是是服务器)
Accept-Encoding:告诉服务器客户端可以接受的数据编码(压缩)格式
Host:表示请求的服务器ip和端口号
Connection:告诉服务器请求的连接如何
Keep-Alive 告诉服务器回传数据不要马上关闭,保持一段时间的连接
Closed 马上关闭
Poet请求:
- 请求行
1)请求方法 post
2)请求的资源路径[+?+参数]
3)请求的协议的版本号 Http/1.1
- 请求头
1)key:value 不同的键值对有不同的含义
空行(这里有一个空行将数据进行分开)
Post请求常见的key:
1、 Accept:客户端支持什么数据类型的数据
2、Accept-Language:客户端接受的语言类型
3、Referer:表示发送请求时,浏览器地址栏中当前的地址(从哪儿来)
4、User-Agent:表示浏览器的信息
5、Content-Type:表示发送的数据类型
Application/x-www-form-url lencoded
表示提交的数据格式是:
Key=value&key=value,然后在对其进行url编码,url编码是把非英文的内容转为%xx&xx的形式
Multipart/form-data
表是以多短的形式提交数据给服务器(以流的方式进行提交,用于上传)
- content-length:表示发送的数据的长度
- cache-control:表示如何控制缓存 no-cache表示不缓存
- 请求体—>>>给服务器的请求
常见的get请求:
- form标签 method=get
- a标签
- link标签引入css文件
- script标签引入js文件
- img标签引入图片
- iframe引入html页面
- 在浏览器地址栏中输入地址后敲回车
常见的post请求:
- form标签 method=post
响应的Http协议格式:
1、响应行
1)响应的协议和版本号
2)响应状态码
3)响应状态描述符
2、响应头
1)key:value 不同的响应头有不同的含义
空行
3、响应体
标签:总结,web,路径,请求,知识,服务器,Servlet,客户端 From: https://www.cnblogs.com/just1t/p/16925948.html