1、HttpServletRequest概述

  (1)我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response;

  (2)service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加强大。

2、request的运行流程

  

3、通过抓包工具抓取Http请求

  

4、通过request获得请求行

  (1)获得客户端的请求方式:String getMethod() ;

  (2)获得请求的资源:

String getRequestURI()
StringBuffer getRequestURL()
String getContextPath() ---web应用的名称
String getQueryString() ---- get提交url地址后的参数字符串
username=zhangsan&password=123

  (3)注意:request获得客户机(客户端)的一些信息;
    request.getRemoteAddr() --- 获得访问的客户端IP地址。

5、通过request获得请求头

long getDateHeader(String name)
String getHeader(String name)
Enumeration getHeaderNames()
Enumeration getHeaders(String name)
int getIntHeader(String name) referer头的作用:执行该此访问的的来源,做防盗链

6、通过request获得请求体

  (1)请求体中的内容是通过post提交的请求参数,格式是:

  

  (2)以上面参数为例,通过以下方法获得请求参数:

String getParameter(String name)
String[] getParameterValues(String name)
Enumeration getParameterNames()
Map<String,String[]> getParameterMap()

  (3)注意:get请求方式的请求参数,上述的方法一样可以获得;

  (4)解决post提交方式的乱码:request.setCharacterEncoding("UTF-8"); ;

  (5) 解决get提交的方式的乱码:parameter = new String(parameter.getbytes("iso8859-1"),"utf-8"); 。
7、request的其他功能

  (1)request是一个域对象;

    ①request对象也是一个存储数据的区域对象,所以也具有如下方法:

setAttribute(String name, Object o)
getAttribute(String name)
removeAttribute(String name)

    ②注意:request域的作用范围:一次请求中。

  (2)request完成请求转发

    ①获得请求转发器----path是转发的地址:RequestDispatcher getRequestDispatcher(String path) ;

    ②通过转发器对象转发:requestDispathcer.forward(ServletRequest request, ServletResponse response) 。

  (3)ServletContext域与Request域的生命周期比较?

  

  (4)转发(RequestDispatcher)与重定向(sendRedirect)的区别

    ①重定向两次请求,转发一次请求;

    ②重定向地址栏的地址变化,转发地址不变;

    ③重新定向可以访问外部网站,转发只能访问内部资源;

    ④转发的性能要优于重定向。

  

  (5)客户端地址与服务器端地址的写法

    ①客户端地址:是客户端去访问服务器的地址,服务器外部的地址,特点:写上web应用名称。直接输入地址:重定向;

    ②服务器端地址:服务器内部资源的跳转的地址,特点:不需要写web应用的名称。转发。

8、修改hosts文件

  修改C:\Windows\System32\drivers\etc下的hosts文件。

  

9、request的乱码问题解决

  

03011_HttpServletRequest的更多相关文章

随机推荐

  1. Kendo MVVM 数据绑定(四) Disabled/Enabled

    Kendo MVVM 数据绑定(四) Disabled/Enabled Disabled 和 Enabled 绑定可以根据 ViewModel 的某个属性值的 true,false 来设置 DOM 元 ...

  2. SQL基本语法备忘

    注:以下演示是在mysql命令行下的操作 数据库相关操作 create database mytest; --创建数据库 create database if not exists mytest; - ...

  3. java项目定时任务实现

    首先配置spring-context.xml文件 在xmlns 下加如下代码 xmlns:task="http://www.springframework.org/schema/task&q ...

  4. PADS 9.5封装向导 多一个管脚

    使用PADS 9.5封装向导(Decal Wizard)建立封装(Decals) 时遇到封装的中间多了一个管脚,如图红圈位置,通过一番搜寻,才知道这是热焊盘,不需要就在右边的红圈处去掉勾选热焊盘即可.

  5. LoadRunner创建脚本和场景流程

    1)脚本创建流程创建脚本->选择协议-设置录制选项-录制脚本-停止录制-优化脚本(去掉无用内容)-强化脚本(注释.代码结构调整.参数化.检查点.事物.关联)-调试脚本(观察日志) 2)场景设置的 ...

  6. HDU 4507 吉哥系列故事——恨7不成妻 (数位DP)

    题意: 如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关: 1.整数中某一位是7: 2.整数的每一位加起来的和是7的整数倍: 3.这个整数是7的整数倍: 给定一个区间[L,R],问在此区 ...

  7. ABAP的Package interface, 安卓的manifest.xml和Kubernetes的Capabilities

    ABAP 事务码SE21创建ABAP包接口.这是ABAP基于包层面的访问控制实现逻辑.包里可以存储很多ABAP对象.如果开发人员想将某些对象声明为包外程序也能访问,可以将这些对象放在包接口的Visib ...

  8. Cocos2d-x数据相关的类用法简介(附示例)

    (搬运自我在SegmentFault的博客) 在Cocos2d-x的学习和使用中,我遇到了很多关于数据的操作.在这个过程中,我学习了Cocos2d-x自带的很多功能.下面我把接触到的类罗列在下面,给出 ...

  9. [神经网络]一步一步使用Mobile-Net完成视觉识别(五)

    1.环境配置 2.数据集获取 3.训练集获取 4.训练 5.调用测试训练结果 6.代码讲解 本文是第五篇,讲解如何调用测试训练结果. 上一篇中我们输出了训练的模型,这一篇中我们通过调用训练好的模型来完 ...

  10. phpmyadmin设置不密码,不登录直接进入

    1.config.sample.inc.php改为config.inc.php 2.加入或更改代码: [php] $cfg['Servers'][$i]['auth_type'] = 'config' ...