`
空指针异常
  • 浏览: 22612 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Http知识

阅读更多
此文章参考自韩顺平老师视频

一、常用HTTP请求消息头(并不是每次请求都会同时存在这些消息头)
1.Accept:text/html,image/*(告诉服务器,我可以接受文本/网页,图片)
2.Accept-Charset:ISO-8859-1(可以接受字符编码ISO-8859-1)
3.Accept-Encoding:gzip,compress(可以接受gzip,compress数据)
4.Accept-Language:en-us,zh-cn(浏览器支持中英文)
5.Host:www.baidu.com(主机为www.baidu.com)
6.If-Modified-Since:Tue,11 Tul 2003 12:34:33(告诉服务器我的缓冲中有这个文件,该文件的时间是...)
7.Referer:http://www.baidu.com/index.jsp(告诉服务器,我来自哪里,该消息头,常用于防止盗连)
8.User-Agent:Mozilla/4.0(浏览器内核)
9.Cookie()
10.Connection:close/keep-alive(保持连接,发完数据后,不关闭连接)
11.Date:Tue,11 Tul 2003 20:34:33(浏览器发送该请求的时间)

二、常用HTTP响应消息头(并不是每次请求都会同时存在这些消息头)
1.Location:http://www.baidu.com(让浏览器重定向到些URL)
2.Server:apacher tomcat(服务端容器)
3.Content-Encoding:gzip(告诉浏览器我使用了gzip)
4.Content-Length:80(告诉浏览器会发送的数据大小80字节)
5.Content-Language:zh-ch(支持中文)
6.Content-Type:text/html;charset=gb2312(内容格式html,支持gb2312编码)
7.Last-Modified:Tue,11 Tul 2003 10:34:33(告诉浏览器,该资源上次更新时间)
8.Refresh:1;url=http://www.baidu.com(过多久,跳转至url指定的路径)
9.Content-Disposition:attachment;filename=aaa.zip(告诉浏览器,有文件下载)
10.Transfer-Encoding:chunked(传输编码)
11.Set-Cookie:SS=Q0=5Lb;path=/search

//下面三个消息头功能一致,如需保证兼容各种浏览器,都设置上
12.Expires:-1(告诉浏览器如何缓存数据,仅支持IE浏览器)
13:Cache-Control:no-cache(告诉浏览器如何缓存数据,)
14:Pragma:no-cache(告诉浏览器如何缓存数据)

15:Connection:close/Keep-Alive(保持连接,发完数据后,不关闭连接)
16.Date:Tue,11 Tul 2003 20:34:33(服务器响应该请求的时间)


示例:
/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//缓存,永不缓存
		response.setDateHeader("Expires", -1);
		response.setHeader("Cache-Control", "no-cache");
		response.setHeader("Pragma", "no-cache");
		
		//缓存一天时间(与上面永不缓存设置不同时存在)
		response.setDateHeader("Expires", System.currentTimeMillis() + 3600 * 1000 * 24 );
	}


/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {	
		//Refresh
		//多少时间后跳转到url指定的链接
		//url可以指定自己,这样页面就会定时刷新
		response.setContentType("text/html;charset=utf-8");
		response.setHeader("Refresh", "5;url=http://www.baidu.com");
	}


/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//告诉服务器我来自哪里。用于防盗连
		//1.如果直接在浏览器用http://localhost:8080/HttpDemo/downFileServlet访问,referer为null
		//2.如果写html,内容为<a href="http://localhost:8080/HttpDemo/downFileServlet">文件下载<a/>,referer也为null
		//3.如果在其它web项目(访问目录 http://ip:port/example/example.jsp)中访问此servlet,则referer为 http://ip:port/example/example.jsp.
		//4.如果在本项目中访问,则referer为 http://localhost:8080/HttpDemo,允许访问
		String referer = request.getHeader("Referer");
		if(null == referer || !referer.startsWith("http://localhost:8080/HttpDemo")){
			response.sendRedirect("error.jsp");
		}
		
		response.setContentType("text/html");
		//此http头用来文件下载
		response.setHeader("Content-Disposition", "attachment; filename=APP_42_619783.udg");
		OutputStream out = response.getOutputStream();
		
		String fullPath = this.getServletContext().getRealPath("/images/APP_42_619783.udg");
		FileInputStream fis = new FileInputStream(fullPath);
		byte[] buff = new byte[1024];
		int len = 0;
		while((len = fis.read(buff)) > 0){
			out.write(buff, 0, len);
		}
		fis.close();
		out.close();
	}
分享到:
评论

相关推荐

    HTTP知识记录【思维导图】

    记录了自己学习HTTP的所有笔记,包括【HTTP背景,HTTP协议基础,HTTP报文,状态码,HTTP首部,安全,认证,基于HTTP的追加协议

    zhongwusun#linux-#HTTP知识点1

    1.1 域名解析IP地址 1.2 浏览器与WEB服务器建立连接 1.3 浏览器给WEB服务器发送一个HTTP请求 1.3.1 请求行 1.3.1.1 请求方法

    HTTP基础知识培训

    HTTP基础知识培训是一场针对IT行业测试领域的专业课程,旨在帮助团队成员掌握HTTP协议的基本知识和实践应用。培训内容广泛,涵盖了从基础的HTTP协议概述到请求/响应模型,再到各种请求方法和状态码,以及HTTP协议在...

    网络知识 选择题 答案.pdf

    知识点:WWW服务基于HTTP协议。 10. 编写WWW页面所使用的语言是()。答案:B)HTML 知识点:编写WWW页面所使用的语言是HTML。 11. 微软的IE(Internet Explorer)是一种()。答案:A)浏览器软件 知识点:微软的...

    http核心基础知识

    为你提供全面的http知识讲解,从http到https认证;三次握手四次握手;请求认证和tcp/ip等多方面,全访问讲解http知识;基本包含市面上99%的http知识点,总结比较完善。

    CSDN知识库(知识图谱,jpg格式资源)

    微服务架构是一种将单一应用程序划分为一组小的服务,每个服务都在自己的进程中运行,且服务之间通过轻量级方式进行通信,比如HTTP RESTful API。微服务的优势在于可独立部署、容错性好、易于扩展和维护。通过CSDN...

    sharepoint中的知识管理

    - **HTTP & Exchange**:网络协议与邮件服务器。 其中,**SharePoint Portal Server 2003**是实现知识管理的关键平台,它具备多种功能以支持不同领域的知识管理工作: 1. **应用知识**:通过数据挖掘、透视图展示...

    python知识点知识树

    此外,Python的包管理工具pip可以方便地安装和管理第三方库,如requests(HTTP请求)、numpy(数值计算)和pandas(数据分析)等。 函数和类是面向对象编程的核心。Python支持函数式编程,函数可以作为参数传递,也...

    CRMEB_ZSFF_v1.7.4(0124)知识付费开源知识付费系统支持二开完整源码

    CRMEB知识付费系统是基于ThinkPhp5.0+Vue开发的全开源知识付费系统。功能包含直播课堂、付费视频、付费音频、付费阅读、会员系统、课程分销、课程拼团、直播带货、直播打赏、商城系统等。能够快速积学员、学员数据...

    中文vc知识库

    - **HTTP与HTTPS**:讲解如何实现基于HTTP和HTTPS的客户端和服务端程序。 8. **资源管理** - **资源文件**:讨论如何在VC项目中添加和使用资源文件,如图标、菜单和对话框。 - **资源脚本编辑**:介绍RC文件的...

    知识图谱源码

    Python的requests库用于发送HTTP请求,BeautifulSoup或Scrapy用于解析HTML和XML文档,提取所需数据。 2. 数据清洗与预处理:使用pandas库对抓取到的数据进行清洗,去除噪声,格式化数据。 3. 图构建:使用NetworkX...

    企业知识库管理系统(java源码)

    7. **RESTful API**:为了实现前后端分离,系统可能会设计RESTful API,允许前端通过HTTP协议与后端服务进行通信。这提高了系统的响应速度和可扩展性。 8. **权限和角色管理**:为了保障信息安全,系统会包含权限和...

    java开发知识库管理系统.zip

    在知识库系统中,Spring Boot可以用于处理HTTP请求,实现RESTful API,以及与数据库交互。 五、数据库操作 MySQL是常用的开源关系型数据库,适用于中小规模应用。开发者需要熟悉SQL语句,包括数据查询、增删改查...

    基于PHP的knowledgeroot(采用 开发的知识库系统)正式版.zip

    1. PHP基础:了解PHP的基本语法、变量、函数、类和对象,以及如何处理HTTP请求和响应,这些都是使用PHP开发Web应用的基础。 2. MVC架构:knowledgeroot很可能采用了Model-View-Controller(MVC)设计模式,这是一种...

    CRMEB_ZSFF_v1.7.4(0124)附带PC插件-知识付费开源知识付费系统支持二开完整源码

    CRMEB知识付费系统是基于ThinkPhp5.0+Vue开发的全开源知识付费系统。 功能包含:直播课堂、付费视频、付费音频、付费阅读、会员系统、课程分销、课程拼团、直播带货、直播打赏、商城系统等。能够快速积学员、学员...

    网络知识交换机技术基本知识

    4. 应用层:处理用户和网络服务的交互,如HTTP(超文本传输协议)用于网页浏览,FTP(文件传输协议)用于文件传输,SMTP(简单邮件传输协议)用于电子邮件等。 了解了这些基础知识后,我们可以通过2008技术支持培训...

    iOS 开发知识树

    AFNetworking是一个流行的iOS网络库,支持TCP、HTTP/HTTPS、XMPP等协议,对于网络通信的实现至关重要。 内存管理方面,Objective-C使用alloc/new/copy/mutableCopy、retain、release、autorelease、dealloc等方法...

Global site tag (gtag.js) - Google Analytics