HTTP协议的请求对象和响应对象

 

HTTP协议:

什么是HTTP,Http是超文本传输协议,从浏览器到服务器称为请求,从服务器回到浏览器称之为响应

请求对象:(HttpServletRequest):

请求对象分为请求头,请求行以及请求实体下面分别来讲一下:

       请求行包括:传输方式(get或post) 请求的地址(url) 协议的版本

       请求头中只有:只有键值对形式存在的参数

       请求实体:post传参方式,需要注意的是,当传输方式为get时,表单中的值是在地址的问号后面,

当传输方式为post时值是在请求实体中

HttpServletRequest的本质上就是HTTP协议的请求所封装的

请求对象中的方法:
1》获取请求行中的内容

        Request.getMethod()   获取请求方式

        Request.getRequestURI() 获取地址栏中?之前端口之后

        Request.getRequestURL() 获取?之前所有,返回StringBuffer

        Request.getScheme() 获取协议

        Request.getContextPath() 获取根目录

        Request.getQueryString() 获取?之后

2》获取请求头中的内容:

        Request.getHeader(键)  键是不区分大小写的

3》获取网络信息:
         request.getRemoteAddr()  获取客户端ip地址

         Request.getRemotePort()   获取客户端的端口

         Request.getLocalAddr()    获取服务器IP地址

         Request.getLocalPort()     获取服务器端口号

4》获取表单参数:

首先获取单键单值:

      Request.getParameter(键)    返回String,需要注意的是如果没有键返回的是null,

有键而没有值返回空字符串;

获取同键不同值(主要针对复选框):
         request.getParameterValues(键)    返回一个String[]

获取所有键的集合:

Request.getParameterNames()   返回的是Enumeration,也就是一个容器

While(enum对象.hasMoreElements()){

enum对象.nextElement();

}

如何解决请求中的乱码问题:

request.setCharacterEncoding(当前项目的编码集)

注意:

本身对请求实体进行编码,针对于post编码。如果需要对get同时一起编码,需要在配置端口号的地方添加useBodyEncodingForURI="true"。

 

响应对象:(HttpServletResponse)​​​​​​​

                响应行:包含协议版本,状态码,还有状态描述

                响应头:也是键值对的形式存在的

                响应实体:字符串或者是流信息

HttpServletResponse响应对象:

     设置响应头:
             response.setHeader(键,值)   忽略大小写

     设置刷新,refresh

      可以单独写秒数,代表的是多少秒后刷新本页面

      也可以写秒数;url="地址"  代表的是多少秒后刷新并跳转到指定地址

    设置响应的编码集:

        Response.setHeader("content-type","text/html;charset=服务器编码集")

    需要注意的是需要把这句话放在其他代码之上

    设置响应字体:

    输出字符串:

        Response.getWriter()    得到的是PrintWirter

    输出流信息:

         Response.getOutputStream(),返回的是ServletOutputStream,可以直接用OutputStream来接,剩下的就全是普通的流信息了

 

需要注意的是当用到form表单时,form表单的action后面如果跟了自己添加的参数,如果请求方式是get,表单的参数会将action添加的参数全部覆盖掉。

     解决方式:

          1)把get换成post。

           2)使用get的话,可以用隐藏域。

发布了35 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41331645/article/details/81186377