eclipse使用内置tomcat和使用外部tomcat的设置
最近因为项目中jsp发请求要访问项目以外的文件,直接访问写成“c:\xxx\xxx.mp4”来访问是没有权限的,不能完成现有要求。经查询后发现可以在tomcat中配置虚拟目录将本地的文件设置成"http://localhost:8080/xxx.mp4",本地文件经过这样的虚拟映射后就可以在项目中访问了。
上面的思路是非常正确的,但是具体实施起来却遇到了问题,最终经反复启动项目和本机上的tomcat发现,eclipse项目启动时,只是使用了本机上的部分tomcat组件,并没有完全加载tomcat中的全部配置。最简单的验证方法就是,eclipse项目启动后,在浏览器地址上输入http://localhost:8080/prjName可以正常运行项目,但是在浏览器中直接输入http://localhost:8080/却无法看到tomcat的管理页面,这个是非常诡异的。要解决在项目中能够正常使用地址映射的问题就必须要明白,为什么eclipse项目启动后不能访问http://localhost:8080/这个地址。经过搜索后我得到如下解决方案:
用eclipse正常加载了项目之后会有server选项如图:
鼠标左键双击红框,会出现一个配置画面,如图:
eclipse默认是选择的第一个红框中的选项也就是“Use workspace metadata(...)”,这个选项的意思就是,启动项目时eclipse之调用了tomcat的核心组件,内置到eclipse中,启动和部署时跟真正的tomcat没有关系,因此当使用eclipse默认设置时,访问http://localhost:8080/是无法访问的,而访问http://localhost:8080/xxx 自己的项目却能正常访问。
如果想要将启动eclipse项目时使用的tomcat和手动启动机器上的tomcat达到一样的效果,就需要选择上面第二个红框中的选项也就是“Use Tomcat installation(...)”,选用这个选项,启动eclipse后,就可以访问http://localhost:8080/,并且会出现tomcat配置页面,同时,在tomcat中加入的虚拟地址配置都会在项目中起作用。
<script>
(function(){
function setArticleH(btnReadmore,posi){
var winH = $(window).height();
var articleBox = $("div.article_content");
var artH = articleBox.height();
if(artH > winH*posi){
articleBox.css({
'height':winH*posi+'px',
'overflow':'hidden'
})
btnReadmore.click(function(){
articleBox.removeAttr("style");
$(this).parent().remove();
})
}else{
btnReadmore.parent().remove();
}
}
var btnReadmore = $("#btn-readmore");
if(btnReadmore.length>0){
if(currentUserName){
setArticleH(btnReadmore,3);
}else{
setArticleH(btnReadmore,1.2);
}
}
})()
</script>
</article>