1.JavaEE应用程序结构

组成:Servlet  JSP  工具类  第三方jar包,HTML页面(图片、Flash)

部署结构:

JavaEE应用根目录下的资源都是允许客户端访问的(WEB-INF除外)   有时候从安全角度考虑,可以将文件等资源放     在WEB-INF目录下,这样,这些资源对Web服务器是可见的,对客户     端是不可见的

比如一些不希望客户端直接访问的文件和图片资源

2.部署描述符   

JavaEE应用的部署描述符(web.xml)描述Servlet容器运行程序所需的信息
是一个XML格式的文档。

首行XML的编码格式建议选用“UTF-8”
<web-app>元素指定了Servlet的版本和文档类型规范(xsd文件)

Servlet映射配置:

将请求发送给Servlet的两个步骤:
Servlet容器先区分请求所属的Web应用
从Web应用查找合适的Servlet来处理请求
Servlet容器将请求的URI解析为3个部分

Request URL

Request URI=ContextPath+ServletPath+PathInfo
使用request.getRequestURI()获得
上下文路径(ContextPath): Web应用的根目录
Servlet路径(ServletPath): 由部署描述符中Servlet映射指定的路径
路径信息(PathInfo): Servlet之后的字符串
HttpServletRequest对象提供:
getContextPath(),getServletPath()和getPathInfo()方法,分别获取上下文路径、Servlet路径和路径信息

Servlet映射查找:

Servlet容器根据部署描述符中定义的映射按以下顺序查找:
精确映射:请求URI和Servlet映射完全匹配
如:Servlet映射/test/do,请求URI为/test/do
路径映射:Servlet映射以/开始,以/*结束
如:Servlet映射/test/do/*,请求URI为/test/do/a或/test/do/b
扩展映射:Servlet映射以*开始以.xxx结束
如:*.do,请求为/test/a/a.do或/test/b.do
映射不匹配:如果没有匹配的路径,找不到对应的Servlet,返回404错误页面

3.部署JavaEE应用

在Tomact部署JavaEE应用的方式 

方式一:webapps目录:
放入JavaEE应用的目录
放war文件
方式二:修改server.xml文件
方式三:修改context.xml文件

war文件:

同jar的作用类似,将JavaEE应用的资源打包成单独的war文件,方便迁移

Tomcat会自动提取webapps目录下的war文件解压并部署
打包的方法
…/mysite> jar.exe -cvf mysite.war *
使用eclipse

修改serve.xml文件

在server.xml中指
打开server.xml文件,定在Host标签内新建Context<Context path=“/ myapp " reloadable="true" docBase="D:\myapp" workDir="D:\myapp\work"/>其中path是应用虚拟路径,docBase是应用的物理路径,workDir是应用的工作目录
注:删除一个应用同时删除server.xml中相应的Context节点

修改context.xml文件

创建一个context文件
直接在Tomcat的conf\catalina\localhost目录下新建context.xml文件
注:删除一个Web应用同时删除conf\catalina\localhost目录下相应的context.xml文件

Web服务器默认的Web应用

Web服务器通常会维护一个默认的Web应用,用来处理非用户创建的Web应用程序的请求
Tomcat的默认应用:webapps\ROOT
默认的Web应用通常用于测试单个Servlet、JSP或静态内容
访问:http://localhost:8080/

15.Servlet程序结构与部署的更多相关文章

  1. Tomcat的目录结构及部署应用程序

    下载好的二进制的Tomcat,解压会看到7个目录,如下: bin 目录:Tomcat的脚本存放目录,如启动.关闭脚本等.其中 **.bat用于windows平台,**.sh用于Linux平台 conf ...

  2. NET5实践:项目创建-结构概述-程序运行-发布部署

    ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署   1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project ...

  3. Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

    什么是Serlvet? Servlet其实就是一个遵循Servlet开发的java类.Serlvet是由服务器调用的,运行在服务器端. 为什么要用到Serlvet? 我们编写java程序想要在网上实现 ...

  4. 部署在sae上的servlet程序出现is not a javax.servlet.Servlet 错误

    sae本身提供了servlet jar包, 部署时删掉你lib目录下的servlet jar包.

  5. 【转】MyEclipse第一个Servlet程序

    转自:http://blog.csdn.net/wangdingqiaoit/article/details/7674367 前言 本文旨在帮助学习java web开发的人员,熟悉环境,在Win7系统 ...

  6. MyEclipse第一个Servlet程序 --解决Win7系统下MyEclipse与Tomcat连接问题

    前言 本文旨在帮助学习java web开发的人员,熟悉环境,在Win7系统下运行自己的第一个Servlet程序,因为有时候配置不当或系统原因可能会运行不成功,这给初学者带来了一定烦恼,我也是为此烦恼过 ...

  7. 快速搞懂.NET 5/.NET Core应用程序的发布部署

    .NET Framework时代,.NET 应用程序大多直接部署运行在Windows服务器上,当然也可以通过Mono部署运行在Linux上.无论部署exe,还是IIS站点.或是Windows Serv ...

  8. C++程序结构---1

    C++ 基础教程Beta 版 原作:Juan Soulié 翻译:Jing Xu (aqua) 英文原版 本教程根据Juan Soulie的英文版C++教程翻译并改编. 本版为最新校对版,尚未定稿.如 ...

  9. 了解ASP.NET5 Web应用程序结构

    本文参考ASP.NET5 官方文档 Understanding ASP.NET 5 Web Apps,加入了一些个人理解,理解不对的地方希望大家能指出,互相学习. ASP.NET 5 针对WEB编程引 ...

随机推荐

  1. ThinkPHP的URL模式

    ThinkPHP的URL模式有四种,默认是PATHINFO模式,其他三种分别为:普通模式.REWRITE和兼容模式. 一.PATHINFO模式 浏览器输入格式为: http://localhost/d ...

  2. 数组中的最大值以及最小值的位置变换的问题(C++)

    将一个5×5的数组中的最大值放到数组的中心位置 分析:遍历数组,找到最大的元素,然后将该元素与中心位置的元素交换位置 #include<iostream> #include <std ...

  3. Python02 标准输入输出、数据类型、变量、随记数的生成、turtle模块详解

    1 标准输出 python3利用 print() 来实现标准输出 def print(self, *args, sep=' ', end='\n', file=None): # known speci ...

  4. 为什么一些公司把dwg文件转化为pdf

    是因为dwg文件中可能会涉及到字体问题 这台电脑打开dwg没问题,另一台电脑可能没有相应的字体用autocad打开就会出现乱码,所以先转化为pdf,而pdf有固定格式的作用,能够保证一台电脑打开是什么 ...

  5. 前端学习笔记2017.6.21-引入JS文件的方法

    通过网络引入JS文件 <script src="https://www.xxx.com/aaa.js"></script> 如果是引入本地JS文件 < ...

  6. ZROI2018普转提day2t2

    传送门 分析 我们发现2R+C实际就相当于R行C列的子集的个数.因此我们可以将所有集合的子集个数转换为每个集合属于的集合的个数.所以我们可以求出: 这个式子的意义为对于选i行j列的情况的所有方案乘上i ...

  7. Luogu 4323 [JSOI2016]独特的树叶

    新技能get 树哈希,考虑到两棵树相同的条件,把每一个结点的哈希值和树的siz写进哈希值里去. 做出A树每一个结点为根时的树的哈希值丢进set中,然后暴力枚举B树中度数为1的点,求出删掉这个点之后的哈 ...

  8. WOJ 7 智商

    感觉Dasin去年的毒瘤题质量都挺好的,果然还是我太菜了. 以下假设划横线部分都相等,字符$c$代表一个小写字母. 分类讨论: $#1$ 先考虑$n == m$的情况 : $#1.1 :$ A:   ...

  9. Mat 与 IplImage 和 CvMat 的转换

    在 OpenCV 2 中虽然引入了方便的 Mat 类,出于兼容性的考虑,OpenCV 依然是支持 C 语言接口的 IplImage 和 CvMat 结构.如果你要与以前的代码兼容,将会涉及 Mat 与 ...

  10. XML DTD语法详解

    XML DTD详解   XML DTD详解 前情提要与本文内容介绍 前面的两篇XML相关博文: 第一篇是介绍格式正规的XML: 格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节 第二 ...