关于根目录下jsp可执行子目录下jsp执行错误的问题总结
- 2021-01-26
- 1022
- 飞驰的心
这个问题根源是我的洁癖引起;我一直以来对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环境基础,最终解决问题;
也不知道是不是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}}条{{rs.Msg_Content}}