request和response是一对搭档,一个负责请求一个负责响应,都是Servlet.service()方法的参数,response的知识点前面梳理过了,这里只说一下request,在客户端发出每个请求时,服务器都会创建一个request对象,把请求的数据封装到request中,然后在调用Servlet.service()中传递进去.我们在创建一个servlet时通常会使用doGet或者doPost方法,并没有看到service()方法,就是因为父类的service方法已经读取到了request中的请求方式,然后根据请求方式再决定调用你重写的doGet方法还是doPost方法.

  • 一些常见方法:

    • getRemoteAddr()  :获取远程IP地址
    • getMethod():     获取请求方式,GET 或者 POST
    • getHeader(String name) :   获取请求头,例如getHeader("User-Agent"),就可以通过User_agent识别用户操作系统和浏览器信息

这里给出一个url:http://localhost:8080/myPro/AServlet?name="zhangSan"

    • String getScheme():获取协议,http
    • String getServerName():获取服务器名,localhost
    • String getServerPort():获取服务器端口,8080
    • String getContextPath():获取项目名,myPro
    • String getServletPath():获取Servlet路径,/AServlet
    • String getQueryString():获取参数部分,即问号后面的部分。name="zhangSan"
    • String getRequestURI():获取请求URI,等于项目名+Servlet路径。/myPro/AServlet
    • String getRequestURL():获取请求URL,等于不包含参数的整个请求路径。http://localhost:8080/myPro/AServlet
  • 获取请求参数
    • String  getParameter(String name):获取指定名称的请求参数值,适用于单值请求
    • String[] getParameterValues(String name):获取指定名称的请求参数值,适用于多值请求
    • Enumeration<String> getParameterNames():获取所有请求参数名称,可以通过遍历名称获取到每个名称对应的参数值
  • 请求转发和请求包含(在一个请求链中包含多个servlet)
    1. 请求转发:request.getRequestDispatcher("/BServlet").forward(request,response); ---> 最常用
    2. 请求包含:request.getRequestDispatcher("/BServlet").include(request,response);  --->不常用

    那么这两者到底有什么区别呢?假设一个请求先指向了Aservlet,而Aservlet向浏览器输出了一行字"AServlet",然后请求转发到了BServlet,BServlet也向浏览器输出了一行字"BServlet",那么用户在浏览器只能看到"BServlet",而如果是Aservlet请求包含到BServlet,则用户在浏览器中能看到"AservletBservlet",也就是说请求转发不会包含当前servlet的响应体,而请求包含会包含当前页面的响应体,特别注意的是,无论是请求转发还是请求包含都在一个请求范围内,使用的是同一个request和response,而重定向使用了两个request和两个response,这是很大的区别.这里总结一下请求转发和重定向的区别:

  1.  请求转发是一个请求一次响应,而重定向是两次请求两次响应
  2.  请求转发地址栏不变化,而重定向会显示后一个请求的地址
  3.  请求转发只能转发到本项目其他Servlet,而重定向不只能重定向到本项目的其他Servlet,还能定向到其他项目
  4.  请求转发是服务器端行为,只需给出转发的Servlet路径,而重定向需要给出requestURI,即包含项目名!
  5.  请求转发和重定向效率是转发高!因为是一个请求!
  6.  需要地址栏发生变化,那么必须使用重定向!
  7.  需要在下一个Servlet中获取request域中的数据,必须要使用转发!
  • request域(用来传值)
    1.    void setAttribute(String name, Object value):
    2.    Object getAttribute(String name)

重温Servlet学习笔记--request对象的更多相关文章

  1. 重温Servlet学习笔记--session对象

    session的类型是属于HttpSession,HttpSession是由javaWeb提供的,用来会话跟踪的类.session是服务器端对象,保存在服务器端. HttpSession是servle ...

  2. 重温Servlet学习笔记--Cookie对象

    首先要了解cookie必须得先了解http协议,,Cookie是http协议指定的,先由服务器保存cookie到浏览器,在下次浏览器请求服务器时把上次请求得到的cookie归还给服务器,cookie以 ...

  3. 重温Servlet学习笔记--response对象

    在用户浏览网页时,服务器对于客户端浏览器做出的响应被封装成一个HttpServletResponse对象,要对浏览器操作只需要操作这个response对象即可.response的功能分类及介绍: 响应 ...

  4. 重温Servlet学习笔记--servletContext对象

    一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对 ...

  5. 重温Servlet学习笔记--编码问题

    在说编码问题之前,首先先了解一下常见的字符编码: ISO-8859-1:  拉丁编码,不支持中文 gbk,gb2312,gb18030:系统默认编码,是中国的国标码 utf-8: 支持几乎所有语言的编 ...

  6. Servlet学习笔记(四)

    目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...

  7. Servlet学习笔记(三)

    目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...

  8. Servlet学习笔记(二)

    目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...

  9. # jsp及servlet学习笔记

    目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...

随机推荐

  1. Apache服务器在80端口配置多域名虚拟主机的方法

    我们在配置一台服务器的时候,如果只运行一个站点,往往过于浪费资源.Nginx和Apache都可以通过配置虚拟主机实现多站点.配置虚拟主机的方式主要有两种,一种是多个不同端口对应的多个虚拟主机站点,一种 ...

  2. JS 判断字串字节数,并截取长度

    var matchWords;         function notifyTextLength() {             var inputNum = document.getElement ...

  3. 温故而知新 css + html 超级牛逼的居中策略

    该方法甚至可以解决img内容居中的问题 套路:最外层div宽度为居中内容所占的宽度(通常是1170px),并且使其居中(margin:auto) 里层的div宽度为全屏(通常是1920px;)再mar ...

  4. 培训SQLServer 嵌套事务PPT分享

    培训SQLServer 嵌套事务PPT分享 下载地址 http://files.cnblogs.com/files/lyhabc/SQLServer%E5%B5%8C%E5%A5%97%E4%BA%8 ...

  5. 事务使用中如何避免误用分布式事务(System.Transactions.TransactionScope)

    1:本地事务DbTransaction和分布式事务TransactionScope的区别: 1.1:System.Data.Common.DbTransaction: 本地事务:这个没什么好说了,就是 ...

  6. 梦想还需有,因它必实现——发现最新版iOS漏洞,OverSky团队专访

    梦想还需有,因它必实现——发现最新版iOS漏洞,OverSky团队专访    “成功了!”,随着一句欢呼声在阿里巴巴西溪园区传出,Cydia的图标出现在一部iOS9.3.4的iPhone6上并成功运行 ...

  7. 浅谈Android应用保护(零):出发点和背景

    近几年来,无线平台特别是Android平台的安全逐渐成为各厂商关注的重点.各种新的思路和玩法层出不穷.所以,笔者基于前一段时间的学习和整理,写了这系列关于Android应用安全和保护的文章. 这5篇文 ...

  8. 认真分析mmap:是什么 为什么 怎么用

    mmap基础概念 mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系.实现这样的映射关系后,进程就可以采用指 ...

  9. 初识ASP.NET Core 1.0

    本文将对微软下一代ASP.NET框架做个概括性介绍,方便大家进一步熟悉该框架. 在介绍ASP.NET Core 1.0之前有必要澄清一些产品名称及版本号.ASP.NET Core1.0是微软下一代AS ...

  10. Web3DGame之路,Babylonjs 和TypeScript学习笔记(二)

    先来认识一下Babylonjs,由于基于webgl来开发,所以先介绍一下基础知识. Webgl是一个html标准,他要在canvas元素上初始化. Html页面上的准备 所以我们先从html页面开始看 ...