Web应用部署

Web应用终于到了最后的重要时刻


Web应用部署

2.1 构建Web应用的文件和目录结构,其中可能包含
1. 静态内容
2. JSP页面
3. servlet类
4. 部署描述文件
5. 标记库
6. Jar文件
7. Java类文件
8. 描述如何保护资源文件避免HTTP访问
2.2 说明以下部署描述文件元素的作用和语义
1. error-page
2. init-param
3. mime-mapping
4. servlet
5. servlet-class
6. servlet-mapping
7. servlet-name
8. welcome-file
2.3 为以下各个部署文件元素建立正确的结构
1. error-page
2. init-param
3. mime-mapping
4. servlet
5. serlvet-class
6. servlet-name
7. welcome-file
2.4 解释War文件的作用,并说明War文件的内容,以及如何构建一个War文件
6.3 编写一个语法正确的JSP文档(采用基于XML的语法)


部署的快乐

在这一章,主要考虑3个问题:

(1)你把Web应用中的东西放在那里?

静态资源放在哪里?JSP页面呢?Servlet类文件呢?JavaBean类文件呢?监听者类文件呢?标记文件呢?标记处理器类呢?TLD呢?Jar文件呢?web.xml DD呢?还有一些东西我们不希望容器对外提供,这些东西放在哪里?(还句话说,Web应用的哪些部分要得到保护,不能由客户直接访问?),另外,“欢迎”文件放在哪里?

(2)容器会在哪里找Web应用中的东西?

客户请求HTML页面时容器会到哪里查找?JSP页面呢?servlet呢?如果请求的并不是一个具体文件(比如,BeerTest.do)会怎么样?容器在哪里查找标记处理器类?容器去哪里找TLD?标记文件?Jar文件?部署描述文件?Servlet依赖的其他类?容器在哪里查找“欢迎”文件?(显然,如果这些问题你都清楚了,那么以上第一条里的问题对你来说只是小菜一碟了。)

(3)客户怎么请求Web应用里的东西?

客户要访问HTML页面的话,改在浏览器里键入什么?要访问JSP页面呢?servlet呢?如果请求的东西并不是具体文件会怎么样?哪些地方客户可以直接请求,哪些地方会限制客户直接访问资源?如果客户键入的只是一个目录的路径,而不是特定文件的路径,会怎么样?


Web应用中的东西要放在哪里?


War文件

War文件只是Web应用结构的一个快照,采用了一种更可移植的压缩形式(它实际上就是一个Jar文件)。建立War文件时,就是要把整个Web应用结构(去掉Web应用上下文目录,也就是把WEB-INF之上的一级目录去掉)压缩起来,并指定一个.war扩展名。不过,还有一个问题,如果没有包括特定的Web应用目录(例如,BeerApp),容器怎么知道这个Web应用的名/上下文呢?

这就取决于你的容器了。在Tomcat中,War文件的文件名就会成为Web应用的名字!假设你把BeerApp部署为tomcat/webapps/BeerApp之下一个正常的目录结构。要把它部署为一个War文件,需要压缩BeerApp目录中的所有内容(不过,不包括BeerApp目录本身),然后把得到的Jar文件命名为BeerApp.war。接下来将BeerApp.war文件放在tomcat/webapps目录中。Tomcat会解开War,使用War文件名创建Web应用上下文目录

在WAR文件中,可以声明库依赖性。在一个WAR文件中,可以在META-INF/MANIFEST.MF文件中声明库依赖性,这样在部署时就能检查容器能否找到应用依赖的包和类

部署后的WAR文件的样子如下:


使静态内容和JSP可以直接访问

部署静态HTML和JSP时,可以选择是否允许从Web应用外部直接访问。只要把文件放在WEB-INF下就能避免直接访问,或者如果应用部署为一个WAR文件,可以把不允许直接访问的文件放在META-INF下。


servlet映射



servlet映射可能是“假的”

servlet映射中的URL模式可能完全是假的(所以有的时候扫描就木得用了,因为都是同一个页面)。


有关servlet映射的重要规则

(1)容器首先查找完全匹配,再找目录匹配,再是拓展名匹配
(2)如果一个请求与多个目录<url-pattern>匹配,容器会选择最长的匹配。换句话说,如果请求/foo/bar/myStuff.do,它就会映射到 /foo/bar/ * 而不会映射到 /foo/ * 。


DD中配置欢迎文件

注意不能以斜线开头(从第一个开始,如果第一个没找到就找第二个,依此类推):

不仅仅对根目录而言!


在DD中配置错误页面

注意:必须使用完全限定名(java.lang.Exception)


在DD中配置servlet初始化

目的是:部署的时候将servlet初始化完成,可以随时调用service方法

还需要注意的(优先级):


建立一个XML兼容的JSP:JSP文档

稍作了解一下:


EJB有关的DD标记

EJB现在都不怎么用了!因为太重量级了!稍作了解!

注意点:


JNDI的DD标记

没看懂是什么意思!!


mime-mapping的DD标记

建立扩展名(extension)和一个mime类型(mime-type)之间的映射


本章完。这章只是大概的过了一遍!

Head First JSP---随笔九(部署Web应用)相关推荐

  1. web项目打包到上线教程_手把手教你在 IntelliJ IDEA 中部署 Web 项目

    关注 逆锋起笔 学习 资源.工具不用愁 「逆锋起笔」公号读者福利 ☞ 程序员进阶必备资源免费送「21种技术方向!」 ☜本文地址:www.cnblogs.com/deng-cc/p/6416332.ht ...

  2. 如何在 IntelliJ IDEA 中整合 Maven、Tomcat 部署 Web 应用

    如何在 IntelliJ IDEA 中整合 Maven.Tomcat 部署 Web 应用 笔者的环境: JDK 11.0.12 Maven 3.6.3 Tomcat 9.0.41(Servlet 4. ...

  3. IntelliJ IDEA 部署 Web 项目,终于搞懂了!

    IntelliJ IDEA 部署 Web 项目,终于搞懂了! 这篇牛逼:Java 程序员必备的 Intellij IDEA 插件 IDEA 中最重要的各种设置项,就是这个 Project Struct ...

  4. 在jboss上部署web应用

    1.JBoss介绍 JBoss完全实现了J2EE的服务栈: EJB (Enterprise JavaBeans) JMS (Java Message Service) JTS/JTA (Java Tr ...

  5. VMware虚拟机安装CentOS6.4、部署web项目全过程(设置固定IP、安装JDK、Tomcat、Redis、部署项目)...

    概述:该篇随笔介绍了在VMware上安装centOS.在centOS上安装JDK.安装Tomcat.安装Redis并部署项目的全过程,虽然参考了很多优秀的文章,但实践.整理.补充都很用心,若要复制粘贴 ...

  6. docker nginx部署web应用_实战docker,编写Dockerfile定制tomcat镜像,实现web应用在线部署...

    最初在tomcat上部署web应用的方式,是通过maven的maven-compiler-plugin插件先打成war包,再将war包复制到tomcat的webapps目录下,后来用上了tomcat7 ...

  7. 支持JSP和Servlet的Web服务器

    支持JSP和Servlet的Web服务器 1.Tomcat 服务器 目前非常流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型.轻量级的支持JSP和Servle ...

  8. 如何在云服务器上部署web项目(CVM)

    在QQ空间中发现了腾讯云的域名1元/年的活动,之前只试过在Windows下用XAMPP部署静态页面以及在Centos中用LNMP部署静态页面,好奇在云主机上部署静态页面.web项目会有什么不同,便点进 ...

  9. 如何Tomcat部署web应用

    本人也是开始学习web部分不久,现在记录下如何在tomcat中部署web资源.以下内容全部都在本人电脑实际运行过. 导语:先了解下tomcat的文件目录: bin–tomcat批处理文件的存放目录 c ...

最新文章

  1. appium 控件定位
  2. 移动应用专项测试思路和方法
  3. Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux
  4. C#教程之自己动手写映射第四节[封装删除]
  5. javafx打包路径问题_关于JavaFX的最常见问题
  6. 家用电脑改成无盘服务器,怎么把自己家电脑硬盘弄成无盘
  7. vsCode切换分支git
  8. Android应用app数据请求捕捉三步走
  9. 浪潮信息能制造超级计算机吗,浪潮信息为中国航天探索事业出力 高性能计算技术领衔...
  10. Sakai的安装使用
  11. 多多客id是什么意思_【拼多多】关于多多客比价行为规范解释说明
  12. 计算机应用软件弹窗消除,怎么去掉电脑弹窗广告?这几种方法教你轻松解决
  13. 总线收发器是干什么的_总线耦合器到底是做什么用的
  14. Unity程序员如何提升自己的能力
  15. 安卓手机+python基于abd命令的自动打卡
  16. 学术-物理-维空间:一维空间
  17. 短时间如何过Java校招
  18. 如何退出SCALA命令界面
  19. 学习笔记-----Material design
  20. 导通压降与死区的开启电压区别

热门文章

  1. 信息安全之仿射密码加密和解密
  2. ZOJ 3700 Ever Dream(模拟)
  3. Golang之envconfig的使用
  4. 日期正则表达式yyyyMMdd
  5. Linux CentOS下如何确认MySQL服务已经启动
  6. 如何让JAVA程序实现一段时间等待
  7. Android Studio打包程序时出现transformClassesWithDexForRelease错误
  8. net use命令详解
  9. j2ee之存储过程调用
  10. 轻松玩转jquery。