部署Servlet/JSP应用

部署Servlet/JSP应用 由David发表在天码营

Web应用部署结构

Web应用在Servlet容器中以WAR(Web Application Archive)文件格式作为部署单元。它将JSP、Servlet class、Java class、XML配置文件、静态Web资源(HTML、CSS、JavaScript、Images等等)作为整体打包为一个独立的Web应用。

我们使用Eclipse IDE开发Java Web应用,它的源代码目录结构包含srcWebContent等目录——这属于应用的代码结构,它与最终的WAR文件格式仍然存在一定的区别,例如Java源代码文件需要被编译为字节码文件,在WAR文件结构中,src,WebContent等用于区分源码、Web内容的目录页不复存在。

一个WAR文件实际上和传统的JAR文件是非常类似的,但它特有之处在于存在一个WEB-INF目录,该目录中包含一个web.xml文件用来描述整个Web应用结构(例如定义Servlet和URL之间的映射关系,当然如果在Servlet 3.0后使用注解可以不在web.xml里描述这部分内容)。所有符合Java EE标准的应用服务器(或Servlet容器)都支持通过WAR文件格式部署应用。

一个WAR文件结构示例:

app.war
 |--WEB-INF/
     |--lib/
     |--classes/
 |--images/
 |--css/
 |--js/
 |--templates

可以看到Servlet容器会将根目录下除WEB-INF/目录以为的内容发布,例如可以直接通过访问URL/images/访问images目录下的内容,这一部分内容包括JSP文件以及Web静态资源,所以在开发过程中我们通常会将这些内容与Java源文件区分开来(放在WebContent目录下)。

WEB-INF目录则相对特殊,除了包含Web应用描述符web.xml,还包含Java源代码编译后得到的字节码文件(.class,放在classes目录中)以及依赖的第三方库(.jar,放在lib目录中)。

只要符合标准的WAR文件都可以被应用服务器接受并部署运行,那么即时不通过IDE,我们只需要将源代码目录中的Java源代码编译为字节码文件,同时将第三方依赖以及Web静态资源放置在合适的位置,就可以组合为一个WAR文件。

IDE中的部署方式

在使用IDE的开发的过程中,可能部署到应用服务器的方式非常简单,以Eclipse IDE为例,修改源代码并保存文件后,通过Eclipse内置的WTP插件进行几次简单的鼠标点击就可以将一个项目(Dynamic Project)部署到Tomcat应用服务器并运行。实际上插件做的事情就是在上一小节中描述的Web应用部署过程。只不过我们修改完源代码后,这一切都自动构建完成,同时还添加了热部署功能更加方便我们开发调试:

  • 编辑静态文件后,插件将Tomcat下Web应用目录的相应内容直接更新,此时无需重启应用服务器
  • 编辑Java源代码后,插件重新编译Java源文件,并通知Tomcat应用服务器重新加载Web应用上下文(Context),这个操作也远比重启Tomcat节约时间。

Eclipse插件并不会将编译后的文件目录直接复制到Tomcat安装目录,而是使用当前工作空间中的目录,具体位置是${WORKSPACE_PATH}/metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/。该目录下的每一个文件夹,都是一个Web应用的部署结构,大家可以通过查看该目录下的文件内容变化来印证本节课中的知识点。

既然有了IDE能够如此方便的操作Tomcat,为什么还要去深入了解Web应用内部的部署细节机制呢?首先作为图形界面的IDE,在真正的生产环境中是不存在的,必须了解WAR文件的打包方式才能够真正将应用发布在Internet上;其次在开发过程中,仍然可能出现很多和部署相关的问题,深入了解底层机制后有利于更快速的发现问题、解决问题。

从Eclipse IDE中导出WAR文件

自己动手来得到一个WAR文件是一件繁琐且重复的事情,既然它是可重复的那我们就要想办法借助工具对打包过程进行自动化。既然Eclipse本身能够很好地完成部署工作,它自己内部一定已经实现了这套自动化的机制——没错,Eclipse对于Dynamic Web工程的打包方式默认采用的是Ant构建工具,只不过相关的自动化构建脚本被隐藏在了图形界面之下。

在Eclipse中导出当前Web应用的WAR文件进行部署也非常简单:

  1. 在左侧Project Explorer(或Package Explorer)视图中右键点击Web工程,选中弹出菜单中的Export...
  2. 在弹出新窗口的目录树种找到Web/WAR file,选中它并选择Next
  3. Destination中选择导出WAR文件的位置,点击Finish按钮后,WAR文件就会被导出至相应位置

更多文章请访问天码营网站




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值