重温Servlet学习笔记--request对象
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)
- 请求转发:request.getRequestDispatcher("/BServlet").forward(request,response); ---> 最常用
- 请求包含:request.getRequestDispatcher("/BServlet").include(request,response); --->不常用
那么这两者到底有什么区别呢?假设一个请求先指向了Aservlet,而Aservlet向浏览器输出了一行字"AServlet",然后请求转发到了BServlet,BServlet也向浏览器输出了一行字"BServlet",那么用户在浏览器只能看到"BServlet",而如果是Aservlet请求包含到BServlet,则用户在浏览器中能看到"AservletBservlet",也就是说请求转发不会包含当前servlet的响应体,而请求包含会包含当前页面的响应体,特别注意的是,无论是请求转发还是请求包含都在一个请求范围内,使用的是同一个request和response,而重定向使用了两个request和两个response,这是很大的区别.这里总结一下请求转发和重定向的区别:
- 请求转发是一个请求一次响应,而重定向是两次请求两次响应
- 请求转发地址栏不变化,而重定向会显示后一个请求的地址
- 请求转发只能转发到本项目其他Servlet,而重定向不只能重定向到本项目的其他Servlet,还能定向到其他项目
- 请求转发是服务器端行为,只需给出转发的Servlet路径,而重定向需要给出requestURI,即包含项目名!
- 请求转发和重定向效率是转发高!因为是一个请求!
- 需要地址栏发生变化,那么必须使用重定向!
- 需要在下一个Servlet中获取request域中的数据,必须要使用转发!
- request域(用来传值)
- void setAttribute(String name, Object value):
- Object getAttribute(String name)
重温Servlet学习笔记--request对象的更多相关文章
- 重温Servlet学习笔记--session对象
session的类型是属于HttpSession,HttpSession是由javaWeb提供的,用来会话跟踪的类.session是服务器端对象,保存在服务器端. HttpSession是servle ...
- 重温Servlet学习笔记--Cookie对象
首先要了解cookie必须得先了解http协议,,Cookie是http协议指定的,先由服务器保存cookie到浏览器,在下次浏览器请求服务器时把上次请求得到的cookie归还给服务器,cookie以 ...
- 重温Servlet学习笔记--response对象
在用户浏览网页时,服务器对于客户端浏览器做出的响应被封装成一个HttpServletResponse对象,要对浏览器操作只需要操作这个response对象即可.response的功能分类及介绍: 响应 ...
- 重温Servlet学习笔记--servletContext对象
一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对 ...
- 重温Servlet学习笔记--编码问题
在说编码问题之前,首先先了解一下常见的字符编码: ISO-8859-1: 拉丁编码,不支持中文 gbk,gb2312,gb18030:系统默认编码,是中国的国标码 utf-8: 支持几乎所有语言的编 ...
- Servlet学习笔记(四)
目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...
- Servlet学习笔记(三)
目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...
- Servlet学习笔记(二)
目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...
- # jsp及servlet学习笔记
目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...
随机推荐
- *HDU1847 博弈
Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- nodejs与v8引擎
Motivation JavaScript 是一款拥有「自动垃圾回收」功能的编程语言. 市面上具有这样功能的语言,一般都是拥有相对应的虚拟机的,像 Java的JVM ,C#的CLR ,PHP的Zend ...
- nodejs学习之events
在node里许多对象都发出事件:一个net.Server对象每次一个连接到来,都发出一个事件,一个fs.readStream对象在文件打开时放出一个事件.所有能放出事件的对象都是event.Event ...
- Dom的继承关系
Document对象: 是Html文档的根节点,拥有其他的节点(element nodes, text nodes, attribute nodes, and comment nodes),并提供了获 ...
- CYQ.Data V5 分布式缓存MemCached应用开发介绍
前言 今天大伙还在热议关于.NET Core的东西,我只想说一句:在.NET 跨平台叫了这么多年间,其实人们期待的是一个知名的跨平台案例,而不是一堆能跨平台的消息. 好,回头说说框架: 在框架完成数据 ...
- SQLSERVER语句 in和exists哪个效率高本人测试证明
SQLSERVR语句 in和exists哪个效率高本人测试证明 最近很多人讨论in和exists哪个效率高,今天就自己测试一下 我使用的是客户的数据库GPOSDB(已经有数据) 环境:SQLSERVE ...
- 企业IT管理员IE11升级指南【5】—— 不跟踪(DNT)例外
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- 大白话讲解Promise(二)理解Promise规范
上一篇我们讲解了ES6中Promise的用法,但是知道了用法还远远不够,作为一名专业的前端工程师,还必须通晓原理.所以,为了补全我们关于Promise的知识树,有必要理解Promise/A+规范,理解 ...
- Javascript本质第二篇:执行上下文
在上一篇文章<Javascript本质第一篇:核心概念>中,对Javascript执行上下文做了解释,但是这些都是基于Javascript标准中对执行上下文的定义,也就是说理论上的东西,本 ...
- 老司机学Xamarin系列总目录
Xamarin开发环境及开发框架初探 Xamarin Forms开发框架二探 (Prism vs MvvmCross) Xamarin Forms开发框架之MvvmCross插件精选 Xamarin开 ...