Web Server工作原理

假设工程师想提供一个网页浏览的Web应用给客户,需要经过以下几步:

  1. 在指定目录下新建资源(hello.html)
  2. 编写一个服务器ServerDemo监听请求和响应请求:ServerSocket开启本机的一个监听端口,当监听到请求时,Socket获取输出流,并且把指定目录下的资源读入到输出流中。
  3. 用户打开浏览器,通过localhost:9999发起资源请求,并获取Server响应。
  4. Server释放资源。

这是一个最简单的Web应用示例,在没有Web Server以前,为了使用户能够访问到资源,程序开发者不仅需要开发资源文件,还需要开发Web服务器监听,分发,响应用户请求。随着Web应用的流行,涌现出越来越多优秀的Web服务器,来帮助程序开发者减少工作量,使得程序开发者只专注于资源的提供。目前主流的Web服务器有Weblogic,Tomcat,WebSphere。

Web应用

有了Web Server,我们只需要把Web应用资源(静态,动态资源和配置文件)按固定形式组织起来,放置在Server的特定目录下,即可让外界访问Web应用,这个过程称为虚拟目录映射。开发Web应用时,不同类型的文件有严格的存放规则,否则不仅可能无法访问Web应用,还会导致服务器启动报错。应用的根目录下存放:

  • 可供外界直接访问的资源:html/jsp/css...
  • WEB-INF,这个目录下的文件外界无法直接访问,由WebServer负责调用: 编译生成的java类(classes下),运行依赖的 jar包(lib下)还有配置文件(WEB-INF下)。

web.xml

web.xml是整个Web应用中最重要的配置文件,必须放置在WEB-INF的目录下。每个Web应用都包含web.xml, 通过web.xml可以配置:

  • Web应用入口(将某个资源配置为网站首页)
  • 请求监听和映射(监听器和映射配置)
  • 拦截处理请求(过滤器)

JavaWeb基础: Web应用和Web服务器的更多相关文章

  1. JavaWeb基础知识总结

    JavaWeb基础知识总结.   1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...

  2. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...

  3. javaweb学习总结十五(web开发的相关概念以及常用服务器介绍)

    一:java web开发的相关概念 1:web分为静态web和动态web 2:模拟web服务器 web页面如果想让外部网络访问,必须通过网络程序读取资源,流程: a:用户通过浏览器访问网络程序 b:网 ...

  4. Web安全之Web 安全介绍与基础入门知识

    web安全介绍与基础入门知识 安全与安全圈 甲方与乙方 甲方:如腾讯,阿里等需要安全服务的公司 乙方:提供安全服务产品的服务型安全公司 web与二进制 web,研究web安全 二进制,研究如客户端安全 ...

  5. JavaEE中Web服务器、Web容器、Application服务器区别及联系

    在JavaEE 开发Web中,我们经常会听到Web服务器(Web Server).Web容器(Web Container).应用服务器(Application Server),等容易混淆不好理解名词. ...

  6. PHP Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样用php实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 ...

  7. 部署Eclipse中的Web项目到Tomcat服务器运行

    用Eclipse开发Web项目时,可以通过Tomcat服务器运行Web项目,此时Web项目被部署在[WorkSpace]\.metadata\.plugins\org.eclipse.wst.serv ...

  8. Ruby Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样用Ruby实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推 ...

  9. Mobile testing基础之Native、Web、Hybrid、activity、webview

    应用一词指的是app,即application.原生应用指的是能直接运行于当前操作系统的应用程序:web应用指需要在浏览器中运行的网页应用,由于界面体验.功能上都更加强大,可媲美原生应用,故称web应 ...

随机推荐

  1. iOS深入学习:(UITableView系列3:insertRow)

    前面一篇博客,我使用了reloadData来刷新界面,但是这样没有动画效果,那么我这里通过insertRowsAtIndexPaths:withRowAnimation设置动画效果,希望对大家有所帮助 ...

  2. Adding Value To Combo List at Runtime in Oracle Forms

    You want to add a value in Combo List item in Oracle Forms, by typing it in combo list box text area ...

  3. Music Player团队项目(一)

    团队成员及分工 团队: Blue 团队共有六人 姓名:     学号后四位:       贡献分: 张   宇(队长)  1152          1+1.8=2.8分 侯贺琦          1 ...

  4. 5.Primitive, Reference, and Value Types

    1.Programming Language Primitive Types primitive types:Any data types the compiler directly supports ...

  5. HDU 2594 Simpsons’ Hidden Talents(辛普森一家的潜在天赋)

    HDU 2594 Simpsons’ Hidden Talents(辛普森一家的潜在天赋) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 3 ...

  6. Apache-Shiro+Zookeeper系统集群安全解决方案之缓存管理

    上篇[Apache-Shiro+Zookeeper系统集群安全解决方案之会话管理],解决了Shiro在系统集群开发时安全的会话共享问题,系统在使用过程中会有大量的权限检查和用户身份检验动作,为了不频繁 ...

  7. Object-C : Block的实现方式

    摘自:http://www.cnblogs.com/GarveyCalvin/p/4204167.html> Date : 2015-12-4 前言:我们可以把Block当作一个闭包函数,它可以 ...

  8. 关于Docker在测试方面的应用

    Docker 火了很长一段时间了,前段时间简单的学习和试玩了一下子,发现他对测试很有价值,觉得有必要再次深入研究. 这里标记一些较好的学习网址,用作参考: InfoQ上面有系列的文章: 深入浅出Doc ...

  9. iOS - UISlider

    前言 NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UISlider : UIControl <NSCoding> @a ...

  10. mysql 锁的粒度

    1.锁的类型分为读锁和写锁,这个很好区分.可以这样认为:如果有增删改,就是写锁.如果是查询,就是读锁.2.锁的粒度也就是锁的范围,分为行锁和表锁.锁的范围和多个因素有关,包括事务隔离级别.是否使用索引 ...