网际飞扬

还记得年少时的梦么,醒不过来 便信以为真……

主题背景
本网站首发版本创建于1999年4月
网际飞扬
手机网站二维码

请使用手机扫描二维码,登录网站手机版。

关于根目录下jsp可执行子目录下jsp执行错误的问题总结

  • 2021-01-26
  • 926
  • 飞驰的心
  • 0
这个问题根源是我的洁癖引起;我一直以来对tomcat部署网站的方式非常嗤之以鼻;

也不知道是不是java行业的遗传病,90%以上的java程序员都把项目当成一个文件夹部署到tomcat下,以后每增加一个项目就增加一个文件夹,上线以后的形态例如——

http://www.abc.com:8080/项目A/
http://www.abc.com:8080/项目B/
http://www.abc.com:8080/项目C/

我对这种神仙操作简直是无力吐槽,这样部署项目的弊端显而易见,每个项目都是虚拟目录,一旦一个项目有漏洞,黑客就会用最优雅的姿势遍历你全部项目路径,简直就是一窝端。

有有些人是这样部署项目:
http://www.abc.com:8081/
http://www.abc.com:8082/
http://www.abc.com:8083/
这种部署方案相比第一种安全了很多,至少每个项目做了隔离,黑客要通过黑一个项目而端锅走人,显然麻烦了点。但暴露的这一串端口号,看着就跟西装革履,一抬脚下面穿个运动白袜子一样尴尬。


有着优良IDC运营经验的我,部署项目从来都秉承:安全、稳健、美观的原则部署,所以我是这么部署的:
http://mail.abc.com/
http://news.abc.com/
http://music.abc.com/

在iis下这么部署很方便,这叫主机头;这么部署的好处是通过域名严格区分每个项目的边界;对百度搜索、网络安全都有非常重要的意义;
tomcat下这么部署其实也很方便,但是需要手工修改server.xml这个配置文件;每个标签代表一个站点,开多个站点就复制多个标签就好;




今天干活儿遇到的问题就是不小心把appbase和docbase属性写成了路径,导致子目录下的jsp解析出现故障(根目录下正常)究其原因就是子目录下的jsp找不到WEB-INF下的class嘛。


appBase 的作用是为你的项目取一个名字,简单地说:你的项目jsp在tomcat这个大容器下编译运行之前,tomcat得给你划一块空间,这就是空间的名字;例如:你给名字取成—— hello,实际编辑后的路径形态是——

/hello/index.jsp
/hello/music/index.jsp
/hello/WEB-INF/classes

这个形态是不是有点安卓文件夹的影子了?上面tomcat的host标签,我不小心把appbase也写成了路径而导致子目录以下的jsp无法返回根目录去查询web-inf;

改好以后一切正常;这个天坑都是因为一大早迷迷糊糊配置tomcat时候引起的;折腾了一天,问了无数人都没有结果(以为他们从来就不按规范部署项目,所以根本遇不到这个坑),被迫复习了一天java环境基础,最终解决问题;



本博客所有内容均为原创,原则上我不希望你转载。如特别喜欢而转载的话,请务必注明出处“网际飞扬 http://www.fayo.net” 否则本人闲来无事可能会把你误当成维权的靶子。

评论

验证码

全部评论

共{{commentCount}}条
  • {{i+1}}楼
    {{rs.Msg_Sender}}{{rs.Msg_Datetime}}

    {{rs.Msg_Content}}

0
播放器封面
  • 宠物精灵