1. request对象和response对象的原理
    1. request和response对象是由服务器创建的。我们来使用它们
    2. request对象是来获取请求消息,response对象是来设置响应消息


2. request对象继承体系结构:    
    ServletRequest        --    接口
        |    继承
    HttpServletRequest    -- 接口
        |    实现
    org.apache.catalina.connector.RequestFacade 类(tomcat)



3. request功能:

1. 获取请求消息数据

 1. 获取请求行数据
            * GET /day14/demo1?name=zhangsan HTTP/1.1
            * 方法:
                1. 获取请求方式 :GET
                    * String getMethod()  
                2. (*)获取虚拟目录:/day14
                    * String getContextPath()
                3. 获取Servlet路径: /demo1
                    * String getServletPath()
                4. 获取get方式请求参数:name=zhangsan
                    * String getQueryString()
                5. (*)获取请求URI:/day14/demo1
                    * String getRequestURI():        /day14/demo1
                    * StringBuffer getRequestURL()  :http://localhost/day14/demo1

* URL:统一资源定位符 : http://localhost/day14/demo1    中华人民共和国
                    * URI:统一资源标识符 : /day14/demo1                    共和国
                
                6. 获取协议及版本:HTTP/1.1
                    * String getProtocol()

7. 获取客户机的IP地址:
                    * String getRemoteAddr()

package cn.itcast.web.request;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** 演示Request对象获取请求行数据*/@WebServlet("/requestDemo1")
public class RequestDemo1 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 获取请求方式 :GETString method = request.getMethod();System.out.println(method);//2.(*)获取虚拟目录:/day14String contextPath = request.getContextPath();System.out.println(contextPath);//3. 获取Servlet路径: /demo1String servletPath = request.getServletPath();System.out.println(servletPath);//4. 获取get方式请求参数:name=zhangsanString queryString = request.getQueryString();System.out.println(queryString);//5.(*)获取请求URI:/day14/demo1String requestURI = request.getRequestURI();StringBuffer requestURL = request.getRequestURL();System.out.println(requestURI);System.out.println(requestURL);//6. 获取协议及版本:HTTP/1.1String protocol = request.getProtocol();System.out.println(protocol);//7. 获取客户机的IP地址:String remoteAddr = request.getRemoteAddr();System.out.println(remoteAddr);}
}



2. 获取请求头数据
            * 方法:
                * (*)String getHeader(String name):通过请求头的名称获取请求头的值
                * Enumeration<String> getHeaderNames():获取所有的请求头名称

package cn.itcast.web.request;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;@WebServlet("/requestDemo2")
public class RequestDemo2 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//演示获取请求头数据//1.获取所有请求头名称Enumeration<String> headerNames = request.getHeaderNames();//2.遍历while(headerNames.hasMoreElements()){String name = headerNames.nextElement();//根据名称获取请求头的值String value = request.getHeader(name);System.out.println(name+"---"+value);}}
}



package cn.itcast.web.request;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;@WebServlet("/requestDemo3")
public class RequestDemo3 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//演示获取请求头数据:user-agentString agent = request.getHeader("user-agent");//判断agent的浏览器版本if(agent.contains("Chrome")){//谷歌System.out.println("谷歌来了...");}else if(agent.contains("Firefox")){//火狐System.out.println("火狐来了...");}}
}


package cn.itcast.web.request;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/requestDemo4")
public class RequestDemo4 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//演示获取请求头数据:refererString referer = request.getHeader("referer");System.out.println(referer);//http://localhost/day14/login.html//防盗链if(referer != null ){if(referer.contains("dym_day14")){//正常访问// System.out.println("播放电影....");response.setContentType("text/html;charset=utf-8");response.getWriter().write("播放电影....");}else{//盗链//System.out.println("想看电影吗?来优酷吧...");response.setContentType("text/html;charset=utf-8");response.getWriter().write("想看电影吗?来优酷吧...");}}}
}


3. 获取请求体数据:
            * 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
            * 步骤:
                1. 获取流对象
                    *  BufferedReader getReader():获取字符输入流,只能操作字符数据
                    *  ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数

2. 再从流对象中拿数据

regist.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>注册页面</title>
</head>
<body><form action="/dym_day14/requestDemo5" method="post"><input type="text" placeholder="请输入用户名" name="username"><br><input type="text" placeholder="请输入密码" name="password"><br><input type="submit" value="注册"></form></body>
</html>

RequestDemo5.java

package cn.itcast.web.request;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;@WebServlet("/requestDemo5")
public class RequestDemo5 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取请求消息体--请求参数//1.获取字符流BufferedReader br = request.getReader();//2.读取数据String line = null;while((line = br.readLine()) != null){System.out.println(line);}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}

Request —— 获取请求行数据 获取请求头数据 获取请求体数据相关推荐

  1. python xlrd获取excel行数_python xlrd 模块(获取Excel表中数据)

    一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 二.使用介绍 1.常用单元格中的数据类型 0 ...

  2. Nginx HTTP之请求行解析函数ngx_http_parse_request_line

    Nginx的HTTP模块中使用ngx_http_parse_request_line函数来对读取的请求行进行解析,HTTP请求行的格式不是很复杂,但是要注意HTTP 0.9与1.0.1.1之间的区别: ...

  3. 【DBMS 数据库管理系统】OLAP 核心技术 : 数据方体 ( 数据方体 | 数据方体格结构 | 数据单元 )

    文章目录 一.数据方体 二.数据方体 格结构 ( 参考 ) 三.数据单元 一.数据方体 数据方体 简介 : "数据方体" 概念 : 多维数据模型 构成的 多维数据空间 称为 &qu ...

  4. 3DSlicer4:模块管理(二)场景视图、体数据、体绘制

    1.场景视图模块(Scene View Module) 场景视图用于组织场景数据中多个"实时"视图.用户创建视图数量没有上限,仅需要对场景的参数进行控制. 3DSlicer的场景视 ...

  5. Request(请求继承体系,获取请求行,请求头,请求体和通用的获取请求数据和解决乱码问题)

    Request(请求继承体系,获取请求行,请求头,请求体和通用的获取请求数据和解决乱码问题) 1.Request(请求) Request继承体系 要想了解RequestFacade中都提供了哪些方法, ...

  6. Request_获取请求行数据_方法介绍

    request功能:     1. 获取请求消息数据         1. 获取请求行数据             * GET /day14/demo1?name=zhangsan HTTP/1.1 ...

  7. Servlet中获取请求行的数据

    package priv.lwx.javaex.servlet_demo.web.servlet.request; /*** 获取请求行的数据** @author liaowenxiong* @dat ...

  8. Promise相关内容(三)——异步获取服务器数据:promise方式解决回调地狱的问题。通过多个.then使代码可读性更高 实现异步任务的串行执行,保证按顺序发送请求获取数据

    Promise相关内容(三)--异步获取服务器数据:promise方式解决回调地狱的问题.通过多个.then使代码可读性更高 & 实现异步任务的串行执行,保证按顺序发送请求获取数据 第一种形式 ...

  9. 获取Http协议的请求行,请求头

    效果如下图: 源代码如下: package star.july;import java.io.IOException; import java.io.PrintWriter; import java. ...

最新文章

  1. Android中文API (110) —— CursorTreeAdapter
  2. 数据结构:栈实现逆波兰计算器
  3. Webserver内存溢出分析
  4. java filefilter用法_JFileChooser.JFileFilter用法
  5. 《学习OpenCV》课后习题解答(第三章)(仅供参考)
  6. SSM框架笔记11:Spring常用配置与高级话题
  7. 请律师到底有什么用?
  8. python下载包没用_Python下载各种功能包出问题
  9. .net中实现文件下载的几种方法(收藏)
  10. 【GIS导论】实验二 数据采集
  11. 智慧消防技术在安全管理中的应用
  12. 使用Arcmap创建企业级地理数据库失败,无法连接到数据库
  13. 层次分析法(AHP)——算数平均值法、几何平均值法、特征值法(Python实现,超详细注释)
  14. 【智能制造】请拿走这份精益培训PPT,不谢!
  15. 99.9%解决谷歌商店(Google Play)下载应用卡在等待中问题
  16. 无法打开此修补程序包,请确认该修补程序包存在并且可以访问它以检查这个修补程序包是有效的
  17. 游戏原画教程:角色设计中的几个基本图形的用法
  18. python 转换图片大小,并保存
  19. Keepalived+Haproxy+Mysql(双主)高可用架构部署
  20. mysql重启后自动关闭_mysql服务自动关闭的解决

热门文章

  1. python 爬虫 使用requests设置代理
  2. Python中的多线程编程
  3. 针对Chrome的css的hack写法
  4. Android4.2.2源码目录结构分析
  5. sql server 配置管理器里为什么是32位_死磕 Nginx 系列:Nginx 限流配置
  6. Control.BeginInvoke 和 Delegate.BeginInvoke 备忘
  7. centos 修改ssh默认端口号
  8. 大家都在晒的支付宝3分钱付款截图,让千万人有了“半毛钱”关系
  9. SpringBoot使用RabbitMQ消息队列
  10. 2-Tenor AF AFT400-实战-Lync Server 2010-集成-2012-01-19