更新时间:2019年01月10日13时35分 来源:传智播客 浏览次数:
Servlet体系结构
Servlet
|
GenericServlet -->抽象类
|
HttpServlet -->抽象类
HTTP
概念: hyper Text Transfer Protocol 超文本传输协议
传输协议: 定义了客户端和服务器端通信时,发送数据格式
特点:
基于TCP/IP的高级协议
默认端口号:80
基于请求响应模型的,一次请求一次响应
无状态 :每次请求之间相互独立,不能交互数据
历史版本
1.0
1.1: SPDY协议
请求消息数据格式
请求行
请求方式 请求url 请求协议/版本
请求方式
GET
请求参数在请求行,在url后
请求的url有限制
不安全
POST
请求参数在请求体中
请求的url没有限制
相对安全
请求头
请求头名称: 请求头值
User-Agent: 浏览器告诉服务器,我访问你使用的浏览器版本信息
可以在服务器端获取该头信息,解决浏览器兼容问题
Referer
告诉服务器,我(当前请求)从哪里来
作用
防盗链:
统计
content-tyoe
请求空行
空行
作为请求头和请求体的分隔
请求体
请求参数(post)
Request(发送数据到服务器)
request和response对象是由服务器创建的.我们阿里使用它们
request对象是获取请求信息的,response对象是来设置响应消息的
request和response对象是由服务器(TomCat)在浏览器访问服务器时创建的
获取请求消息数据
获取请求行数据
方法
获取请求方式
String getMethod()
***获取虚拟路径
String getContextPath()
获取Servlet路径
String getServletPath()
获取get方式请求参数:
String getQueryString()
***获取请求URI
String getRequestURI()
String getRequestURL()
获取请求头数据
String getHeader(String name)通过头名称获取对应的值
Enumeration(String) getHeaderNames 获取所有请求头的名称
hub~
获取请求体数据
请求体 :只有post请求方式中,才有请求体,在请求体中封装了post请求的请求参数
BufferedReader getR() 获取字符输入流
InPutStream getInPutStream() 获取字节输入流
获取请求参数通用方式
String getParameter(String name) 根据参数名称获取参数值
String[] getgetParameterValues(String name) 根据参数名称获取参数值数组
Enumeration(String) getParameterNames() 获取所有请求的参数名称
Map
中文乱码问题
get方式:tomcat已经将get方式乱码问题解决
post方式: 会乱码
解决
request.setCharacterEncoding(编码格式)
请求转发
一种在服务器内部资源跳转方式
步骤
通过request对象获取请求转发器
RequstDispatcher getRequstDispatcher(String Path)
使用RequstDispatcher对象调用forward方法实现资源跳转
RequstDispatcher.forward()
特点
浏览器地址栏路径不变
只能访问服务器内部资源
请求转发只有一次请求
ps:服务器内部资源千万不要携带虚拟路径
共享数据
域对象
一个有作用范围的对象,可以再范围内共享数据
request域:代表一次请求的范围.一般用于请求的多个资源中共享数据
方法
setAttitude(String name, Object obj) 存储数据
getAttitude(String name) 通过键获得值
removeAttitude(String name) 通过键删除键值对
获取ServletContext
request.getServletContext()
绝对路径
基于服务器的绝对路径
/开头的代表绝对路径
.或者..开头代表相对路径
域对象
ServletContext 服务器启动时创建,关闭时销毁,仅限当前项目
HttpSession 一次回话
HttpServletRequest 一次请求
PageContext 当前页面