JAVA SERVLET专题(下)
HTTP简介
·WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵守一定的规则,这个规则就是HTTP协议。
·HTTP是hypertext transfer protocol(超文本传输协议)的简写,他是TCP/IP协议集中的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式。
·HTTP协议的版本HTTP/1.0、HTTP/1.1、HTTP-NG
HTTP的会话方式
·四个步骤:

浏览器与WEB服务器的链接过程是短暂,每次连接只处理 一个请求和响应。对每一个页面的访问,浏览器与WEB服务器都要建立一个单独的连接。
浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对。
HTTP请求消息
请求信息的结构:
一个请求行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
·举例:

HTTP响应消息
一个状态行、若干消息头、以及实体内容,其中的一些消息和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
·举例:

HTTP消息--其他细节
·响应消息的实体内容就是网页文件的内容,也就是在浏览器中使用查看源文件的方式所看到的内容。
·一个使用GET方式的请求消息中不能包含实体内容,只有使用POST、PUT和DELETE方式的请求消息中才可以包含实体内容。
使用GET和POST方式传递参数
·在URL地址后面可以附加一些参数
·GET方式
举例:http://www.it315.org/servlet/ParamsServlet?param1=abc¶m2=xyz
特点:传送的数据量是有限的,一般限制在1KB以下。
·POST方式
举例:
POST /servlet/ParamsServlet HTTP/1.1
Host:
Content-Type: application/x-www-form-urlencoded
Content-Length: 28
param1=abc¶m2=xyz
特点:传送的数据量要比GET方式传送的数据量大得多。
使用GET方式传递参数
·在浏览器地址栏中输入某个URL地址或单击网页上的一个超链接时,浏览器发出的HTTP请求消息的请求方式为GET
·如果网页中的<form>表单元素的method属性被设置为了“GET”,浏览器提交这个FORM表单时生成的HTTP请求消息的请求方式也为GET。
·使用GET请求方式给WEB服务器传递参数的格式:
http://URL地址?name=lc&password=123
·使用GET方式传送的数据量一般限制在1kb以下。
使用POST方式传递参数
·POST请求方式主要用于向WEB服务器端程序提交FORM表单中的数据。
·POST方式将各个表单字段元素及其数据作为HTTP消息的实体内容发送给WEB服务器,传送的数据量要比使用GET方式传送的数据量大得多。
POST请求消息的格式:
POST /counter.jsp HTTP/1.1
referer: http://localhost:8080/Register.html
content-type: application/x-www-form-urlencoded
host: localhost:8080
content-length: 43
name=zhangsan&password=123
HttpServletRequest简介
·Servlet API中定义的ServletRequest接口类用于封装请求信息。
·HttpServletRequest是专用于HTTP协议的ServletRequest子接口,它用于封装HTTP请求消息。
·在service()方法内部调用HttpServletRequest对象的各种方法来获取请求消息。
获取请求行的相关信息
·HTTP请求消息的请求行包括请求方式、资源路径和HTTP协议版本:
例:
GET /lampbrother/servlet/RequestURI?param1=a¶m2=b HTTP/1.1
·getMethod:返回HTTP请求消息中的请求方式。
·getRequestURL:返回请求行中的资源名部分。
·getQueryString:返回请求行中的参数部分。
·getProtocol:返回请求行中的协议名和版本。
·getContextPath:返回请求资源所属于的WEB应用程序的路径。
·getPathInfo:返回请求URL中的额外路径信息所对应的资源的真是路径。
·getPathTranslated:返回URL中的额外路径信息所对应的资源的真是路径。
·getServlet:Servlet的名称或Servlet所映射的路径。
获取网络连接信息
·getRemoteAddr方法返回发出请求的客户机的IP地址,其格式为
“192.168.0.3”这种形式的字符文本。
·getRemoteHost方法返回发出请求的客户机的完整主机名,即
“pc1.atguigu.com”这种格式。
·getRemotePort方法返回发出请求的客户端所使用的网络接口的端口号。
·getLocalAddr方法返回WEB服务器上接受当前请求的网络接口的IP地址。
·getLocalName方法返回WEB服务器上接受当前请求的网络接口的IP地址所对应的主机名。
·getLocalPort方法返回WEB服务器上接受当前请求的网络接口的端口号。
·getServerName方法返回当前请求所指向的主机名。
·getServerPort方法返回当前请求所连接的服务器端口号。
·getScheme方法返回请求的协议名。例如http、https或ftp。
·getRequestURL方法返回客户端发出请求时的完整URL。
获取请求头信息
Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements())
{
String paramName = (String)paramNames.nextElement();
out.print(paramName + " : " + request.getParameter(paramName) + "<br>");
/*如果要考虑同一个请求头名可能出现多次,那么应该用下面的代码段代替上面一行程序代码*/
/*String [] paramValues = request.getParameterValues(paramName);
//良好的编程习惯,在使用对象和数组之前先判断其是否为null
if(paramValues != null)
{
for(int i=0;i<paramValues.length;i++)
{
out.print(paramName + " : " + (String)paramValues[i] + "<br>");
}
}*/
}
请求域属性
·存储在ServletRequest对象中的对象称之为请求域属性,属于同一个请求的多个处理模块之间可以通过请求域属性来传递对象数据。
·与请求域属性相关的方法:
HttpServletResponse简介
·Servlet API 中定义的ServletResponse接口类用于创建响应消息。
·HttpServletResponse是专用于HTTP协议的ServletResponse子接口,它用于封装HTTP响应消息。
请求重定向与请求转发
RequestDispathcher接口
·RequestDispatcher实例对象是由Servlet引擎创建的,它用于包装一个要被其他资源调用的资源(例如,Servlet、HTML文件、JSP文件等),并可以通过其中的方法将客户端的请求转发给所包装的资源。
·RequestDispatcher接口中定义了两个方法:forward方法和include方法。
·forward和include方法接受的两个参数必须是传递给当前Servlet的service方法的那两个ServletRequest和ServletResponse对象,或者是对他们进行了包装的ServletRequestWrapper或ServletRequestWrapper对象。
·获取RequestDispatcher对象的方法:
JAVA SERVLET专题(下)的更多相关文章
- JAVA SERVLET专题(上)
SERVLET简介 ·Java Servlet 是和平台无关的服务器端组件,它运行在Servlet容器中.Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和 ...
- Java Servlet完全教程
Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求.尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求. Servle ...
- JavaWeb之Java Servlet完全教程(转)
Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求.尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求. Servle ...
- Java Servlet规范
截自网址:http://blog.csdn.net/u010391029/article/details/46521051 JavaServlet Specification Version 2.3 ...
- java servlet 几种页面跳转的方法及传值
java servlet 几种页面跳转的方法及传值 java web 页面之间传值有一下这几种方式1.form 表单传递参数2.url地址栏传递参数3.session4.cookie5.appli ...
- Java Servlet与Web容器之间的关系
自从计算机软件开发进入网络时代,就开始涉及到通讯问题.在客户/服务器(也叫C/S应用)时期,每个软件都有自己的客户端和服务器端软件.并且客户端和服务器端之间的通讯协议差别也很大.后来随着互联网的发展, ...
- java servlet调用带有多个返回结果集的存储过程
一.mysql存储过程 这里我先说下我这个功能实现的逻辑及途中遇到的一些问题.这个存储过程一共带两个输入参数,一共关联到两张表的查询,每个参数都对应查询表中的一个判断,所以一共返回了两个结果集(当然要 ...
- java servlet+mysql全过程(原创)
前段时间写过一篇 servlet+oracle的文章,但是那是因为公司有可能接那么一个项目,然后我当时也比较闲,所以随便学了下,那玩意是白去研究了,因为公司后面并没接到那项目. 这次学servlet用 ...
- java servlet+oracle 新手可看
最近公司领导告诉接下去接的一个产品,可能会涉及到oracle数据库,以前用得最多的是mssql,前些时间学了下mysql也算少许用过.oracle没接触过.应为我之前做过.net开发,所以数据访问接口 ...
随机推荐
- windows+linux环境部署搭建
http://www.cnblogs.com/lioillioil/archive/2011/09/14/2176595.html
- phalcon: Profiling分析 profilter / Plugin结合,dispatcher调度控制器 监听sql执行日志
个人觉得profilter 跟 logger 功能差不多,logger的功能在于写入,profilter功能在于sql后及时显示分析.都是对sql执行的的分析:一个是写入log文件,一个是直接在页面展 ...
- 杂记(编程style)----google code style!
1.文件名 使用小写字母和下划线组合.头文件以.h结尾,定义文件用.cc结尾.例如:my_useful_class.cc 2.类型名 使用大写字母开头,多个单词组合时每个单词的首字母大写.例如:Url ...
- IO流--复制picture ,mp3
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import ...
- 198. 213. 337. House Robber -- 不取相邻值的最大值
198. House Robber You are a professional robber planning to rob houses along a street. Each house ha ...
- JSON Viewer
http://jsonviewer.codeplex.com/ jsoneditor https://github.com/josdejong/jsoneditor
- 使用Astah繪製UML圖形(转)
http://www.dotblogs.com.tw/clark/archive/2015/02/12/149483.aspx
- Objective-C:@property参数详解
格式:@property(param1, param2) 类型 属性名 参数可有可无 三类参数: 1.读写属性:readwrite/readonly readwrite:产生setter\getter ...
- angularJs项目实战!03:angularjs与其他类库的协作(转)
angularjs,在我看来是个中等重量级的框架.即不像backbone那么简单,也不像dojo和Yui那么包罗万象.很多时候,妄图包罗万象,往往会出现很多子模块的质量高不成低不就,并且修改起来较为困 ...
- JSONP的学习(收集整理)
JSONP和JSON之间有什么联系吗? JSON(JavaScript Object Notation) 是一种轻量级.可读的基于文本的的数据交换格式.,是一种轻量的数据交换开放标准.源于JavsSc ...