一、web应用程序简介

WEB应用程序指供浏览器访问的程序,通常也简称为web应用。

一个web应用由多个静态web资源和动态web资源组成,如:

html、css、js文件

Jsp文件、java程序、支持jar包、

配置文件

……

Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射

SUN的Servlet规范对JavaWeb应用作了这样的定义“JavaWeb应用由一组Servlet/JSP、HTML文件、相关Java类以及其他可以绑定的资源构成,它可以在由各种供应商提供的符合Servlet规范的Servlet容器中运行”。

在JavaWeb应用中可以包含以下内容:

Servlet组件:标准Servlet接口的实现类,运行在服务器端,包含了被Servlet容器动态调用的程序代码。

JSP组件:包含Java程序代码的HTML文档,运行在服务器端。当客户端请求访问JSP文件时,Servlet容器先把它编译成Servlet类,然后动态调用它的程序代码。

相关的Java类:开发人员自定义的与Web应用相关的Java类。

静态文档:存放在服务器端的文件系统中,如HTML文件、图片文件和声音文件等。当客户端请求访问这些文件时,Servlet容器会先先从服务器上的本地文件系统中读取这些文件,再把它们发送给客户端。

客户端类:有客户端来运行的类。Applet是典型的客户端类。当客户请求访问Applet时,Servlet容器先从服务器上的本地文件系统中读取Applet的class类文件的数据,再把它发送到客户端,由客户端来运行Applet。

web.xml文件:JavaWeb应用的配置文件,采用XML格式。

二、web应用的组成结构

开发web应用时,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错。

main—–web应用所在的目录

|

|—-html/css/javascript/jsp等文件(一般都是静态文件,注意这里面的文件都可以被用户访问到!!!不安全)

|—-WEB-INF目录

| |

| |—-calsses目录(java类)

| |—-lib目录(一些jar组件包)

| |—-web.xml(这是web应用的配置文件,非常重要,也非常实用便捷)

在WEB-INF目录的classes及lib子目录下,都可以存放java类文件。在运行时,Servlet容器的类加载器先加载classes目录下的类,再加载lib目录下的JAR文件中的类。因此,如果两个目录下存在同名的类,classes目录下的类具有优先权

我们注意到Tomcat的安装目录下也有一个lib目录,这个与Web应用中的lib目录的区别在于:

Tomcat的lib子目录:存放的JAR文件不仅能被Tomcat访问,还能被所有在Tomcat中发布的JavaWeb应用访问。

JavaWeb应用的lib子目录:存放的JAR文件只能被当前JavaWeb应用访问。

假如Tomcat类加载器要加载一个MyClass的类,它会按照以下先后顺序到各个目录中去查找MyClass的class文件,直到找到为止,如果所有目录中都不存在MyClass.class的文件,则会抛出异常:

1、在JavaWeb应用的WEB-INF/classes中查找MyClass.class文件。

2、在JavaWeb应用的 WEB-INF/lib目录下的JAR文件中查找MyClass.class文件。

3、在Tomcat的lib子目录下直接查找MyClass.class文件。

4、在Tomcat的lib子目录下JAR的文件中查找MyClass.class文件。

Note:

Tomcat6.x与Tomcat5.x的目录结构有所区别。在Tomcat5.x版本中,Tomcat允许在server/lib目录、common/lib和shared/lib目录下存放JAR文件,这3个目录的区别在于:

在server/lib目录下的JAR文件只可被Tomcat访问。

在shared/lib目录下的JAR文件可以被所有的JavaWeb应用访问,但不能被Tomcat访问。

在common/lib目录下的JAR文件可以被Tomcat和所有JavaWeb应用访问。

Web组件的URL

无论是开放式目录结构还是打包文件方式发布web应用,web应用的默认URL入口都是Web应用的根目录名。例如要访问MyApp应用,它的URL入口为/MyApp,如访问本地服务http://localhost:8080/MyApphttp://127.0.0.1:8080/MyApp) (这仅仅是个例子,链接没什么用)

Web初学-Web应用细节的更多相关文章

  1. web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么?

    web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么? 这是我在网上找的一些资料:1. Web浏览器除了可以在本地硬盘上打开网页文档外,还可以使用http网络协议从网络上的We ...

  2. web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)

    web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...

  3. 【WEB】web www http html hypermedia hypertext 技术名词的意思

    www WWW是环球信息网的缩写,(亦作"Web"."WWW"."'W3'",英文全称为"World Wide Web" ...

  4. 我所理解的RESTful Web API [Web标准篇]

    REST不是一个标准,而是一种软件应用架构风格.基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格.REST是目前业界更为推崇的构建新一 ...

  5. asp.net MVC3 无法打开项目文件“E:\我们的项目\Project\HeatingMIS.Web\HeatingMIS.Web.csproj”。此安装不支持该项目类型。

    在vs中打开mvc3项目,虽然装了mvc3,但是还是会遇到莫名其妙的错误,这是我在做开发的时候遇到的一个问题,附带解决方案,和大家分享一下 问题描述:无法打开项目文件“E:\我们的项目\Project ...

  6. Difference between web server ,web container and application server

    In Java: Web Container or Servlet Container or Servlet Engine : is used to manage the components lik ...

  7. 让人一用钟情的VS插件系列之一——Web Essentials(Web开发必备利器)

    返回VS插件总目录 本篇目录 初识Web Essentials 看国外大牛如何评价Web Essentials Web Essentials下载与安装 Web Essentials涉及到了哪些内容 初 ...

  8. 基于HT for Web的Web SCADA工控移动应用

    在电力.油田燃气.供水管网等工业自动化领域Web SCADA的概念已经提出了多年,早先年的Web SCADA前端技术大部分还是基于Flex.Silverlight甚至Applet这样的重客户端方案,在 ...

  9. [web安全]Web应用漏洞攻击分析与防范

    网站攻击主要分为以下几类: (1) sql注入攻击 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.它是利 ...

随机推荐

  1. Selenium模拟JQuery滑动解锁

    滑动解锁一直做UI自动化的难点之一,我补一篇滑动解锁的例子,希望能给初做Web UI自动化测试的同学一些思路. 首先先看个例子. https://www.helloweba.com/demo/2017 ...

  2. LuaFramework内存资源管理器ResourceManger详解及切换场景资源清理

    1.成员变量 m_BaseDownloadingURL : 获取资源的地方,加载AssetBundle包的时候会用到 m_AssetBundleManifest : 包间依赖关系文件,从这个类中的信息 ...

  3. WPF转换器之通用转换器

    WPF中的转换器是一个非常好的数据类型转换解决方案,实用和强大, 它的作用是将源数据转换为WPF自身需要的类型,对数据实体没有侵略性,会在项目工程中频繁使用.所以掌握转换器是WPF开发的必备技能. 我 ...

  4. 【JAVASCRIPT】React学习- 杂七杂八

    摘要 记录 React 学习中的小细节 setState setState 有一定的时间延迟,如果需要保证 setState 之后执行某些动作,可以采用以下方法 this.setState({ vis ...

  5. POJ3614 Sunscreen 优先队列+贪心

    Description To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her ...

  6. js prototype 继承

    //继承 function inherits(ctor,superCtor){ ctor.super_ = superCtor; ctor.prototype = Object.create(supe ...

  7. laravel框架cookie应用到中间件的理解

    昨天博主接到一个委托的需求,大数据同事想要在请求日志抓取数据,希望在我的每个页面进行cookie的种植,方便他们进行定位分析,我思考了一下,简单呀,首先考虑的是通过中间件进行cookie种植,但是随后 ...

  8. 实现wpf的值转换器

    从数据库取出来的数据是1,2,3,4,5,不过要显示在控件上的,是1,2,3,4,5对应的string值,怎么办?wpf提供了很好的实现方法,那就是值转换器,我们需要做的是: 1.定义值转换类,继承I ...

  9. Appium环境搭建(Windows版)

    Appium介绍 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持iOS.Android及FirefoxOS平台.Appium使用WebDriver的js ...

  10. macvlan 网络结构分析 - 每天5分钟玩转 Docker 容器技术(56)

    上一节我们创建了 macvlan 并部署了容器,本节详细分析 macvlan 底层网络结构. macvlan 网络结构分析 macvlan 不依赖 Linux bridge,brctl show 可以 ...