15.Servlet程序结构与部署
1.JavaEE应用程序结构
组成:Servlet JSP 工具类 第三方jar包,HTML页面(图片、Flash)
部署结构:
JavaEE应用根目录下的资源都是允许客户端访问的(WEB-INF除外) 有时候从安全角度考虑,可以将文件等资源放 在WEB-INF目录下,这样,这些资源对Web服务器是可见的,对客户 端是不可见的
比如一些不希望客户端直接访问的文件和图片资源
2.部署描述符
JavaEE应用的部署描述符(web.xml)描述Servlet容器运行程序所需的信息
是一个XML格式的文档。
首行XML的编码格式建议选用“UTF-8”
<web-app>元素指定了Servlet的版本和文档类型规范(xsd文件)
Servlet映射配置:
将请求发送给Servlet的两个步骤:
Servlet容器先区分请求所属的Web应用
从Web应用查找合适的Servlet来处理请求
Servlet容器将请求的URI解析为3个部分
Request URL
Request URI=ContextPath+ServletPath+PathInfo
使用request.getRequestURI()获得
上下文路径(ContextPath): Web应用的根目录
Servlet路径(ServletPath): 由部署描述符中Servlet映射指定的路径
路径信息(PathInfo): Servlet之后的字符串
HttpServletRequest对象提供:
getContextPath(),getServletPath()和getPathInfo()方法,分别获取上下文路径、Servlet路径和路径信息
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错误页面
3.部署JavaEE应用
在Tomact部署JavaEE应用的方式
方式一:webapps目录:
放入JavaEE应用的目录
放war文件
方式二:修改server.xml文件
方式三:修改context.xml文件
war文件:
同jar的作用类似,将JavaEE应用的资源打包成单独的war文件,方便迁移
Tomcat会自动提取webapps目录下的war文件解压并部署
打包的方法
…/mysite> jar.exe -cvf mysite.war *
使用eclipse
修改serve.xml文件
在server.xml中指
打开server.xml文件,定在Host标签内新建Context<Context path=“/ myapp " reloadable="true" docBase="D:\myapp" workDir="D:\myapp\work"/>其中path是应用虚拟路径,docBase是应用的物理路径,workDir是应用的工作目录
注:删除一个应用同时删除server.xml中相应的Context节点
修改context.xml文件
创建一个context文件
直接在Tomcat的conf\catalina\localhost目录下新建context.xml文件
注:删除一个Web应用同时删除conf\catalina\localhost目录下相应的context.xml文件
Web服务器默认的Web应用
Web服务器通常会维护一个默认的Web应用,用来处理非用户创建的Web应用程序的请求
Tomcat的默认应用:webapps\ROOT
默认的Web应用通常用于测试单个Servlet、JSP或静态内容
访问:http://localhost:8080/
15.Servlet程序结构与部署的更多相关文章
- Tomcat的目录结构及部署应用程序
下载好的二进制的Tomcat,解压会看到7个目录,如下: bin 目录:Tomcat的脚本存放目录,如启动.关闭脚本等.其中 **.bat用于windows平台,**.sh用于Linux平台 conf ...
- NET5实践:项目创建-结构概述-程序运行-发布部署
ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署 1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project ...
- Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】
什么是Serlvet? Servlet其实就是一个遵循Servlet开发的java类.Serlvet是由服务器调用的,运行在服务器端. 为什么要用到Serlvet? 我们编写java程序想要在网上实现 ...
- 部署在sae上的servlet程序出现is not a javax.servlet.Servlet 错误
sae本身提供了servlet jar包, 部署时删掉你lib目录下的servlet jar包.
- 【转】MyEclipse第一个Servlet程序
转自:http://blog.csdn.net/wangdingqiaoit/article/details/7674367 前言 本文旨在帮助学习java web开发的人员,熟悉环境,在Win7系统 ...
- MyEclipse第一个Servlet程序 --解决Win7系统下MyEclipse与Tomcat连接问题
前言 本文旨在帮助学习java web开发的人员,熟悉环境,在Win7系统下运行自己的第一个Servlet程序,因为有时候配置不当或系统原因可能会运行不成功,这给初学者带来了一定烦恼,我也是为此烦恼过 ...
- 快速搞懂.NET 5/.NET Core应用程序的发布部署
.NET Framework时代,.NET 应用程序大多直接部署运行在Windows服务器上,当然也可以通过Mono部署运行在Linux上.无论部署exe,还是IIS站点.或是Windows Serv ...
- C++程序结构---1
C++ 基础教程Beta 版 原作:Juan Soulié 翻译:Jing Xu (aqua) 英文原版 本教程根据Juan Soulie的英文版C++教程翻译并改编. 本版为最新校对版,尚未定稿.如 ...
- 了解ASP.NET5 Web应用程序结构
本文参考ASP.NET5 官方文档 Understanding ASP.NET 5 Web Apps,加入了一些个人理解,理解不对的地方希望大家能指出,互相学习. ASP.NET 5 针对WEB编程引 ...
随机推荐
- 一行代码搞定所有屏幕适配AbViewUtil
适配原理:抛弃google提供的dip理论与多套图片与布局方案,采用与UI设计师通用的px作为标准单位,原理是将UI设计师的设计图与当前查看的手机或其他设备的屏幕像素尺寸进行换算,得到缩放比例,在Ac ...
- css知多少(8)——float上篇(转)
1. 引言 对于我们所有的web前端开发人员,float是或者曾经一度是你最熟悉的陌生人——你离不开它,却整天承受着它所带给你的各种痛苦,你以为它很简单就那么一点知识,但却驾驭不了它各种奇怪的现象. ...
- 将字符串str1复制为字符串str2的三种方法
1.自己编写函数,将两个字符串进行复制 #include<iostream> using namespace std; int main(){ char str1[]="I lo ...
- docker学习(1)docker的安装
原文地址:http://blog.csdn.net/we_shell/article/details/38352837 1. 前言 Docker的英文本意是“搬运工”,在程序员的世界里,Docker搬 ...
- python基本概念——标识符
标识符是用来标识某样东西的名字.在命名标识符的时候,你要遵循这些规则: 标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’). 标识符名称的其他部分可以由字母(大写或小写) ...
- [译]Javascript数列filter方法
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- mysql存取blob类型数据
参考网址:http://www.cnblogs.com/jway1101/p/5815658.html 首先是建表语句,需要实现将表建立好. CREATE TABLE `blobtest` ( `pr ...
- 微信创建带参数二维码,并加上logo
现在需要创建一个场景二维码,除了基础的微信接口创建外,需要加上小logo,思路如下: 1. 首先根据微信的开发文档创建二维码,获取二维码的url,没啥可说的,按照文档来就好了 获取到的二维码就是这么素 ...
- Service Fabric 群集在Service Replica过多的情况下报错问题
首先 Service Fabric 群集是正常的,部署一些服务过后也能正常运行,但一旦部署的服务过多后,且每个服务不止一个Partition,就有可能让群集状态为Error,但其实服务还是在正常运行的 ...
- Failed to export using the options you specified. Please check your options and try again
参考这篇<从ASP.NET传递参数给水晶报表> http://www.cnblogs.com/insus/p/3281114.html 是可以传递参了.但是点击报表的菜单条上的打印图标没 ...