http协议以及获取其中信息的方法文档格式.docx

上传人:b****1 文档编号:3445841 上传时间:2023-05-01 格式:DOCX 页数:24 大小:24.31KB
下载 相关 举报
http协议以及获取其中信息的方法文档格式.docx_第1页
第1页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第2页
第2页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第3页
第3页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第4页
第4页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第5页
第5页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第6页
第6页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第7页
第7页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第8页
第8页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第9页
第9页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第10页
第10页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第11页
第11页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第12页
第12页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第13页
第13页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第14页
第14页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第15页
第15页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第16页
第16页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第17页
第17页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第18页
第18页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第19页
第19页 / 共24页
http协议以及获取其中信息的方法文档格式.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

http协议以及获取其中信息的方法文档格式.docx

《http协议以及获取其中信息的方法文档格式.docx》由会员分享,可在线阅读,更多相关《http协议以及获取其中信息的方法文档格式.docx(24页珍藏版)》请在冰点文库上搜索。

http协议以及获取其中信息的方法文档格式.docx

servlet-name>

HelloServlet<

/servlet-name>

servlet-class>

d_servlet.HelloServlet<

/servlet-class>

/servlet>

--servlet的映射配置-->

servlet-mapping>

HelloServlet<

url-pattern>

/hello<

/url-pattern>

/servlet-mapping>

4)访问servlet

http:

8080/myweb/hello

2Http协议入门

2.1什么是http协议

http协议:

对浏览器客户端和服务器端之间数据传输的格式规范

2.2查看http协议的工具

1)使用火狐的firebug插件(右键->

firebug->

网络)

2)使用谷歌的“审查元素”

3)使用系统自带的telnet工具(远程访问工具)

a)telnetlocalhost8080访问tomcat服务器

b)ctrl+]回车可以看到回显

c)输入请求内容

GET/day09/helloHTTP/1.1

Host:

localhost:

d)回车,即可查看到服务器响应信息。

2.3http协议内容

请求(浏览器-》服务器)

User-Agent:

Mozilla/5.0(WindowsNT6.1;

WOW64;

rv:

35.0)Gecko/20100101Firefox/35.0

Accept:

text/html,application/xhtml+xml,application/xml;

q=0.9,*/*;

q=0.8

Accept-Language:

zh-cn,en-us;

q=0.8,zh;

q=0.5,en;

q=0.3

Accept-Encoding:

gzip,deflate

Connection:

keep-alive

响应(服务器-》浏览器)

HTTP/1.1200OK

Server:

Apache-Coyote/1.1

Content-Length:

24

Date:

Fri,30Jan201501:

54:

57GMT

thisishelloservlet!

3Http请求

GET/day09/helloHTTP/1.1-请求行

8080--请求头(多个key-value对象)

--一个空行

name=eric&

password=123456--(可选)实体内容

3.1请求行

GET/day09/helloHTTP/1.1

#http协议版本

http1.0:

当前浏览器客户端与服务器端建立连接之后,只能发送一次请求,一次请求之后连接关闭。

http1.1:

当前浏览器客户端与服务器端建立连接之后,可以在一次连接中发送多次请求。

(基本都使用1.1)

#请求资源

URL:

统一资源定位符。

http:

8080/day09/testImg.html。

只能定位互联网资源。

是URI的子集。

URI:

统一资源标记符。

/day09/hello。

用于标记任何资源。

可以是本地文件系统,局域网的资源(//192.168.14.10/myweb/index.html),可以是互联网。

#请求方式

常见的请求方式:

GET、POST、HEAD、TRACE、PUT、CONNECT、DELETE

常用的请求方式:

GET和POST

表单提交:

<

formaction="

提交地址"

method="

GET/POST"

>

form>

GETvsPOST区别

1)GET方式提交

a)地址栏(URI)会跟上参数数据。

以?

开头,多个参数之间以&

分割。

GET/day09/testMethod.html?

password=123456HTTP/1.1

Referer:

http:

8080/day09/testMethod.html

b)GET提交参数数据有限制,不超过1KB。

c)GET方式不适合提交敏感密码。

d)注意:

浏览器直接访问的请求,默认提交方式是GET方式

2)POST方式提交

a)参数不会跟着URI后面。

参数而是跟在请求的实体内容中。

没有?

POST/day09/testMethod.htmlHTTP/1.1

password=123456

b)POST提交的参数数据没有限制。

c)POST方式提交敏感数据。

3.2请求头

text/html,image/*--浏览器接受的数据类型

Accept-Charset:

ISO-8859-1--浏览器接受的编码格式

gzip,compress--浏览器接受的数据压缩格式

en-us,zh---浏览器接受的语言

www.it315.org:

80--(必须的)当前请求访问的目标地址(主机:

端口)

If-Modified-Since:

Tue,11Jul200018:

23:

51GMT--浏览器最后的缓存时间

//www.it315.org/index.jsp--当前请求来自于哪里

Mozilla/4.0(compatible;

MSIE5.5;

WindowsNT5.0)--浏览器类型

Cookie:

name=eric--浏览器保存的cookie信息

close/Keep-Alive--浏览器跟服务器连接状态。

close:

连接关闭keep-alive:

保持连接。

51GMT--请求发出的时间

3.3实体内容

只有POST提交的参数会放到实体内容中

3.4HttpServletRequest对象

HttpServletRequest对象作用是用于获取请求数据。

1.tomcat服务器接收到浏览器发送的请求数据,然后封装到HttpServetRequest对象

2.tomcat服务器调用doGet方法,然后把request对象传入到servlet中。

核心的API:

请求行:

request.getMethod();

请求方式

request.getRequetURI()/request.getRequetURL()请求资源

request.getProtocol()请求http协议版本

请求头:

request.getHeader("

名称"

)根据请求头获取请求值

request.getHeaderNames()获取所有的请求头名称

实体内容:

request.getInputStream()获取实体内容数据(注意:

POST方式)

案例:

publicclassRequestDemo1extendsHttpServlet{

/**

*1)tomcat服务器接收到浏览器发送的请求数据,然后封装到HttpServetRequest对象

*2)tomcat服务器调用doGet方法,然后把request对象传入到servlet中。

*/

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

/**

*3)从request对象取出请求数据。

*/

//t1(request);

//t2(request);

}

//为了接收POST方式提交的请求

@Override

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresp)

*3.3请求的实体内容

InputStreamin=request.getInputStream();

//得到实体内容

byte[]buf=newbyte[1024];

intlen=0;

while((len=in.read(buf))!

=-1){

Stringstr=newString(buf,0,len);

System.out.println(str);

}

privatevoidt2(HttpServletRequestrequest){

*3.2请求头

Stringhost=request.getHeader("

Host"

);

//根据头名称的到头的内容

System.out.println(host);

//遍历所有请求头

Enumeration<

String>

enums=request.getHeaderNames();

//得到所有的请求头名称列表

while(enums.hasMoreElements()){//判断是否有下一个元素

StringheaderName=enums.nextElement();

//取出下一个元素

StringheaderValue=request.getHeader(headerName);

System.out.println(headerName+"

:

"

+headerValue);

privatevoidt1(HttpServletRequestrequest){

*3.1请求行格式:

(GET/ch06/ServletDemo1HTTP/1.1)

System.out.println("

请求方式:

+request.getMethod());

//请求方式

URI:

+request.getRequestURI());

//请求资源

URL:

+request.getRequestURL());

http协议版本:

+request.getProtocol());

//http协议

}

3.5service和doXX方法区别

publicclassRequestDemo2extendsHttpServlet{

/**

*注意:

tomcat服务器首先会调用servlet的service方法,然后在service方法中再根据请求方式来分别

调用对应的doXX方法

*(例如,如果是GET请求方式,在service方法中调用doGet方法)

*

*因为最常的请求方式是GET和POST,所以编写servlet程序,只需要覆盖doGet和doPost即可!

protectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)

System.out.println(req.getMethod());

service方法被调用"

*该方法用于接收浏览器的Get方式提交的请求

GET方式提交"

*该方法用于接收浏览器的Post方式提交的请求

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

Post方式提交"

3.6案例-获取浏览器的类型(user-agent)

publicclassRequestDemo3extendsHttpServlet{

response.setContentType("

text/html;

charset=utf-8"

//获取请求头:

user-agent

StringuserAgent=request.getHeader("

user-agent"

System.out.println(userAgent);

//判断用户使用的浏览器类型

if(userAgent.contains("

Firefox"

)){

response.getWriter().write("

你正在使用火狐浏览器"

}elseif(userAgent.contains("

Chrome"

你正在使用谷歌浏览器"

Trident"

你正在使用IE浏览器"

}else{

地球上没有这个浏览器,建议使用火狐浏览器"

3.7传递的请求参数如何获取

GET方式:

参数放在URI后面

POST方式:

参数放在实体内容中

获取GET方式参数:

request.getQueryString();

获取POST方式参数:

request.getInputStream();

问题:

但是以上两种不通用,而且获取到的参数还需要进一步地解析。

所以可以使用统一方便的获取参数的方式:

request.getParameter("

参数名"

根据参数名获取参数值(注意,只能获取一个值的参数)

request.getParameterValue("

参数名“);

根据参数名获取参数值(可以获取多个值的参数)

request.getParameterNames();

获取所有参数名称列表

3.8请求参数编码问题

修改POST方式参数编码:

request.setCharacterEncoding("

utf-8"

修改GET方式参数编码:

手动解码:

Stringname=newString(name.getBytes("

iso-8859-1"

),"

publicclassRequestDemo4extendsHttpServlet{

*设置参数查询的编码

*该方法只能对请求实体内容的数据编码起作用。

POST提交的数据在实体内容中,所以该方法对POST方法有效!

*GET方法的参数放在URI后面,所以对GET方式无效!

request.setCharacterEncoding("

/*System.out.println("

GET方式"

//接收GET方式提交的参数

Stringvalue=request.getQueryString();

System.out.println(value);

*/

*统一方便地获取请求参数的方法

System.out.println(request.getMethod()+"

方式"

//getParameter(name):

根据参数名得到参数值(只能获取一个值的参数)

Stringname=request.getParameter("

name"

*手动重新解码(iso-8859-1字符串->

utf-8字符串)

/*if("

GET"

.equals(request.getMethod())){

name=newString(name.getBytes("

}*/

Stringpassword=request.getParameter("

password"

password=newString(password.getBytes("

System.out.println(name+"

="

+password);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2