重温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 ...
随机推荐
- iOS 按钮上的标题设置向左向右对齐的方法
Button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;//左对齐(UIControlContentHo ...
- SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数
SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 先来创建一个测试表 USE [tempdb] GO )) GO INSERT INTO [#te ...
- Lesson 2 Breakfast or lunch?
Text It was Sunday. I never get up early on Sundays. I sometimes stay in bed until lunchtime. Last S ...
- IE10,11下_doPostBack未定义错误的解决方法
出现的原因 .NET2.0和.NET4.0一起发布的浏览器定义文件中有一个错误,它们保存相当一部分浏览器版本的定义.但是浏览器的有些版本(比如IE10,11)则不再在这个范围之内.因此,ASP.NET ...
- ASP.NET MVC学前篇之扩展方法、链式编程
ASP.NET MVC学前篇之扩展方法.链式编程 前言 目的没有别的,就是介绍几点在ASP.NETMVC 用到C#语言特性,还有一些其他琐碎的知识点,强行的划分一个范围的话,只能说都跟MVC有关,有的 ...
- CVTE实习求职经历
今天,听到有好多同学最近要去面试CVTE这家企业,于是呢,准备将自己的经历写上来,给大家一个参考,希望能够大家一次帮助. 一.整体感觉 首先呢,先讲一下我个人对这家企业的整体感觉吧. 1. 第一次 对 ...
- C#+OpenGL+FreeType显示3D文字(3) - 用PointSprite绘制文字
C#+OpenGL+FreeType显示3D文字(3) - 用PointSprite绘制文字 上一篇实现了把文字绘制到OpenGL窗口,但实质上只是把含有文字的贴图贴到矩形模型上.本篇我们介绍用Poi ...
- [ASP.NET MVC 小牛之路]01 - 理解MVC模式
本人博客已转移至:http://www.exblr.com/liam PS:MVC出来很久了,工作上一直没机会用.出于兴趣,工作之余我将展开对MVC的深入学习,通过博文来记录所学所得,并希望能得到各 ...
- Lucene系列-FieldCache
域缓存,加载所有文档中某个特定域的值到内存,便于随机存取该域值. 用途及使用场景 当用户需要访问各文档中某个域的值时,IndexSearcher.doc(docId)获得Document的所有域值,但 ...
- Java 8函数编程轻松入门(二)Stream的使用
在C#中,微软基于IEnumerable接口,提供许多便捷的扩展方法,便于实际的开发.在Java 1.8中,Collection接口新增了default stream方法.我们可以针对java集合,在 ...