jsp、http请求

http请求
1): 请求信息
        GET /day03/hello HTTP/1.1     (请求行)
        Host: localhost:8080          (请求头,可以有多个请求头,以名值对的形式)
        User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
        Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
        Accept-Encoding: gzip, deflate
        Connection: keep-alive
        Upgrade-Insecure-Requests: 1
                                       (这里会有一个空行)
        name=123&password=456          (实体内容,这里可以没有)


2): 请求行  GET /day03/hello HTTP/1.1 (请求方式 请求资源 协议版本)
        请求的方式
            请求方式有: GET,POST,HEAD,PUT,DELETE,CONNECT等
            常用的方式: GET,POST
            GET请求的特点
                1): (http://localhost:8080/day03/demo1?name=123&password=456)
                    在地址栏后边会跟上发送参数信息,参数前面跟着一个问号并且多个参数间以&来连接
                2): 如果直接访问,浏览器默认的请求方式也是GET请求
                3): GET请求进入的是servlet的doGet方法
                4): GET请求不适合提交敏感的数据 
                5): GET请求提交的数据大小有限制的 (大概1KB左右)
            POST请求的特点
                1): POST请求的参数不会跟在url的后边,而是存在请求的实体内容中(name=123&password=456)
                2): POST请求进入的是servlet的doPost方法
                3): POST请求相对于GET请求更安全些
                4): POST请求提交的数据大小没有限制
        请求资源
            统一资源标志符(URI)
                /day03/hello
                可以标记任何的资源 如本地资源,网络资源资源等
            统一资源定位符(URL)
                http://localhost:8080/day03/demo1       
                URL属于URI的一个特例,用来定位网络资源
                如果URL后边没有跟URI的话,则需要使用/来表示 ,(如:http://localhost:8080/),通常浏览器会默认加上
        协议版本
            HTTP/1.1 (意思是HTTP协议的版本是1.1)
            HTTP协议的版本有1.11.0, 两者区别是1.0版本只能发送一次请求然后会断开与服务器的链接
                                  1.1版本可以发送多次请求而不会断开链接
            ps: 现在基本上都使用1.1版本的HTTP协议


3): 请求头
    Header              示例                                 解释  
    Accept          Accept: text/plain, text/html   指定浏览器能够接收的内容类型
    Accept-Charset   Accept-Charset: iso-8859-5     浏览器可以接受的字符编码符
    Accept-Encoding  Accept-Encoding: compress, gzip 指定浏览器可以支持的压缩类型
    Accept-Language  Accept-Language: en,zh         指定浏览器可以接受的语言
    Connection       Connection: close          表示是否需要持久连接close或keep-alive
    Cookie           Cookie: $Version=1; Skin=new; 浏览器保存的Cookie
    Date             Date: Tue, 15 Nov 2010 08:12:31 GMT    请求的服务器的日期
    Host             Host: www.zcmhi.com                指定请求的服务器的域名和端口号
    If-Modified-Since If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT浏览器最后缓存时间
    Referer         Referer: http://www.zcmhi.com/archives/71.html  当前的请求来自哪里
    User-Agent      User-Agent: Mozilla/5.0 (Linux; X11)            浏览器在类型

4): 实体内容
        GET请求的请求参数信息会跟在URL的后边

5): 服务器怎么获取 浏览器发送过来的数据 
        tomcat会先拿到浏览器发送的数据,然后对数据解析封装成一个HttpServletRequest对象
        在调用doGet或者doPost方法时把HttpServletRequest对象传入进去

6): HttpServletRequest实现类对象的使用
        核心相关方法:
            请求行相关方法
                getMethod()     返回请求的HTTP方法的名称  如get和post
                getRequestURI() 获取请求的URI
                getRequestURL() 获取请求的URL
                getProtocol()   获取http版本信息
            请求头相关方法
                getHeader(String name)  获取指定请求头的信息
                getHeaderNames()        获取所以请求头的名称
            实体内容相关方法
                getParameter(String name) 获取指定参数的值 
                getParameterNames()       获取所有的参数名
                getParameterValues(String name) 获取指定参数的值,返回一个数组 (可用于checkbox这样的多选项)
                getParameterMap()         返回一个请求参数的map

7): 解决乱码问题(后台获取到前台参数值为乱码)
        a): 后台拿到post请求的参数时,会出现中文乱码 可以通过设置setCharacterEncoding()方法解决post请求参数乱码,需要写在获取之前
        b): get请求时,可以在server.xml配置文件里设置useBodyEncodingForURI="true"可以解决get请乱码问题 <Connector
            connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"
            useBodyEncodingForURI="true"/>
        c): 通用的解决方法,先对获取到的参数进行iso-8859-1编码,然后再解码成utf-8
            new String(参数值.getBytes("iso-8859-1"),"utf-8")

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值