Head First JSP---随笔九(部署Web应用)
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应用)相关推荐
- web项目打包到上线教程_手把手教你在 IntelliJ IDEA 中部署 Web 项目
关注 逆锋起笔 学习 资源.工具不用愁 「逆锋起笔」公号读者福利 ☞ 程序员进阶必备资源免费送「21种技术方向!」 ☜本文地址:www.cnblogs.com/deng-cc/p/6416332.ht ...
- 如何在 IntelliJ IDEA 中整合 Maven、Tomcat 部署 Web 应用
如何在 IntelliJ IDEA 中整合 Maven.Tomcat 部署 Web 应用 笔者的环境: JDK 11.0.12 Maven 3.6.3 Tomcat 9.0.41(Servlet 4. ...
- IntelliJ IDEA 部署 Web 项目,终于搞懂了!
IntelliJ IDEA 部署 Web 项目,终于搞懂了! 这篇牛逼:Java 程序员必备的 Intellij IDEA 插件 IDEA 中最重要的各种设置项,就是这个 Project Struct ...
- 在jboss上部署web应用
1.JBoss介绍 JBoss完全实现了J2EE的服务栈: EJB (Enterprise JavaBeans) JMS (Java Message Service) JTS/JTA (Java Tr ...
- VMware虚拟机安装CentOS6.4、部署web项目全过程(设置固定IP、安装JDK、Tomcat、Redis、部署项目)...
概述:该篇随笔介绍了在VMware上安装centOS.在centOS上安装JDK.安装Tomcat.安装Redis并部署项目的全过程,虽然参考了很多优秀的文章,但实践.整理.补充都很用心,若要复制粘贴 ...
- docker nginx部署web应用_实战docker,编写Dockerfile定制tomcat镜像,实现web应用在线部署...
最初在tomcat上部署web应用的方式,是通过maven的maven-compiler-plugin插件先打成war包,再将war包复制到tomcat的webapps目录下,后来用上了tomcat7 ...
- 支持JSP和Servlet的Web服务器
支持JSP和Servlet的Web服务器 1.Tomcat 服务器 目前非常流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型.轻量级的支持JSP和Servle ...
- 如何在云服务器上部署web项目(CVM)
在QQ空间中发现了腾讯云的域名1元/年的活动,之前只试过在Windows下用XAMPP部署静态页面以及在Centos中用LNMP部署静态页面,好奇在云主机上部署静态页面.web项目会有什么不同,便点进 ...
- 如何Tomcat部署web应用
本人也是开始学习web部分不久,现在记录下如何在tomcat中部署web资源.以下内容全部都在本人电脑实际运行过. 导语:先了解下tomcat的文件目录: bin–tomcat批处理文件的存放目录 c ...
最新文章
- appium 控件定位
- 移动应用专项测试思路和方法
- Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux
- C#教程之自己动手写映射第四节[封装删除]
- javafx打包路径问题_关于JavaFX的最常见问题
- 家用电脑改成无盘服务器,怎么把自己家电脑硬盘弄成无盘
- vsCode切换分支git
- Android应用app数据请求捕捉三步走
- 浪潮信息能制造超级计算机吗,浪潮信息为中国航天探索事业出力 高性能计算技术领衔...
- Sakai的安装使用
- 多多客id是什么意思_【拼多多】关于多多客比价行为规范解释说明
- 计算机应用软件弹窗消除,怎么去掉电脑弹窗广告?这几种方法教你轻松解决
- 总线收发器是干什么的_总线耦合器到底是做什么用的
- Unity程序员如何提升自己的能力
- 安卓手机+python基于abd命令的自动打卡
- 学术-物理-维空间:一维空间
- 短时间如何过Java校招
- 如何退出SCALA命令界面
- 学习笔记-----Material design
- 导通压降与死区的开启电压区别