1.servlet体系结构
servlet--接口
HttpServlet 抽象类 复写doGet doPost方法
2.Servlet相关配置
1.urlpattern:Servlet访问路径
*一个Servler可以定义多个访问路径:@WebServlet({"/d4","/dd4"})
3.Http协议
*传输协议:定义了,客户端和服务器端通信时,发送数据的格式
*特点:
1.基于TCP/IP的高级协议
2.默认端口号:80
3.基于请求/ 响应模型的,一次请求对应一次响应
4.无状态的:每次请求之间相互独立,不能交互数据
*历史版本:
*1.0 每一次请求都会建立新的连接
*1.1 复用连接
*请求消息的数据格式
1.请求行
2.请求头
键值对
1.User-Agent:
*可以在服务器端获取该头的信息,,解决浏览器的兼容性问题
2.Referer
*告诉服务器,当前请求从哪里来
*作用
1.防盗链
2.统计工作
3.Connecction:
3.请求体
*响应消息的数据格式
4.Request
1.request对象和response对象原理
1.request和response对象是由服务器创建的
2.request对象是来获取请求消息,response对象设置响应消息
reuqest对象中封装请求消息数据
tomcat将request和response两个对象传递给service方法,并且调用service方法
2.request对象继承体系结构
ServleRequest--接口
|继承
HttpServlerequest --接口
|实现
3.request功能:
1.获取请求消息
1.获取请求行数据
*方法:
1.获取请求方式:String getMethod()
2.(*)获取虚拟目录:String getContextPath()
3.获取Servlet路径:get ServletPath()
4.获取get方式请求的参数:String getQuertString()
5.(*)获取请求URI:String getRequestURI()
StringBuffer getRequestURL()
6.获取协议及版本:HTTP/1.1
7.获取客户机IP地址:String getRemoteAddr()
URL:统一资源定位符
URI:统一资源标识符
2.获取请求头数据
*方法:
(*)*String getHeader(String name):通过请求头的名称获取请求头的方法
*Enumberation
3.获取请求体数据
*请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
*步骤:
1.获取流对象
*BufferedReader getReader():获取字符输入流,只能操作字符数据
2.再从流对象中拿数据
2.其他功能
1.获取请求参数通用的方式
1.String getParameter(String name):根据参数名称获取参数值
2.String[] getParameterValues(String name):根据参数名称获取参数的数组
3.Enumberation<String> getParameterNames:获取所有请求的参数名称
4.Map<String,String[]>getParameterMap:获取所有参数的Map集合
*中文乱码:
*get方式:tomcat8解决了get乱码
*设置流的编码
*request.setCharseterEncoding("utf-8");
2.请求转发:一种在服务器内部资源跳转的方式
1.步骤:
1.reuqest对象调用:getRequestDispatcher(String path)
2.forword(reuqest,response)
2.特点
1.浏览器地址栏路径不发生变化
2.只能转发到当前服务器资源中
3.转发是一次请求
3.共享数据(域对象)
*域对象:一个有作用范围的对象,可以在范围内共享数据
*request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
*方法:
1.setAttribute(String name,Object obj):存储数据
2.Object getAttribute(String name)通过键找值
3.void removeAtteibute(String name) 4.获取ServletContext:
4.获取ServletContext:
*getServletContext()
5.BeanUtils工具类,简化数据封装:
|
|