上文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协议基础的更多相关文章

  1. 用C写一个web服务器(一) 基础功能

    .container { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px } .conta ...

  2. javaweb入门--web是什么

    WEB基本概念 首先明白web是什么,人们常说的web其实就是英文中页面的意思,准确来说是Internet主机供给外界访问的资源. 站在用户视角,也就是说,通过你浏览器(客户端)的地址栏输入资源(你要 ...

  3. 08.Web服务器-2.HTTP协议介绍

    HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF ...

  4. web服务器专题:tomcat基础及模块

    Web服务器专题:Tomcat(一)基础架构 针对java系的经典服务器,打算系统的整理一下Tomcat的机制和一些原理,以此记录. 插一则题外话,关于tomat这个名字的由来:Tomcat 名称的由 ...

  5. 06 入门 - Web服务器

    目录索引:<ASP.NET MVC 5 高级编程>学习笔记 开发和调试ASP.NET MVC程序,需要Web服务器的支持. Visual Studio 2012+开发环境提供了两种Web服 ...

  6. ctfhub技能树—web前置技能—http协议—基础认证

    打开靶机环境 下载附件后发现是常用密码字典,于是考虑本题可能是考察密码爆破 打开环境 发现需要认证,于是考虑使用暴力破解 使用burpsuite抓包,查看 发现最下面一行有加密后的密文 使用base6 ...

  7. 浅谈web服务器的编写之http协议

    本书是介绍怎么编写一个Web服务器,而Web服务器是基于HTTP(HyperText Transfer Protocol)协议实现的,所以要实现一个Web服务器就必须了解HTTP协议,本章主要介绍HT ...

  8. 用C写一个web服务器(四) CGI协议

    * { margin: 0; padding: 0 } body { font: 13.34px helvetica, arial, freesans, clean, sans-serif; colo ...

  9. 什么是web?什么是web服务器?什么是应用服务器?

    1.什么是Web? 简单来说,Web就是在Http协议基础之上,利用浏览器进行访问的网站.目前来看最常用的意义是指在 Intenet 上和 HTML 相关的部分.换句话说,目前在 Intenet 上通 ...

随机推荐

  1. Java NIO学习系列二:Channel

    上文总结了Java NIO中的Buffer相关知识点,本文中我们来总结一下它的好兄弟:Channel.上文有说到,Java NIO中的Buffer一般和Channel配对使用,NIO中的所有IO都起始 ...

  2. tensorflow学习笔记-bili莫烦

    bilibili莫烦tensorflow视频教程学习笔记 1.初次使用Tensorflow实现一元线性回归 # 屏蔽警告 import os os.environ[' import numpy as ...

  3. Storm —— 单机环境搭建

    1. 安装环境要求 you need to install Storm's dependencies on Nimbus and the worker machines. These are: Jav ...

  4. Spark学习之路(六)—— 累加器与广播变量

    一.简介 在Spark中,提供了两种类型的共享变量:累加器(accumulator)与广播变量(broadcast variable): 累加器:用来对信息进行聚合,主要用于累计计数等场景: 广播变量 ...

  5. python基础--定义装饰器(内置装饰器)

    装饰器的定义: 装饰器本质上就是一个python函数,它可以让其它函数在不需要做任何代码改动的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景中,比如-- >插入 ...

  6. ZooKeeper入门(一)

    1 基本概念 1.1 什么是ZooKeeper zookeeper是为分布式应用所设计的高可用.高性能且一致的开源协调服务 1.2 Zookeeper的特点 顺序一致性 原子性 单一视图 可靠性 实时 ...

  7. POJ 3581:Sequence(后缀数组)

    题目链接 题意 给出n个数字的序列,现在让你分成三段,使得每一段翻转之后拼接起来的序列字典序最小.保证第一个数是序列中最大的数. 例如样例是{10, 1, 2, 3, 4},分成{1, 10}, {2 ...

  8. 小白开学Asp.Net Core 《七》

    小白开学Asp.Net Core <七> — — 探究中间件(MiddleWare) 1.何为中间件? 中间件是组装到应用程序管道中以处理请求和响应的家伙,管道中的每个组件都要满足以下两个 ...

  9. java高并发系列-第1天:必须知道的几个概念

    java高并发系列-第1天:必须知道的几个概念 同步(Synchronous)和异步(Asynchronous) 同步和异步通常来形容一次方法调用,同步方法调用一旦开始,调用者必须等到方法调用返回后, ...

  10. Java学习笔记之---入门

    Java学习笔记之---入门 一. 为什么要在众多的编程语言中选择Java? java是一种纯面向对象的编程语言 java学习起来比较简单,适合初学者使用 java可以跨平台,即在Windows操作系 ...