Servlet 和 HTTP 请求协议 复习笔记

一.主要内容

1.Servlet
1.概念
2.步骤
3.执行原理
4.生命周期
5.Servlet 3.0 注解配置
6.Servlet的体系结构

Servlet -- 接口
	丨
GenericServlet 抽象类
	丨
HttpServlet  -- 抽象类
  • GenericServlet:将Servlet 接口中其他的方法做了空实现,只将service()方法作为抽象。
    将来定义Servlet类时,可以继承GennericServlet,实现service()方法
  • HttpServlet:传统意义上service 的判断请求方式
  •   						String	method=req.getMethod();
    
  •   							if("GET".equals(method)){
    
  •   									//get 方式获取数据
    
  •   								}`else if ("POST".equals(method)){
    
  •   											//post 方式获取数据
    
  •   							}`
      
      实现步骤:1.定义类继承HttpServlet
      				2.复写doGet,doPost方法
    

2.HTTP协议
概念:超文本传输协议
传输协议:定义了,客户端和服务器端通信时,发送数据的格式
特点:1.基于TCP/IP的高级协议
2.默认端口号80
3.基于请求/响应模型的:一次请求对应一次响应
4.无状态的:每次请求之间都是相互独立的,不能交互数据

3.Request
*请求消息数据格式:
1.请求行
请求方式:HTTP协议中有七种请求方式,常用的有两种:POST,GET
GET:1.请求参数在请求行中,在url后
2.请求的url长度有限制
3.不太安全
POST:1.请求参数在请求体中
2.请求的url长度没有限制
3.相对安全
2.请求头
请求头名称:请求头值(键值对格式)
3.请求空行
空行
4.请求体(正文)
*响应消息数据格式

request功能

1.获取请求消息数据。

1.获取请求行数据
方法:
1.获取请求方式:get
	String getMethod()

(*重点) 2.获取虚拟目录:/xxx
String getContextPath()
3.获取Servlet路径:/xxx
String getServletPath()
4.获取get方式请求参数:name=zhangsan
String getQueryString()
(*重点)5.获取请求url:/xxx/xxx
String getRequestURI() 返回的是/xxx/xxx
String getRequestURL() 返回的是http://localhost/xxx/xxx
6.获取协议及版本:HTTP/1.1
String getProtocol()

2.获取请求头数据

	方法:(*重点掌握)String getHeader(String name),返回字符串
	Enumeration<String>getHeaderNames():获取所有的请求头名称

3.获取请求体数据

请求体:只有post请求方式,才有请求体,在请求体中封装了post请求的请求参数
步骤:
1.获取流对象
1.1BufferedReader getReader(),获取字符输入流,只能操作字符数据 // 高效的,带有缓冲区,带有ReadLine方法
2.2 ServletInputStream getInputStream():获取字节输入流,可以操作所有类型的
2.再从流对象中拿数据

4.其他功能

	1.获取请求参数通用方式
		1.1 String getParameter(String name):根据参数名称获取值  username=zhangsan & password=123
		1.2 String [] getParameter(String name):根据参数名称获取参数值的数组 hobby=xx & hobby=game,多用于复选框
		1.3 Enumeration<String>   getParameterNames():获取所有请求的参数名称
		1.4 Map<Sting,String> getParameterMap(): 获取所有参数的map集合  键值对 



	2.请求转发:
		2.1 步骤:
			1.通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
			2.使用RequestDispatcher对象来进行转发:forward(ServletRequest request,ServletResponse response)  
		2.2 特点:
			1.浏览器地址栏路径没有发生变化
			2.只能访问当前服务器内部项目,只能转发到当前服务器内部资源中
			3.转发是一次请求


	3.共享数据
		*域对象:一个有作用范围的对象,可以在范围内共享数据
		*request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
		方法:1.void  setAttribute(String name,Object obj):存储数据
					2.Object   getAttribute(String name):通过键获取值
					3.void  removeAttribute(String name):通过键来移除键值对
	4.获取ServletContext
		*ServletContext getServletContext()

4.Servlet的相关配置

1.urlpartten:Servlet访问路径
	1.一个Servlet可以定义多个访问路径:@WebServlet({"/d4","/dd4","/ddd4"})
	2.路径定义规则:
		1./xxx
		2./xxx/xxx:多层路径,目录结构
		3.*.do

5.快速入门
1.创建javaEE项目
2.定义一个类,实现Servlet接口
public class ServletDemo1 implements Servlet
3.实现接口中的抽象方法
4.配置Servlet

在这里插入图片描述
执行原理:
1.当服务器接收到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
2.查找web,xml文件 是否有对应的标签体内容与资源路径一致。
3.如果有,则找到对应的对应的全类名
4.tomcat会将字节码文件加载进内存,并且创建其对象
5.调用其方法

Servlet的方法:
1.init方法,初始化方法,在Servlet被创建时,执行,只会执行一次
2.service()方法,提供服务的方法,每次Servlet被访问时执行此方法,可以执行多次
3.destory方法,销毁方法,在Servlet正常关闭时 执行,执行一次

Servlet 3.0注解配置

1.创建JAVAEE项目时,选择Servlet的版本3.0以上,可以不用创建WEB.XML
2.定义一个类,实现Servlet接口
3.复写方法
4.在类上使用@WebServlet注解,进行配置

  • @WebServlet(“资源路径”)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值