JavaEE应用程序的部署结构

JavaEE应用程序的部署结构

WEB-INF目录

客户端无法直接访问该目录中的文件

  • WEB-INF包括三个子目录
    – classes 所有未被jar包含的应用程序中的相关的类文件
    – lib 使用到的jar文件
    – web.xml 部署描述符,该文件是JavaEE应用的核心,每个JavaEE应用必须有该文件,其包含了Servlet容器(Tomcat)运行JavaEE应用所需要的配置信息

部署描述符(web.xml)

Servlet映射配置
  • 将请求发送给Servlet的两个步骤:
    – Servlet容器先区分请求所属的Web应用
    – 从Web应用查找合适的Servlet来处理请求
  • Servlet容器将请求的URI解析为3个部分
    JavaEE应用程序的部署结构
  • Request URI
    • Request URI=ContextPath+ServletPath+PathInfo
    JavaEE应用程序的部署结构
    • 上下文路径(ContextPath): Web应用的根目录
    JavaEE应用程序的部署结构
    • Servlet路径(ServletPath): 由部署描述符中Servlet映射指定的路径
    JavaEE应用程序的部署结构
    • 路径信息(PathInfo): Servlet之后的字符串
    JavaEE应用程序的部署结构

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错误
部署JavaEE应用
  • 方式一:webapps目录:
    – 放入JavaEE应用的目录
    – 放war文件
  • 方式二:修改server.xml文件
    – 在Host标签内新建Context
    <Context path=“/myapp" reloadable=“true” docBase=“D:\myapp” workDir=“D:\myapp\work”/>其中path是应用虚拟路径,docBase是应用的物理路径,workDir是应用的工作目录
    – 注:删除一个应用同时删除server.xml中相应的Context节点
  • 方式三:修改context.xml文件
    – 直接在Tomcat的conf\catalina\localhost目录下新建context.xml文件
    – 注:删除一个Web应用同时删除conf\catalina\localhost目录下相应的context.xml文件
  • war文件
    • 同jar的作用类似,将JavaEE应用的资源打包成单独的war文件,方便迁移
    • Tomcat会自动提取webapps目录下的war文件解压并部署
    • 打包的方法
    – 使用eclipse(导出war文件)
    Web服务器通常会维护一个默认的Web应用:webapps\ROOT
    – 访问:http://localhost:8080/