HttpServletRequest初识

介绍
1.HttpServletRequest接口来自servlet规范,存在于tomcat的servlet-api.jar
2.由tomcat负责提供
作用
1.读取http请求协议包中请求行、请求头、请求体信息
2.可以代替浏览器向http服务器申请资源调用

请求行:请求方法,请求URL
在这里插入图片描述

请求头
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:主机地址
在这里插入图片描述

如果是post请求有请求体,get没有,把请求参数放在请求头中
post方法中,会把数据以key value形式发送请求
在这里插入图片描述

生命周期:
诞生: 服务器端接收到请求的时候,创建。
销毁: service方法执行完毕,也就是响应结束, 对象销毁。

api 调用

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //方法
        String method = req.getMethod();
        //url
        String url = req.getRequestURL().toString();
        //url除去请求地址前的内容
        String uri = req.getRequestURI();

        //获取所有的请求内容
        Enumeration<String> parameterNames = req.getParameterNames();
        while (parameterNames.hasMoreElements()) {
            //key
            String paramName = parameterNames.nextElement();
            System.out.println(paramName);
            //value
            String paramValue = req.getParameter(paramName);
            System.out.println(paramValue);
        }
    }

问题描述:
以get方式发送中文参数内容,得到正常结果
以post方式发送中文参数内容,得到是乱码
原因:

浏览器已get方式发送请求,请求参数保存在请求头中,http请求协议包达到http服务器之后,第一件事就是解码
请求头二进制内容是由tomcat负责解码,tomcat9.0默认使用utf-8字符集
浏览器已post方式发送请求,请求参数保存在请求体,在http请求协议包达到http服务之后,第一件事就是解码
请求体二进制内容由当前请求对象request负责解码,request默认使用iso-8859-1字符集,一个东欧语系字符集,所以乱码
解决方案
req.setCharacterEncoding(“utf-8”);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值