一、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. AddDigitsTotal - 把数字中单个数相加

    给定一个int数字,把数字中的单个数相加起来:得到的结果如果不是个位数,继续相加 如给定 19,执行1+9 = 10 --> 1 + 0 = 1  返回1 给定22,返回4 思路很简单,把各个位 ...

  2. poj_2186: Popular Cows(tarjan基础题)

    题目链接 tarjan参考博客 本文代码参考博客 题意:求在图上可以被所有点到达的点的数量. 首先通过tarjan缩点,将所有内部两两可达的子图缩为一点,新图即为一个有向无环图(即DAG). 在这个D ...

  3. RxSwift 系列(三) -- Combination Operators

    RxSwift 系列(三) -- Combination Operators 前言 本篇文章将要学习如何将多个Observables组合成一个Observable. Combination Opera ...

  4. 可存放任意类型变量的动态数组--C语言实现

    之前在训练营的时候被要求用C语言实现一个可以存放任意类型数据的栈.现在尝试实现一个数组版本. 首先用到的结构体如下(接触了Win32编程所以长得有点像里面的那些类型): typedef struct ...

  5. 【css】盒子模型 之 弹性盒模型

    参考: http://caibaojian.com/flexbox-guide.html 待补充啊

  6. 5.spark弹性分布式数据集

    弹性分布式数据集 1 Why Apache Spark 2 关于Apache Spark 3 如何安装Apache Spark 4 Apache Spark的工作原理 5 spark弹性分布式数据集 ...

  7. 初学Python(三)——字典

    初学Python(三)——字典 初学Python,主要整理一些学习到的知识点,这次是字典. #-*- coding:utf-8 -*- d = {1:"name",2:" ...

  8. python3网络编程之socketserver

    本节主要是讲解python3网络编程之socketserver,在上一节中我们讲到了socket.由于socket无法支持多用户和多并发,于是就有了socket server. socket serv ...

  9. JAVA环境变量关于

    1.为什么要设置classPath? 用于通知JVM Java基础类库的位置.classPath告诉类装载器去哪里寻找第三方类库 自JDK1.5之后便不需要再配置这个变量了 2.为什么安装两个JRE( ...

  10. year:2017 month:7 day:18

    2017-07-18 JavaScript 1javascript的控制语句 (1) if语句 (2)if(){}else 语句 (3) if(){} else if(){ }语句 (4)switch ...