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的更多相关文章
随机推荐
- Myeclipse连接数据库删除数据库(JDBC)
package com.test.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Pr ...
- jQuery toggle 使用
jQuery 中 toggle 作用 切换元素的显示与隐藏状态 如果被选元素可见,则隐藏这些元素,如果被选元素隐藏,则显示这些元素. <body> <div class=" ...
- Brackets安装angularjs插件
Brackets是Adobe公司研发的一款开源WEB前端开发框架,界面清爽简约,代码提示功能比较强大,而且支持第三方插件,其提供的插件库中有大量的对Brackets感兴趣的开发人员所开发的插件,使用者 ...
- Vmware Player 比较
.wiz-todo, .wiz-todo-img {width: 16px; height: 16px; cursor: default; padding: 0 10px 0 2px; vertica ...
- c#在不安装Oracle客户端的情况下与服务器上的Oracle数据库交互
概述: C#通过使用ADO的方式在未安装Oracle数据库的前提下,客户端程序远程访问服务器,会出现:“System.Data.OracleClient 需要 Oracle 客户端软件 8. ...
- vue2.X版本vue-cli生成项目后运行失败,报错信息为getaddrinfo ENOTFOUND localhost
问题: 1.使用vue-cli生成项目 2.npm install 3.npm run dev,报错信息如下 解决方法: 经查,发现package.json中dev的脚本变成了"webpac ...
- ceisum_加载倾斜摄影模型
osgb转换为3Dtiles格式(使用工具转换) 然后加载到cesium中(加载代码见下,可以控制模型高度) var offset = function(height,tileset) { conso ...
- UVA 1599, POJ 3092 Ideal Path 理想路径 (逆向BFS跑层次图)
大体思路是从终点反向做一次BFS得到一个层次图,然后从起点开始依次向更小的层跑,跑的时候选则字典序最小的,由于可能有多个满足条件的点,所以要把这层满足条件的点保存起来,在跑下一层.跑完一层就会得到这层 ...
- IO流_File类
流(stream):流是一连串流动的数据(字节.字符),以先进先出的方式发送的信息的通道中. 输入流 数据从源数据源流入程序的过程称为输入流.可以理解为从源数据源读取数据到程序的过程 ...
- mysql5.7.24 解压版安装步骤以及遇到的问题
1.下载 https://dev.mysql.com/downloads/mysql/ 2.解压到固定位置,如D:\MySQL\mysql-5.7.24 3.添加my.ini文件 跟bin同级 [my ...