请求消息与响应消息

请求消息数据格式:
1,请求行:请求方式 请求URL 请求协议/版本
2,请求头:请求头名称:请求头值 (客户端浏览器告诉服务器端的一些信息)
常见的请求头:
1User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本
可以在服务器端获取该消息,解决浏览器兼容问题
2Referer:告诉服务器,当前请求从哪里来
作用:1防盗链
2统计工作
3,请求空行:空行
4,请求体:(正文)
封装post请求

request:
1, request和response对象的原理
1request和response对象是由服务器产生的
2request 获取请求消息,response设置响应消息
2, request功能:
1,获取请求消息数据
1获取请求行 :Get /day01/demo? name=ww Http/1.1
方法:1获取请求方式:String getMethod( ) Get
2获取虚拟目录:String getContextPath( ) /day01
3获取Servlet路径:String getServletPath( ) /demo
4获得get方式请求参数:String getQueryString( ) name=ww
5获取requestURI:String getRequestURI( ) /day01/demo
6获取协议及版本:String getProtocol( ) Http/1.1
7获取客户机的IP地址:String getRemoteAddr( )
2获取请求头数据:
方法:1String getHeader(String name) :通过请求头名称获取请求头的值
2Enumeration getHeaderNamers() 获取所有请求头的名称
3获取请求体的数据:
步骤:
获取流对象 (readLine )
BufferedReader getReader( ):获取字符输入流,只能操作字符数据
ServletInputStream getInputStream( )获取字节输入流
2其他功能:
获取请求参数通用功能
String getParameter(String name):根据参数名称获取参数值 username=22
String[] getParameterValues(String name):根据参数名称获取参数值的数组 hobby=222&333
Enumberation getParameterNames( ):获取所有请求参数的名称
Map<String,String[ ]> getParameterMap( ):获取所有参数的map集合
中文乱码问题:
*get方式:tomcat已经解决了
*post方式:乱码了
一行代码解决:req.setCharacterEncoding(“UTF-8”)

        请求转发:一种在服务器内部的资源跳转方式
            步骤:1,通过request对象获取请求转发器对象:RequestDispatcher  getRequestDispatcher(String path)
                        2,使用RequestDispatcher对象进行转发:forward(ServletRequest  req,ServletResponse res)
            特点:1,浏览器地址栏路径不发生变化
                       2,只能转发到当前浏览器内部资源中
                      3,转发是一次请求
        共享数据
            域对象:一个有作用范围的对象,可以在范围内共享数据
            request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
            方法:
                1,setAttribute(String name,Object obj):存储数据
                2,Object getAttribute(String name):通过键获取值
                3,removeAttribute(String name):通过键移除键值对
        获取ServletContext
            ServletContext getServletContext( )

BeanUtils.populate(User,map):对request请求的数据封装到User表里

今日内容:
1,HTTP协议:响应消息
2,Response对象
功能:设置响应消息
1,设置响应行:设置状态吗:setStatus(int sc)
2,设置响应头:setHeader(String name,String value)
简单的重定向方法:
response.sendRedirect(String location);
3,设置响应体
使用步骤:
1,获取输出流:
字符输出流 printWriter getWriter( )
字节输出流 ServletOutputStream getOutputStream( )
2,使用输出流,将数据输出到客户端浏览器
3,ServletContext对象
1,特点:上下文环境对象:对应整个web应用的。一个web应用只能有一个ServletContext对象:
2,ServletContext的获取:
this.getServletConfig().getServletContext();
this.getServletContext();
request.getServletContext();
3,ServletContext的作用:
1, setAttribute(key,value); 向域对象当中存放的键值对作为域的一个属性而存在。
2, getAttribute(key); 通过给定的key获得key对应的值。
(1)取出来的值一定是Object类型:需要强转
(2)如果指定的属性的名称不存在,将获得一个null。
3, removeAttribute(key); 通过指定的密钥,将密钥和密钥对应的值移除。
Enumeration names = context.getAttributeNames()
能够获得资源:
4, 能够获得资源:
(1)能够获得资源的真实路径:真实的路径,是文件在tomcat上的真实的存放的位置。 在文件上传和文件下载的时候,会使用到
.getRealPath(“path” );
路径:指定路径的时候可以使用/开头。也可以不适应/开头。
使用/ 开头:相对于当前的网应用。
不适用/开头:也是相对于当前的网应用。
(2)能够获得指定目录下的所有的资源
.getResourcePaths(“path”);能够获得路径下的所有的文件。返回的是一个set集合。
案例:getResourcePaths(“/ WEB-INF”); WEB-INF这个目录具有安全性该目录下的内容不会被外界浏览器直接访问 的。
5StringmimeType=context.getMimeType(filename);
获取文件类型。

响应消息:
数据格式:
1,响应行
1,组成:协议/版本 响应状态吗 状态码描述
2,响应状态吗:服务器告诉客户端浏览器本次请求和响应的一个状态。
1,状态码都是3位数字
2,分类:
1,1xx:服务器接收客户端消息,但没有接受完成,等待一段时间后,发送1xx
2, 2xx:成功。代表:200
3, 3xx:重定向。代表:302(重定向),304(访问缓存)
4, 4xx:客户端错误。
代表:404(请求路径没有对应的资源)
405(请求方式没有对应的doxxx方法)
5, 5xx:服务器端错误。
2,响应头:
1,格式:头名称:值
2,常见的响应头:
1,Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
2,Content-disposition:服务器告诉客户端以什么格式打开响应体数据
值:
in-line:默认值,在当前页面内打开
attachment;filename=xxx:以附件形式打开响应体。文件下载

路径写法:
1路径分类
1,相对路径:通过相对路径不可以确定唯一资源
如:./index.html
不以/开头,以.开头路径
规则:找到当前资源和目标资源之间的相对位置关系
2,绝对路径:通过绝对路径可以确定唯一资源
如:http://location/day/responseDemo2
以/开头的路径
规则:判断定义的路径是给谁用的?
给客户端浏览器使用:需要加虚拟目录
给服务器端使用,不需要加虚拟地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值