上文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. 短视频技术详解:Android端的短视频开发技术

    在 <如何快速实现移动端短视频功能?>中,我们主要介绍了当前短视频的大热趋势以及开发一个短视频应用所涉及到的功能和业务.在本篇文章中,我们主要谈一谈短视频在Android端上的具体实现技术 ...

  2. MyBatis从入门到精通(三):MyBatis XML方式的基本用法之多表查询

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 多表查询 上篇博客中,我们示例的 ...

  3. JavaWeb入门_模仿天猫整站Tmall_SSH实践项目

    Tmall_SSH 技术栈 Struts2 + Hibernate + Spring + Jsp + Tomcat , 是 Java Web 入门非常好的练手项目 效果展示: 模仿天猫前台 模仿天猫后 ...

  4. 【简单脚本】Linux查看配置信息

    命令比较多,统一整合了一下: 1.新建文件touch getComputerConf.sh 2.vim getComputerConf.sh 3.按i键插入,右键粘贴如下内容: #!/bin/sh e ...

  5. 转载 make版MYsql 5.5.13

    使用cmake安装mysql5.5.132014-04-09 12:59:42 分类: Mysql/postgreSQL 原文地址:使用cmake安装mysql5.5.13 作者:isqlw 安装cm ...

  6. 【Go】使用压缩文件优化io (二)

    原文链接: https://blog.thinkeridea.com/201907/go/compress_file_io_optimization2.html 上一篇文章<使用压缩文件优化io ...

  7. python数据库-安装问题总结(48)

    一.ERROR1698(28000):Access denied for user root@localhost错误 我的操作系统是ubuntu: 我的MySQL版本是: 安装完成后,登录mysql的 ...

  8. windows美化工具7+ Taskbar Tweaker

    今天分享一个windows美化工具 7+ Taskbar Tweaker 调整工具专为 Windows 任务栏工作者量身定制,支持 Windows 7 以及更高版本的(非服务器版)微软操作系统平台. ...

  9. Spring Boot + Elasticsearch实现大批量数据集下中文的精确匹配-案例剖析

    缘由 数据存储在MYSQ库中,数据基本维持不变,但数据量又较大(几千万)放在MYSQL中查询效率上较慢,寻求一种简单有效的方式提高查询效率,MYSQL并不擅长大规模数据量下的数据查询. 技术方案 考虑 ...

  10. break使用不当引发的一个“血案”

    最近在网上冲浪,读到一则新闻,摘抄下这则新闻: ======================= 以下文字摘抄自互联网==================== 1990年1月15日,AT&T电话 ...