Tomcat 7 的七大新特性
tomcat概述

tomcat概述Tomcat概述Tomcat是一个开源的Java Servlet容器,由Apache软件基金会开发和维护。
它实现了Java Servlet和JavaServer Pages(JSP)规范,并提供了一个HTTP Web服务器环境,可以让开发人员在其上部署和运行Java Web应用程序。
Tomcat是使用Java语言编写的,因此它可以在任何支持Java虚拟机(JVM)的平台上运行。
Tomcat的特点1. 开源免费:Tomcat是一款完全免费且开源的软件,任何人都可以自由地下载、使用和修改它。
2. 轻量级:Tomcat非常轻量级,只需要很少的系统资源就可以运行,并且它非常容易安装和配置。
3. 易于扩展:Tomcat提供了很多可定制的选项,使得开发人员可以根据自己的需要扩展和定制Tomcat的功能。
4. 稳定可靠:由于Tomcat经过了长时间的测试和改进,因此它非常稳定可靠,并且能够处理大量并发请求。
5. 安全性高:Tomcat提供了很多安全性选项,包括SSL/TLS加密、访问控制、认证等等,使得Web应用程序更加安全可靠。
6. 跨平台性强:由于Tomcat是使用Java语言编写的,因此它可以在任何支持Java虚拟机(JVM)的平台上运行,包括Windows、Linux、Mac OS等等。
Tomcat的架构Tomcat的架构分为三个层次:1. Web层:Web层是Tomcat最外层的一层,它负责处理HTTP请求和响应,并将请求转发给下一层进行处理。
2. Servlet/JSP容器层:Servlet/JSP容器层是Tomcat中间的一层,它负责管理Servlet和JSP组件,并将它们编译成可执行代码。
此外,Servlet/JSP容器还负责管理会话、Cookie、请求转发等功能。
3. 连接器/底层服务层:连接器/底层服务层是Tomcat最底部的一层,它负责处理网络连接和数据传输。
连接器/底层服务可以使用不同的协议来处理网络连接,比如HTTP、HTTPS、AJP等等。
CA Clarity

Studio 内容管理 ........................................................................................................................................................11 Microsoft Project Interface ........................................................................................................................................11 与 VersionOne 集成 ...................................................................................................................................................12 智能部分 .................................................................................................................................................................... 12 Apache Tomcat 日志分析..........................................................................................................................................13
tomcat版本区别

Tomcat 6.x 在目录结构上就是针对lib包的存放位置做了调整,使应用部署更加方便。另外:
Tomcat 6.x中endorsed 从CATALINA_HOME/common移到根目录下了CATALINA_HOME\endorsed 至于其它没有太大的变化。
另外需要说明的是tomcat 5.x有目录CATALINA_HOME\conf\Catalina\localhost
在Tomcat 6.x中该目录是空的就没给你建,你可以自己建。有好几个朋友问我这个问题了,这里给你提*****************************************
Tomcat 5.x
Tomcat 5.x 基于Tomcat 3.x,Tomcat 4.x,遵循新的servlet2.4、jsp2.0规范。他最大的特点就是支持JDK5.0。Tomcat 5.x 是个总结、改进版本,因为有了3.x,4.x作基础,加上使用JDK5.0,使Tomcat在性能上有了突飞猛进的发展,备受大家欢迎。
Tomcat 6.x
Tomcat 6.x是目前的最新版本了。遵循新的servlet2.5、jsp2.1。该版本增加了很多新特性。主要有:
高级的IO功能:采用APR或NIO HTTP连接进行异步IO操作
组件功能:可以使用ant -f extras.xml的方式为tomcat添加新的组件。
另外一个我感觉变化很大的是Tomcat 6.x目录发生了很的变化,lib 目录都集中到一起放在跟目录下,jar包也简洁多了(从数量上^_^)
********************************************************************
Tomcat7.0启动报错java.lang.NoClassDefFoundError orgapachejuliloggingLogFactory

Tomcat无法启动,报错ng.NoClassDefFoundError:org/apache/juli/logging/LogFactory前面一段时间看到Tomcat7.0发布了几个测试版,由于没有稳定,也就没有测试了,今天看到新闻,看到Tomcat7.0正式版已经发布了,到官网上下载下来,看看效果如何。
下面列出Tomcat 7的一些新特性介绍:◆Tomcat 7完全支持Servlet 3.0规范◆Tomcat 7新增了对Java注释的支持◆Tomcat 7通过web.xml动态配置引用类库的功能◆Tomcat 7改进了安全回话的跟踪◆Tomcat 7改进了关系服务时候的功能,让关闭时的地址可以配置◆Tomcat 7改进了启动类,目前Tomcat 7启动过程无须任何配置文件◆Tomcat 7新增了配置参数,可以配置Tomcat 7的执行队列超时时间,和执行大大小限制… …新特性带来的是方便和更好地支持Java新特性。
感觉Tomcat7 对Servlet3.0的支持和Java Annotaion的支持是应现在流行0配置或尽量减少配置文件的需要,Servlet3.0 的到来,感觉最深地是带来直接在code level 直接Annotation即可配置一个Servlet,并不需要以前的在web.xml下配置了。
下载Tomcat7.0后,和MyEclipse进行整合,MyEclipse配置Tomcat7.0如下图发现在启动的时候报了一个错误ng.NoClassDefFoundError: org/apache/juli/logging/LogFactoryatorg.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:55) Caused by: ng.ClassNotFoundException:org.apache.juli.logging.LogFactoryat .URLClassLoader$1.run(URLClassLoader.java:202)at java.security.AccessController.doPrivileged(Native Method)at .URLClassLoader.findClass(URLClassLoader.java:190)at ng.ClassLoader.loadClass(ClassLoader.java:307)at uncher$AppClassLoader.loadClass(Launcher.java:301) at ng.ClassLoader.loadClass(ClassLoader.java:248)... 1 moreException in thread "main"到网上搜索了一下,比较好解决,有个网址/programming-world/java-lang-noclassdeffounderror-orga pachejulilogginglogfactory-at-org-apache-catalina-startup-bootstrap上说Solutions1. In Eclipse, Open the “Server” tab.2. Double click on the “Tomcat6″ entry to see the configuration.3. Then click on the “Open launch configuration” link in the “General information” block.4. In the dialog, select the “Classpath” tab.5. Click the “Add external jar” button.6. Select the file “/usr/share/tomcat6/bin/tomcat-juli.jar”7. Close the dialog.8. Start tomcat 6 from Eclipse.实际上,就是把bin/tomcat-juli.jar 下add tomcat classpath下,效果如下:重新启动Tomcat7.0,发现启动成功。
tomcat 作用

tomcat 作用Tomcat是一个流行的开源的Java Servlet容器,它主要用于将java代码运行在服务器上。
它是一个轻量级的应用服务器,拥有灵活的配置和管理方式,使得开发者可以很容易地部署、管理和扩展Java Web应用程序。
首先,Tomcat作为一个Servlet容器,它能够处理和执行Servlet和JSP(Java Server Pages)的代码。
Servlet是一个Java类,用于处理HTTP请求和响应,并且可以动态地生成HTML内容。
通过Tomcat,开发者可以在服务器上运行和管理Servlet,使得他们可以创建动态的Web应用程序,如社交媒体平台、电子商务网站等。
此外,Tomcat还具有良好的性能和可靠性。
它采用了线程池和连接池等技术,使得它可以处理大量并发的请求,并且能够有效地管理内存和资源。
此外,Tomcat还支持负载均衡和集群技术,使得多个Tomcat服务器可以协同工作,提供更高的性能和可用性。
Tomcat还提供了一种安全的访问控制机制,可以保护Web应用程序免受未经授权的访问和攻击。
它提供了基于用户角色(role-based)的访问控制,可以限制用户对资源的访问权限,并且可以通过SSL/TLS协议实现安全的通信。
另外,Tomcat还提供了一些其他的功能和工具,使得开发者可以更方便地进行开发和调试。
例如,它可以与Eclipse和IntelliJ等集成开发环境(IDE)一起使用,方便开发者编写和调试Java Web应用程序。
此外,Tomcat还支持JMX(Java Management Extensions)技术,使得管理员可以监控和管理Tomcat服务器的运行状态。
总结来说,Tomcat是一个功能强大且灵活的Java Servlet容器,它提供了一种方便的方式来部署、管理和扩展Java Web应用程序。
它具有良好的性能和可靠性,支持安全的访问控制,同时还提供了丰富的开发和调试工具。
记一次tomcat7.0版本启动项目失败问题

记⼀次tomcat7.0版本启动项⽬失败问题测试项⽬在tomcat7中启动失败,报错如下:@794314bc3Error during job execution (jobs.Bootstrap)Oops: VerifyError~ play.Logger.niceThrowable(Logger.java:570) ~ play ~ 35845play.exceptions.UnexpectedException: Unexpected Errorat play.Invoker$Invocation.onException(Invoker.java:244)at play.jobs.Job.onException(Job.java:124)at play.jobs.Job.call(Job.java:163)at Invocation.Job(Play!)Caused by: ng.VerifyError: Expecting a stack map frameException Details:Location:controllers/payment/PaymentBaseAction.check()V @23: nopReason:Expected stackmap frame at this location.Bytecode:0000000: b804 1c00 b801 8c9a 00121301 8e03 bd000000010: 6bb8 0190 a700 c700 b1b8 0192 b800 794b0000020: 1304 152a b804 1700 2ab6 009e 3c13 04180000030: 1bb8 041a 001b aa00 00000097000000000000040: 00000004000000220000 007f 000000850000050: 0000 008b 00000091 2a4d 014e 2c13 02a20000060: 1302 a413 02a6 b802 aac0 004f 4e2d b8000000070: 4999 003e 2a4d 033e 2c13 02ab 1302 ac130000080: 02ae b802 b0c0 0141 b602 b33e 1d99 00220000090: 2a4d 014e 2c13 02b4 1302 b513 02b7 b80200000a0: b9c0 004f 4e2d b800 22990006 b800 acb800000b0: 00af a700 1bb8 00b2 a700 15b8 00b5 a70000000c0: 0fb8 00b8 a700 09b8 00bb a700 03a7 000e00000d0: 3a06 013a 05b8 041e 1906 bf01 3a05 b80400000e0: 20b1Exception Handler Table:bci [0, 208] => handler: 208Stackmap Table:same_frame(@25)append_frame(@88,Object[#122])chop_frame(@175,1)same_frame(@181)same_frame(@187)same_frame(@193)same_frame(@199)same_frame(@205)same_locals_1_stack_item_frame(@208,Object[#978])same_frame(@219)at payment.PaymentProxy.init(PaymentProxy.java:60)at jobs.Bootstrap.initPayment(Bootstrap.java:64)at jobs.Bootstrap.doJob(Bootstrap.java:54)at play.jobs.Job.doJobWithResult(Job.java:50)at play.jobs.Job.call(Job.java:146)... 1more原因:jvm验证时出了错误:显⽰字节码错误:⽹上的解释是因为引⼊版本为51的字节码规范,使⽤了严格的类型检查器,任何⼯具修改了字节码的,都需要更新stackmap,但是jws修改了字节码,⽽没有更新 stackmap使⽤了即java的新特性,所以使⽤较⾼的版本进⾏编译时就会报这个错。
【每日一步】Tomcat7的七大特性新特性与增强功能

Tom cat 7的七大特性:新特性与增强功能作者:Avneet Mangat1. 使用随机数令牌(nonce)来阻止跨站请求伪造(CSRF)攻击Webopedia(在线计算机字典)这样定义跨站请求伪造(CSRF):“一种恶意攻击基于web的应用程序。
一次典型的恶意攻击将迫使用户在登录可信任站点的时候执行一些不必要的操作。
”对CSRF更形象的定义是session riding(子乌注:好吧,这个“更形象”的定义我实在看不懂……可参看session riding)。
阻止CSRF的典型做法就是使用随机数令牌,在wikipedia中对它的定义是“一个用于认证协议的随机或伪随机数,以确保老的通信不会在重播攻击中被复用。
”Tom cat 7 有一个servlet过滤器,用于在每次提交请求之后在用户的会话中保存一个随机数令牌。
这个随机数令牌必须添加到后续的每一个请求中做为一个请求参数。
这个servlet过滤器会检测这个请求参数是否与存储于用户会话中的随机数令牌一致。
如果一致,请求就只能是来自指定站点。
如果不同,这个请求会被认为是来自不同的站点并被拒绝。
servlet过滤器非常简单。
这里有一个相关源码(来自Apache Software Foundation CsrfPreventionFilter 文档)的片断:Language: Javapublic class CsrfPreventionFilter extends FilterBase {.........public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {.........String previousNonce = req.getParam eter(Constants.CSRF_NONCE_REQUEST_PARAM);String expectedNonce =(String) req.getSession(true).getAttribute(Constants.CSRF_NONCE_SESSION_ATTR_NAME );if (expectedNonce != null && !expec tedNonce.equals(previousNonce)) {res.sendError(HttpServletResponse.SC_FORBIDDEN);return;}String newNonce = generateNonce();req.getSession(true).setAttribute(Constants.CSRF_NONCE_SESSION_ATTR_NAME, newNonce);.........所以每个URL都必须包含一个从用户会话中获取的随机数令牌。
软件使用说明书

软件使⽤说明书软件使⽤说明书题⽬:基于java的宅急送系统学院:数据科学与软件⼯程学院专业:软件⼯程(服务外包)姓名:熊鸿瀚指导教师:杜娜摘要随着都市化⽣活节奏的加快,许多上班族没有时间外出就餐,⽽外卖则成了他们的⾸选。
我国外卖市场⼴阔,⽤户需求⾜够强,⽤户黏度够⾼,同时能给商家带来低固定成本的额外收⼊。
⼀到午饭时间,在各⼤写字楼⾥,都能看到送餐者的⾝影。
事实上,“叫外卖”如今已成为众多消费者,尤其是年轻上班族习以为常的餐饮⽅式。
同时“叫外卖”不仅受上班族的青睐,每逢节假⽇,也有不少⼈在家⾥等⼈送餐上门,另外还有⼀些茶馆、服装店等服务⾏业,由于⼯作需要,也经常叫外卖。
⽽对校园⾥的⼤学⽣来说,⽤APP点外卖是既能省去到饭堂排队的时间,⼜菜式选择多样,价格优惠的点餐⽅式。
究其根本,外卖这个事情切中⼈性“懒惰”的需求。
关键词⽣活节奏、叫外卖、价格优惠⽬录软件使⽤说明书............................................................. 1摘要..................................................................... 2⽬录....................................................................... 31 绪论................................................................... 5Abstract ................................................................... 52 系统的开发环境........................................................... 62.1 系统开发环境...................................................... 62.2 对技术⽅法的总结.................................................. 63 系统总体设计............................................................. 73.1 总体功能模块....................................................... 73.2管理员的功能模块................................................... 73.3⽤户的功能模块..................................................... 83.4系统业务描述....................................................... 93.5程序流程图....................................................... 104系统详细设计与实现..................................................... 114.1系统和数据库的配置............................................... 114.2概念模型设计..................................................... 114.3平台数据表的设计................................................. 125系统功能实现........................................................... 155.1程序的时序图..................................................... 155.1.1餐饮模块时序图.............................................. 155.1.2分类模块时序图.............................................. 165.1.3公告模块时序图.............................................. 175.1.4⽤户模块时序图.............................................. 185.2系统功能实现的主要框架........................................... 185.2 SSH框架..................................................... 185.3系统功能实现的主要模块........................................... 195.3.1 管理员登录页⾯.............................................. 195.3.2 公告管理页⾯................................................ 205.3.3 餐饮管理页⾯................................................ 205.3.4 订单管理页⾯................................................ 215.3.5 留⾔管理页⾯................................................ 225.3.6 会员管理页⾯................................................ 226系统的调试与测试....................................................... 226.1软件测试的⽬的................................................... 226.2软件测试的任务................................................... 236.3测试环境......................................................... 236.4测试计划与结果................................................... 24结束语................................................................... 24致谢..................................................................... 251 绪论民以⾷为天,中国的第三产业在经济危机中独树⼀帜出现了⼤逆转,提升速度也是⾮常的惊⼈,餐饮⾏业也出现了各种模式的经营,为了⽅便⾜不出户就能享受到美⾷的⾷客来说,⽹络订餐⽆疑是最直接的选择。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Tomcat的7引入了许多新功能,并对现有功能进行了增强。
很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们,或指出它们的不足,或提供代码示例。
本文将明确描述TOMCAT 7中七个最显著的特征和新增的功能,并对其作出评论,而不是仅仅列出新的功能。
本文还提供了代码例子以方便你可以对其有更好的理解。
本文分为两个部分,分别是”TOMCAT 7的新特性”和“TOMCAT 7增强的功能“。
TOMCAT 7新特性1 使用随机数去防止跨站脚本攻击。
2 改变了安全认证中的jessionid的机制,防止session攻击。
3 内存泄露的侦测和防止4 在war文件外使用别名去存储静态内容。
TOMCAT 7的增强功能5 对Servlet 3.0,JSP 2.2和JSP-EL 2。
2的支持6 更容易将Tomcat内嵌到应用去中去,比如JBoss7 异步日志记录根据Mark Thomas,Tomcat 7委员会的经理的说法,Tomcat 7最显著的三个特征是Servlet 3.0,内存检测泄露和增强的安全特性。
Tomcat 7的例子程序中,包含了Eclipse的工程文件和Ant的构建文件,以方便去构建war文件。
其中Eclipse工程文件有例子代码描述了Tomcat 7的一些新特性。
下面逐一开始介绍。
TOMCAT 7新特性1、使用随机数去防止跨站请求伪造攻击。
Wikipedia将跨站请求伪造攻击(Cross Site Request forgery,CSRF)定义为:“一种影响Web应用的恶意攻击。
CSRF让用户当进入一个可信任的网页时,被强行执行恶意代码。
经典的防止CSRF攻击的方法是使用随机数的方式,Wikipedia中定义为“利用随机或伪随机数嵌入到认证协议中,以确保旧的不能在以后的重放攻击中被利用。
”Tomcat 7中有一个servlet过滤器,用于将随机数存储在用户每次请求处理后的seesion会话中。
这个随机数,必须作为每次请求中的一个参数。
Servlet 过滤器然后检查在请求中的这个随机数是否与存储在用户session中的随机数是一样的。
如果它们是相同的,该请求是判断来自指定的网站。
如果它们是不同的,该请求被认为是从其他网站发出并且会被拒绝。
这个servlet过滤器是十分简单的,下面是从TOMCAT 源代码CsrfPreventionFilter文档中摘录的片段:Java代码1.public class CsrfPreventionFilter extends FilterBase {2.3.public void doFilter(ServletRequest request, ServletResponse response,4.FilterChain chain) throws IOException, ServletException {5.6.String previousNonce = req.getParameter(Constants.CSRF_NONCE_REQUEST_PARAM);7.String expectedNonce = (String) req.getSession(true).getAttribute(Constants.CSRF_NONCE_SESSION_ATTR_NAME);8.9.if (expectedNonce != null && !expectedNonce.equals(previousNonce)) {10.res.sendError(HttpServletResponse.SC_FORBIDDEN);11.return;12.}13.14.String newNonce = generateNonce();15.req.getSession(true).setAttribute(Constants.CSRF_NONCE_SESSION_ATTR_NAME, newNonce);所以每个URL地址中都有一个从用户session中提取的随机数,下面是使用的JSTL例子:在以前,JSTL中构造链接可以这样:< c:url var="url" value="/show" >< c:param name="id" value="0" / >< /c:url >< a href="${show}" >Show< /a >而现在可以这样:< c:url var="url" value="/show" >< c:param name="id" value="0" / >< c:param name="org.apache.catalina.filters.CSRF_NONCE"value="${.apache.catalina.filters.CSRF_NONCE}" / >< /c:url >具体的例子可以参考TOMCAT 7自带例子中的演示,这个过滤器可以在web.xml中进行配置,配置后,所有访问如http://localhost:8080/tomcat7demo/csrf/的都必须带上参数,不带上参数的话会出现403禁止访问错误。
当然这种方法的缺点就是所有的链接都必须带上这个随机数。
2、改变了安全认证中的jessionid的机制,防止session攻击。
Session劫持攻击通常是以下的情况:1 恶意攻击者先访问一个网页,由于cookie是以jsession id的方式存储在浏览器中的,即使攻击者不登陆,他可以伪造一个带有jsession id的地址,把它发给受害者,比如/login?JESSIONID=qwerty)2 受害者点这个带有jsessionid的链接,提示输入验证信息之后就登陆系统。
3 攻击者现在使用这个带jsessionid的链接,以受害者的身份登陆进系统了。
对于攻击者来说,将jsessionid加在url中以及通过一个恶意表单发送出去是很容易的事,对于session劫持攻击的更详细描述,请参考Acros Security 组织的白皮书“Session Fixation Vuln erability in Web-based Applications”。
TOMCAT 7对此的解决方案是一个补丁,它在验证后改变了jsessionid。
这个补丁主要是应用在TOMCAT 7中,当然在TOMCAT 5和6中也可以使用但只是有些不同。
根据Mark Thomas说的,应用了Tomcat 7的这个补丁后:• TOMCAT默认情况下安全性不再变得脆弱,因为验证后会话发生了变化• 如果用户改变了默认设置(比如应用程序不能处理变化了的session id),风险也会降到最小,因为在Servlet 3中,可以禁止在url中进行会话跟踪。
而在TOMCAT 5和TOMCAT 6中,应用了补丁后:• 能阻止session劫持攻击,因为能让TOMCAT在验证后改变session id。
• 如果应用程序不能处理变化了的session id,可以通过写自定义的过滤器去检查request.isRequestedSessionIdFromURL()和其返回的结果,以降低风险。
以上这些改变都是TOMCAT在幕后所做的,开发者根本不用去理会。
3 、内存泄露的侦测和防止开发者在部署他们写的程序到生产环境上时,经常会遇到Pemgen错误:OutOfMemoryError。
这是由于内存泄露而引起的。
通常开发者是通过增大permgen内存的大小去解决或者就是重新启动tomcat。
TOMCAT 7包含了一个新的特性,它通过把不能垃圾回收的引用对象移走的方法,能解决一些Permgen内存泄露的问题。
这个特性对程序员部署应用程序在他们的开发环境中是十分方便的,因为程序员在开发环境中为了节省时间一般不重新启动Tomcat就能部署新的war文件。
在生产环境中,最好的建议还是停掉TOMCAT,然后清除work下面的目录文件并且重新部署应用。
当然,内存泄露检测和防止这个特性现在还不是很完善,还是有的情况TOMCAT不能检测内存泄露和修复之的,所以对于生产环境,最好的的办法还是停掉TOMCAT,然后清除work下面的目录文件并且重新部署应用。
Mark Thomas解析应用程序或者库程序在如下情况下会触发内存泄露:• JDBC驱动的注册• 一些日志框架• 在ThreadLocals中保存了对象但没有删除它们• 启动了线程但没停止而 Java API 存在内存泄漏的地方包括:1.使用 javax.imageio API ( Google Web Toolkit会用到)2.使用 java.beans.Introspector.flushCaches()3.使用 XML 解析器4.使用 RMI 远程方法调用5.从 Jar 文件中读取资源4、在war文件外使用别名去存储静态内容Web应用程序需要静态资源文件,比如象CSS,Javascript和视频文件、图片文件等。
通常都把它们打包放在war文件中,这将增加了WAR文件的大小并且导致很多重复的加载静态资源。
一个比较好的解决方法是使用Apache HTTP服务器去管理这些静态文件资源,下面是一个apache httpd.conf文件的配置摘录:< Directory "/home/avneet/temp/static" >Order allow,denyAllow from all< /Directory >Alias /static "/home/avneet/temp/static"以上的设置,使得访问http://localhost/static时,能访问到放在/home/avneet/temp/static下的资源。
允许使用新的aliases属性,指出静态文件资源的位置,可以通过使用Classloader.getResourceAsStream('/static/...')或者在链接中嵌入的方法让TOMCAT去解析绝对路径,下面是一个在context.xml中配置的例子:< ?xml version="1.0" encoding="UTF-8"? >< Context path="/tomcat7demo"aliases="/static=/home/avneet/temp/static" >< /Context >假设/home/avneet/temp/static这个文件夹存放有一张图片bg.png,如果war文件以tomcat7demo的名字部署,那么可以通过以下三个方式去访问这张图片1 直接访问http://localhost:8080/tomcat7demo/static/bg.png2 在HTML链接中访问:< img src="/tomcat7demo/static/bg.png" / >3 通过JAVA代码访问: ByteArrayInputStream bais = (ByteArrayInputStream)getServletContext().getResourceAsStream("/stati c/bg.png");使用aliases的好处是可以代替Apache的httpd.conf的设置,并且可以在servlet容器范围内访问,并且不需要Apache。