03011_HttpServletRequest
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.获取text文本框输入的信息 wxml代码 <view class="weui-cells"> <view class="weui-cell weu ...
- 3.Freshman阶段学习内容的确定
我刷知乎.在知乎上答题的程序员,不是很牛逼就是更牛逼,说起各种系统.各种系统的各种版本.各种语言.数据库.算法.IT届的各种圣战都有板有眼.信手拈来.头头是道,不得不服.这导致了一些非常严重的问题:我 ...
- mysql(数据库,sql语句,普通查询)
第1章 数据库 1.1 数据库概述 l 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. l 什 ...
- PC端和手机端页面的一丢丢区别
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- Ionic 2 中的创建一个闪视卡片组件
闪视卡片是记忆信息的重要工具,它的使用可以追溯到19世纪.我们将要创建一个很酷的短暂动画来实现它.看起来像是这个样子的: 闪视卡片示例 Ionic 2 实例开发 新增章节将为你介绍如何在Ionic 2 ...
- MVC与Holla聊天工具
MVC 是一种设计模式, 它将应用划分为 3 个部分 : 数据( 模型). 展现层( 视图) 和用 户交互层( 控制器). 换句话说, 一个事件的发生是这样的过程 : 1. 用户和应用产生交互. 2. ...
- sshd_config配置注释
# $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $ # This is the sshd server system-wide c ...
- sql优化实战:从1353秒到135秒(删除索引+修改数据+重建索引)
最近在优化日结存储过程,日结存储过程中大概包含了20多个存储过程. 发现其有一个存储过程代码有问题,进一步发现结存的数据中有一个 日期字段business_date 是有问题的,这个字段对应的类型是v ...
- 不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
Jerry和SAP成都研究院一些新同事聊天时,谈到ABAP和SAP GUI这个话题.很多新同事在加入SAP成都之前,是做Java和C++开发的,习惯了Eclipse/IntelliJ IDEA/Vis ...
- 【Orange Pi Lite2】 ——1《如何开始使用开源硬件》
[Orange Pi Lite2] --1<如何开始使用开源硬件> 本文只在博客园发布 在开始前你需要准备的材料与软件 用户手册_Orange Pi Lite2 OrangePi_Lite ...