1.概念

<1>请求:请求:获取资源。在BS架构中,就是客户端浏览器向服务器端发出询问。
<2>请求对象:就是在项目当中用于发送请求的对象。
<3>对象创建:需要实现ServletRequest和HttpservletRequest接口,不过在tomcat底层已经帮我们创建好了请求对象。

关系视图如下:

2.Request获取路径的相关方法

注:浏览器返回【本机地址】ipv6和ipv4的地址是本地host文件控制

//Request获取路径的相关方法
@WebServlet("/ServletDemo1")
public class ServletDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.获取虚拟目录名称getContextPath()String contextPath = req.getContextPath();System.out.println(contextPath);//2.获取Servlet映射路径getServletPath()String servletPath = req.getServletPath();System.out.println(servletPath);//3.获取访问者ip getRemoteAddr()String remoteAddr = req.getRemoteAddr();//http://127.0.0.1:8080    //127.0.0.1//http://localhost:8080[和host文件的配置有关] //0:0:0:0:0:0:0:1System.out.println(remoteAddr);//4.获取请求消息的数据getQueryString()//?username=zhangsan&password=123456String queryString = req.getQueryString();System.out.println(queryString);//5.获取统一资源标识符 getRequestURI()String requestURI = req.getRequestURI();System.out.println(requestURI);//URL更精确,表示范围比URI小//6.获取统一资源定位符 getRequestURL()StringBuffer requestURL = req.getRequestURL();System.out.println(requestURL);//浏览器访问http://127.0.0.1:8080/ServletRequest/ServletDemo1?username=zhangsan&password=123456}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果:
-----------------------------------------------------------------------
/ServletRequest
/ServletDemo1
127.0.0.1
null
/ServletRequest/ServletDemo1
http://127.0.0.1:8080/ServletRequest/ServletDemo1
3.Request获取请求头内信息的相关方法
//Request获取请求头内信息的相关方法
@WebServlet("/ServletDemo2")
public class ServletDemo2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//请求头名称[可以有多个值]不区分大小写//1.getHeader("请求头名称")根据请求头名称获取值String connection = req.getHeader("Connection");System.out.println(connection);System.out.println("------------------------");//返回类型和前面不同,返回为集合//2.getHeader("请求头名称")根据请求头名称[有多个值]获取多个值String AcceptEncoding = req.getHeader("Accept-Encoding");System.out.println(AcceptEncoding);System.out.println("------------------------");//3.getHeaderNames获取所有的请求头名称Enumeration<String> headerNames = req.getHeaderNames();while (headerNames.hasMoreElements()) {String headerName = headerNames.nextElement();String value = req.getHeader("s");System.out.println(headerName + "..." + value);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果:
----------------------------------------------------------------------
keep-alive
------------------------
gzip, deflate
------------------------
host...null
user-agent...null
accept...null
accept-language...null
accept-encoding...null
connection...null
cookie...null
upgrade-insecure-requests...null
sec-fetch-dest...null
sec-fetch-mode...null
sec-fetch-site...null
sec-fetch-user...null
4.获取请求参数相关信息的方法

表单属性为【form action="/ServletRequest/ServletDemo3" method=“post” autocomplete=“off”】

@WebServlet("/ServletDemo3")
public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.getParameter()根据名称获取数据String value = req.getParameter("name");System.out.println(value);System.out.println("-------------------------");//2.getParameterValues()根据名称获取所有数据String[] hobbies = req.getParameterValues("hobby");System.out.println(Arrays.toString(hobbies));/*for (String hobby : hobbies) {System.out.println(hobby);}*/System.out.println("-------------------------");//3.getParameterNames()获取所有名称Enumeration<String> parameterNames = req.getParameterNames();while (parameterNames.hasMoreElements()){String s = parameterNames.nextElement();System.out.println(s);}System.out.println("-------------------------");//4.getParameterMap()获取所有参数的键值对,存入Map集合Map<String, String[]> parameterMap = req.getParameterMap();Set<String> keys = parameterMap.keySet();for (String key : keys) {String[] values = parameterMap.get(key);System.out.println(key + Arrays.toString(values));}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果:
----------------------------------------------------------------------
zhangsan
-------------------------
[study, game, book]
-------------------------
name
password
hobby
-------------------------
name[zhangsan]
password[123456]
hobby[study, game, book
5.通过流对象获取数据

【请求方法必须是post方式】
表单属性为【form action="/ServletRequest/ServletDemo7" method=“post” autocomplete=“off”】

//通过流对象获取数据[请求方法必须是post方式]
//不是自己new的都不需要释放资源
@WebServlet("/ServletDemo7")
public class ServletDemo7 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//字符流/*BufferedReader br = req.getReader();String line = br.readLine();while (line != null) {System.out.println(line);line = br.readLine();}*///字节流[应用场景,上传文件]ServletInputStream sis = req.getInputStream();byte[] bytes = new byte[1024];int len = sis.read(bytes);while (len!=-1){System.out.println(new String(bytes,0,len));len = sis.read(bytes);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果:
---------------------------------------------------------------------
name=%E6%9D%8E%E5%9B%9B&password=123&hobby=game
6.请求转发

表单属性为【form action="/ServletRequest/ServletDemo9" method=“post” autocomplete=“off”】

//ServletDemo9
@WebServlet("/ServletDemo9")
public class ServletDemo9 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置请求字符编码,防止乱码req.setCharacterEncoding("utf-8");//设置共享数据setAttribute(键,值)System.out.println("ServletDemo9设置共享数据");req.setAttribute("name","zhangsan");//getRequestDispatcher()获取请求调度对象[中介]RequestDispatcher rd = req.getRequestDispatcher("/ServletDemo10");//实现转发功能[参数为请求对象和相应对象]rd.forward(req,resp);//所以ServletDemo9中接收的请求参数也会传递到10中}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}//ServletDemo10
@WebServlet("/ServletDemo10")
public class ServletDemo10 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置请求字符编码,防止乱码req.setCharacterEncoding("utf-8");//获取共享数据System.out.println("ServletDemo10获取共享数据");Object name = req.getAttribute("name");System.out.println(name);System.out.println("获取ServletDemo7的请求参数");System.out.println(req.getParameter("name"));}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果:
----------------------------------------------------------------------
ServletDemo9设置共享数据
ServletDemo10获取共享数据
zhangsan
获取ServletDemo7的请求参数
王五

请求对象Request相关推荐

  1. Request To JavaBean(请求对象转换为JavaBean对象)

    背景:  经常要从request等对象取出值来赋入bean中,如果不用MVC框架的绑定功能的话,麻烦   一 参考资料  1 http://jc-dreaming.iteye.com/blog/563 ...

  2. $.post把表单对象传递过去_第二章 第三节 Request请求对象详解

    Request对象和Response对象是必须熟悉的. Request对象负责请求的构造和处理 Response对象负责返回资源的解析和处理 一.Request对象参数 Request(url[, c ...

  3. Servlet的学习之Request请求对象(2)

    在上一篇<Servlet的学习(十)>中介绍了HttpServletRequest请求对象的一些常用方法,而从这篇起开始介绍和学习HttpServletRequest的常用功能. 使用Ht ...

  4. Flask框架——请求钩子与request请求对象

    目录 请求钩子 request对象 请求钩子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接 在请求开始时,根据需求进行权限校验 在请求结束时,指定 ...

  5. php request对象,PHP 中TP5 Request 请求对象的实例详解

    PHP 中TP5 Request 请求对象 public/index.php app\index\controller\Index.php <?php namespace app\index\c ...

  6. Servlet的学习之Request请求对象(3)

    本篇接上一篇,将Servlet中的HttpServletRequest对象获取RequestDispatcher对象后能进行的[转发]forward功能和[包含]include功能介绍完. 首先来看R ...

  7. Python Flask Web 第八课 —— request 请求对象

    from flask import request 请求对象包含客户端发出的所有请求信息. 1. request.headers request.headers.get('User-Agent') 获 ...

  8. Request(HTTP请求对象)的笔记和底层原理

    Request笔记以及底层原理 1.HTTP协议 2.学会识别请求 3.Request请求对象 4.Request是域对象 5.使用域对象进行数据传递(请求转发) 6.Request底层原理图 1.H ...

  9. javaweb:request请求对象(5)

    1.请求和响应的概述: 什么请求:在浏览器地址栏输入地址,点击回车请求服务器,这个过程就是一个请求过程. 什么响应:服务器根据浏览器发送的请求,返回数据到浏览器在网页上进行显示,这个过程就称之为响应. ...

最新文章

  1. python面向对象的优点_Python面向对象编程——总结面向对象的优点
  2. 系统设计与架构笔记:ETL工具开发和设计的建议
  3. JS难点剖析-原型原型链
  4. Extjs4 radiogroup打开时的被选中值设置为变量
  5. BTrace简介及使用
  6. python独立log示例_带有Python示例的math.log1p()方法
  7. JEECG Excel 实体类
  8. 0、1、2范数与损失函数正则化
  9. 浅谈line-height
  10. c语言求字符串转换成双精度_C语言实现把字符串中的数字转换成整数
  11. 安徽大学计算机基础知识答案,安徽大学大学计算机基础选择题
  12. 天津大学计算机学院李晨曦,【奋斗·青春】最美的不是牵手,而是携手一起读研——访保研至天津大学的情侣学霸许贤哲与李晨曦...
  13. 五行代码搞定微信授权登录
  14. Android第三方推送到达率调研
  15. php 实现店铺装修5
  16. 配置mysql数据库端口号_数据库配置时要注意端口号
  17. 【544. 安迪的第一个字典】
  18. PHP 版 微信小程序商城 源码和搭建
  19. 面经1.小米前端实习
  20. 秒表计时器——Java基础练手项目(Java课程设计)

热门文章

  1. 牛客题霸 [滑动窗口的最大值] C++题解/答案
  2. 牛客OI周赛15-普及组
  3. [学习笔记] 乱世之神杀疯了 —— K-D tree
  4. 数论五之容斥——硬币购物,Gerald and Giant Chess,幸运数字,Sky Full of Stars,已经没有什么好害怕的了
  5. 洛谷P7515:矩阵游戏(差分约束)
  6. 洛谷P3357:最长k可重线段集问题(网络流)
  7. 【整体二分】区间第k小(金牌导航 整体二分-1)
  8. 【结论】游戏(jzoj 1984)
  9. MySQL主从数据库配置和常见问题
  10. JAVA面试常考系列三