重温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 ...
随机推荐
- Smart3D系列教程6之 《案例实战演练3——倾斜数据正射影像及DSM的生产》
一.前言 Wish3D出品的系列教程中,前面两讲分别讲述说明了小物件的照片三维重建.大区域地形的三维重建,从照片的直接导入至软件到通过Excel表格将区块导入处理,从不同的模型类别.不同的导入方式演示 ...
- 使用--gc-section编译选项减小程序体积
本周在给程序添加功能的时候,突然发现,我只是写了几个函数,还没调用,size就变大了.这肯定是不行的嘛,没用的函数就应该不链接进来,占用我宝贵的空间. 这种功能,讲道理编译器肯定要支持的,于是搜了一下 ...
- myeclipse连接数据库sql server
1.打开数据库Microsoft sql server2008,输入以下命令: 此时可是看到端口号为1619,记住此端口号,等会儿会用到. 2.打开myeclipse2014,找到最上方的myecli ...
- C# Just want 入门
1. 终于明白为什么以前的程序在结尾部分会经常出现 input any key to exit! using System; namespace ConsoleApplication1 { class ...
- 用jdbc访问大段文本数据
package it.cast.jdbc; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F ...
- Microsoft dotnetConf 2015 一些整理
dotnetConf 2015 直播计划: 第一天 (10 个主讲) - .NET Product Teams 主讲人为 .NET 产品开发团队,.NET 产品主要包含 .NET Core.ASP.N ...
- sqlalchemy(一)基本操作
sqlalchemy(一)基本操作 sqlalchemy采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型. 安装 需要安装MySQLdb pip install ...
- GUI - GEB UI库
最近基于Winform开发了几款产品,感觉Winform有很大的局限性,其最主要的一点在于:控件是基于Windows窗体的,这就导致每个控件都是重量级控件,对复杂的界面来说,其性能和表现力都欠佳.在实 ...
- JavaScript算法(冒泡排序、选择排序与插入排序)
冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看 ...
- WaitType:ASYNC_IO_COMPLETION
项目组有一个数据库备份的Job运行异常,该Job将备份数据存储到remote server上,平时5个小时就能完成的备份操作,现在运行19个小时还没有完成,backup命令的Wait type是 AS ...