上文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. 办公利器-一行代码搞定http服务

    平时给内网的同事分享个文件,直接用python启动一个http服务,方便又简洁: python3: python -m http.server [port] 默认端口为8000 python2: py ...

  2. JIRA的安装部署问题

    JIRA的安装部署问题: 因电脑上装了两人系统,导致我的JIRA服务不能和tomcat同时启动,让我弄了好久都不知道是啥原因,经过请教,总算得出原来是JIRA的Port和Tomcat的Port冲突.在 ...

  3. spring cloud 系列第3篇 —— ribbon 客户端负载均衡 (F版本)

    源码仓库地址:https://github.com/heibaiying/spring-samples-for-all 一.ribbon 简介 ribbon是Netfix公司开源的负载均衡组件,采用服 ...

  4. Mac iTerm2使用lrzsz上传和下载文件

    Mac iTerm2使用lrzsz对服务器上传和下载文件 安装工具 首先需要安装iTerm2和homebrew,在终端中执行(打开终端,使用搜索(command + space),输入terminal ...

  5. SpringBoot(十九)_404返回统一异常处理结果

    之前写过一篇统一异常处理的文章,今天测试了下如果访问一个不存在的接口,也想返回统一的错误信息,应该怎么做 1.修改application.properties文件 # 自定义404 #出现错误时, 直 ...

  6. HTML5新增的表单验证功能

    一.HTML5表单的特点: HTML5 表单增加了许多内置的控件和控件属性 XHTML 中需要放在 form 之中的诸如 input/button/select/textarea 等标签元素,在 HT ...

  7. ASP.Net Core2.1 秒杀项目一步一步实现CI/CD系列一

    前言:有一段时间没写博客了,那是因为博主菜,需要学习和准备,这不带来了本系列的文章.在这里我把学习的心得分享出来,有些点理解的也不是太到位,希望大佬们能多多给点建议和指导.下半年就把这个系列的文章写完 ...

  8. kubernetes实战之consul简单测试环境搭建及填坑

    这一节内容有点长,我们将介绍如何基于docker搭建一client一server的consul测试环境,以及如何搭建多server consul测试集群.在基于docker搭建多server的cons ...

  9. Java多线程(2)线程锁

    多线程访问同一个资源进行读写操作,就很容易出一些问题(比如我们常见的读者写者,生产者消费者模型)所以我们会选择对他们设置信号量或者加锁,来限制同一个时刻只有一个线程对某个对象进行操作. 多线程是一个蛮 ...

  10. leetcode的Hot100系列--序

    小白程序猿,练练手,做做题目,分享下经验, 有不对的,还请大家能够指出,多多包涵!谢谢!! 先简单,后复杂,循序渐进,希望能够坚持下来, 大家一起进步~~