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个部分
-
Request URI
• Request URI=ContextPath+ServletPath+PathInfo
• 上下文路径(ContextPath): Web应用的根目录
• Servlet路径(ServletPath): 由部署描述符中Servlet映射指定的路径
• 路径信息(PathInfo): 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错误
部署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/