javaweb入门---web服务器与HTTP协议基础
上文web基础简介了web到底是什么,以及身为Java开发人员需要掌握的地方。本文将解答web服务器是什么,怎么使用?还有关于http协议的基础知识。
web服务器
web服务器的大概念很广泛,但是通俗易懂的来说,就是指的是网站服务器,它是建立在Internet之上并且驻留在某种计算机上的程序。或者再简单来说,你的电脑安装了服务器软件并且连上了Internet,那你的电脑就可以说一个服务器了,对 就是这么简单,并不是多么高深的知识。只不过就是性能各个方面比较低就是了。一般公司中会有个专门个性能强悍内存大的计算器安装这个服务器软件,如果有人参观过公司的机房,那么那一个个的黑盒子,就是服务器了。
大家注意到了我标红的地方,服务器软件,没错这就是我们日常开发不可避免要使用到了,开发人员开发完项目后,需要把项目配置到服务器软件上,上线了之后,用户就可以通过客户端或浏览器访问服务器中项目所在的路径,请求到他所需的资源了。
那么市面上都有些什么服务器软件呢?这里就为大家简单介绍几款作为了解:
1、Apache是世界上应用最多的WEB服务器,优势主要在于源代码开放、有一支开放的开发队伍、支持跨平台应用以及其可移植性等。Apache的模块支持非常丰富,虽在速度和性能上不及其他轻量级WEB服务器,是属于重量级产品,所消耗的内存也比其他WEB服务器要高。
ps:Apache软件基金会需要同学们稍微了解一下,apache是一个开源的公益组织,做it开发不得不了解他,这个组织的宗旨是通过提供硬件、沟通工具以及业务基础架构,从而为开放式协作开发软件项目提供后盾。且这个组织开发的项目基本上都是开源的,也就是免费的,如tomcat服务器,maven项目管理软件等等等等有非常多。
2、Lighttpd是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的WEB Server环境,它具有内存开销低、CPU占有率低、效能好,以及模块丰富等特点。支持FastCGI、CGI、Auth、输出压缩、URL重写及Alias等重要功能,属于轻量级WEB服务器。
3、Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的web应用软件容器,Tomcat server是根据servlet和jsp规范执行的,因此也可以说Tomcat server实行了Apache-Jakarta规范,且比绝大多数商用应用软件服务器要好,但是,tomcat对静态文件和高并发的处理比较弱。
4、IBM WebSphere是一种功能完善、开放的WEB应用程序服务器,它基于Java的应用环境,建立、部署和管理Internet和Intranet Web应用程序。相对于其他流行的WEB服务器而言,应用的数量很少。
5、IIS是一种WEB服务组件,允许在公共Intranet或Internet上发布信息的WEB服务器,其中包括WEB服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络上发布信息成了一件很容易的事情。它提供ISAPI作为扩展WEB服务器功能的编程接口,同时还提供了Internet,可以实现对数据库的查询和更新。
6、Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll、kqueue、eventport最为网络I/O模型,在高连接并发的情况下,能够支持高达5万个并发连接数的响应,而内存、CPU等系统资源消耗却非常低,运行非常稳定。
各个服务器的下载与安装教程网上非常多,没有什么难度,不过要注意的点:
比如常用的tomcat服务器下载安装完成后,点击在bin目录下satrtup.bat打算启动服务器时黑窗口一闪而过?首先要注意的是tomcat运行必要有jdk环境,还有个主要原因是没有JAVA_HOME变量 ,打开计算机,在高级环境配置中新建一个变量 名为 JAVA_HOME,然后复制你电脑jdk所在的路径bin之前的内容粘贴到变量值中,然后再重新编辑Path的变量值,在开头%JAVA_HOME%\bin; 添加到变量值开头即可。原理是因为在tomcat的配置文件server.xml中,需要访问名为java_home的环境路径,如果你没有配置,就会出错。
举例tomcat的几种配置项目方式:
目录 : bin: Tomcat运行文件 lib:Tomcat需要用到的jar包 conf:Tomcat运行时生成文件
部署的第一种方式: webapps:存放需要运行的项目,webapps里配置动态项目 必须要WEB-INF文件 WEB-INF文件里必须要有web.xml文件项目导出到webapps里:项目导出导成war包,启动服务器时会自动解压war包
如果不在webapps里的项目想配置,除了把项目拷贝到webapps下
第二种方式在server.xml中的Host标签下,新建<Context docBase="D:\项目所在的路径" path="/abc/>
docBase属性的值:项目所在的路径 path属性的值:浏览器中访问项目的名称
server.xml在Tomcat文件中的conf文件夹中
第三种方式在Tomcat目录中的conf\Catalina\localhost目录下,新建xxx.xml文件
浏览器中的访问该项目的名称为xxx.xml文件的名称
HTTP协议:
浏览器访问项目:协议+ip地址+端口号+项目路径+文件名。
大家平时上网的时候需要输入网址,那么网址开头总会有http的字样,那么http到底是什么呢?
HTTP:HyperText Transfer Protocol 超文本传输协议。浏览器与服务器的协议
浏览器向服务器请求,服务器对浏览器回应,之间用HTTP协议传输
好比约定俗称的规定,让请求端和回应端能互相识别
1.基于TCP/IP的高级协议
2.默认端口号:80
3.基于请求/响应模型的:一次请求对应一次响应
与之对应的还有文件协议,邮件协议,再通俗的来说,大家都写过信吧?开头必须是您好xxx,正文开始要空两格,最后需要此致敬礼,xxx与xxxx年xx月xx日。这就是一种格式,也可以说一种协议,写信人与收信人间的协议,你只有这样写,我才能理解。你和外国人沟通的话,你讲中文他说他本国的语言,那样肯定是将不同的,那么就需要使用广泛的英语作为协议,大家都讲英语,都遵守英语的语法,那么两个人就可以沟通。
那么这样讲大家肯定都理解了,http协议就是浏览器(客户端)与服务器中间的协议,遵守了这个协议 服务器就可以解析来自浏览器的请求,浏览器也可以解析来自服务器的响应。
以谷歌浏览器Chrome为例,访问了网页,打开开发者工具点击Network,就可以清楚看到请求行General,请求头requestHeaders,响应头responseHesders的格式与内容。
客户端请求消息(request):客户端发送一个HTTP请求到服务器 格式如:
请求行(request line):请求方式 请求url 请求协议/版本
请求头部(header) 请求头名称:请求头值
请求空行: 空行
请求数据 :封装post请求消息的请求参数的
服务器响应消息:(reponse)
状态行
消息报头
响应正文
请求方式:HTTP协议有7种请求方式,常用的有两种
get:请求参数在请求行中,在hurl后
请求的url长度是有限制的
post:请求参数在请求体中
请求的url长度是没有限制的
HTTP三点注意事项:
HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后
即断开连接。采用这种方式可以节省传输时间
HTTP是无状态:HTTP协议是无状态协议,无状态是指协议对于事物处理没有记忆能力。缺少状态意味着如果
后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传输的数据增大。另一方面,在服务器不需要
先前信息时它的应答就比较快
HTTP是媒体独立的:这意味着,只要客户端和服务端知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。
客户端以及服务器指定使用适合的MIME-type内容类型
常见请求头:
User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息
用处:可以在服务器端获取该头的信息,解决浏览器的兼容性问题
Referer:在请求头中 如果有Referer键和值,说明是从这个页面跳转过来的,
用处:统计 比如有百度推广的网站,从百度里点进去,Referer值就是百度网址
防盗链 比如有电影连接想播放电影,发现不是从优酷跳转来的,就不播放
结果简单的介绍后,大家应该就可以看懂一张图:
图中红色圈出的地方以及服务端程序相比大家都有了基本的认识。那么后文将讲解黄色圈的内容,服务器是如何处理请求并且响应的呢?
javaweb入门---web服务器与HTTP协议基础的更多相关文章
- 用C写一个web服务器(一) 基础功能
.container { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px } .conta ...
- javaweb入门--web是什么
WEB基本概念 首先明白web是什么,人们常说的web其实就是英文中页面的意思,准确来说是Internet主机供给外界访问的资源. 站在用户视角,也就是说,通过你浏览器(客户端)的地址栏输入资源(你要 ...
- 08.Web服务器-2.HTTP协议介绍
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF ...
- web服务器专题:tomcat基础及模块
Web服务器专题:Tomcat(一)基础架构 针对java系的经典服务器,打算系统的整理一下Tomcat的机制和一些原理,以此记录. 插一则题外话,关于tomat这个名字的由来:Tomcat 名称的由 ...
- 06 入门 - Web服务器
目录索引:<ASP.NET MVC 5 高级编程>学习笔记 开发和调试ASP.NET MVC程序,需要Web服务器的支持. Visual Studio 2012+开发环境提供了两种Web服 ...
- ctfhub技能树—web前置技能—http协议—基础认证
打开靶机环境 下载附件后发现是常用密码字典,于是考虑本题可能是考察密码爆破 打开环境 发现需要认证,于是考虑使用暴力破解 使用burpsuite抓包,查看 发现最下面一行有加密后的密文 使用base6 ...
- 浅谈web服务器的编写之http协议
本书是介绍怎么编写一个Web服务器,而Web服务器是基于HTTP(HyperText Transfer Protocol)协议实现的,所以要实现一个Web服务器就必须了解HTTP协议,本章主要介绍HT ...
- 用C写一个web服务器(四) CGI协议
* { margin: 0; padding: 0 } body { font: 13.34px helvetica, arial, freesans, clean, sans-serif; colo ...
- 什么是web?什么是web服务器?什么是应用服务器?
1.什么是Web? 简单来说,Web就是在Http协议基础之上,利用浏览器进行访问的网站.目前来看最常用的意义是指在 Intenet 上和 HTML 相关的部分.换句话说,目前在 Intenet 上通 ...
随机推荐
- SpringCloud Sleuth入门介绍
案例代码:https://github.com/q279583842q/springcloud-e-book 一.Sleuth介绍 为什么要使用微服务跟踪?它解决了什么问题? 1.微服务的现状? ...
- 这个注解一次搞定限流与熔断降级:@SentinelResource
在之前的<使用Sentinel实现接口限流>一文中,我们仅依靠引入Spring Cloud Alibaba对Sentinel的整合封装spring-cloud-starter-alibab ...
- asp.net core 自定义异常处理中间件
asp.net core 自定义异常处理中间件 Intro 在 asp.net core 中全局异常处理,有时候可能不能满足我们的需要,可能就需要自己自定义一个中间件处理了,最近遇到一个问题,有一些异 ...
- H5离线缓存基础系列
1.什么是离线缓存 离线缓存:离线缓存可以将站点的一些文件缓存到本地,它是浏览器自己的一种机制,将需要的文件缓存下来,以便后期即使没有连接网络,被缓存的页面也可以展示. 2.离线缓存的优势 在没有网络 ...
- Selenium Grid分布式测试环境搭建
Selenium Grid简介 Selenium Grid实际上是基于Selenium RC的,而所谓的分布式结构就是由一个hub节点和若干个node代理节点组成.Hub用来管理各个代理节点的注册信息 ...
- python学习 -女神或者男神把微信消息撤回后好慌,有了这个妈妈再也不担心你看不到女神或者男神撤回的消息了(超详解)
简介 有时候在忙工作,女朋友发了一个消息,就撤回了,但是人天生的都有一颗好奇心,而且在当今这个时代找个女朋友不容易,一个程序猿找一个女朋友更是不容易的.人家好不容易跟你,你还不得把人家当老佛爷侍候着, ...
- django基础知识之模板继承:
模板继承 模板继承可以减少页面内容的重复定义,实现页面内容的重用 典型应用:网站的头部.尾部是一样的,这些内容可以定义在父模板中,子模板不需要重复定义 block标签:在父模板中预留区域,在子模板中填 ...
- Python的函数, 返回值, 参数
1. 函数 函数是对功能的封装 语法: def 函数名(形参): 函数体(代码块,return) 调用: 函数名(实参) 2. 返回值 return:在函数执行的时候, 遇到return 就直接返回, ...
- django基础知识之视图:
视图 视图接受Web请求并且返回Web响应 视图就是一个python函数,被定义在views.py中 响应可以是一张网页的HTML内容,一个重定向,一个404错误等等 响应处理过程如下图:
- Ajax探讨
Ajax是一种技术方案,并不是什么新技术,Ajax请求使用XmlHttpRequest对象发送, XmlHttpRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通信. 最 ...