请教下将css、js、image等静态文件放到WEB-INF目录下访问处理问题

界面统一由美设计好拿来就用,因为界面UI也是放到WEB-INF/admin目录下的,不想再去调整css、js、image等静态存放位置,减少一些没意义的工作,所以统一将这些静态资源和UI界面到WEB-INF的admin目录下,最终的目录效果如下:
/WEB-INF/admin/css
/WEB-INF/admin/js
/WEB-INF/admin/image
这样的话后,怎样映射好这些静态资源的目录呢?如果不做处理前端是无法访问这些静态资源。

评论区

JFinal

2017-04-09 15:46

css js png jpg 这类资源文件,由浏览器发起请求,由 tomcat、jetty、nginx 这类进程直接接管,类似于 jfinal、Struts、spring mvc 框架都不会去干预

而 WEB-INF 目录下面由于有 jar 包、配置文件等需要被保护的文件,所以 tomcat、jetty 这类 java web 容器天然禁止对 WEB-INF 之下一切资源的访问

因此, css、js 这类文件生来就不应该被放在 WEB-INF 之下,这个是由很久以前的 java web 规范决定的

如果一定要放在 WEB-INF 之下,需要添加 Filter 接管这类资源的请求,然后象 tomcat、jetty 一样将这类资源的内容自行加载并响应给客户端,相当于是自找麻烦

EATI001

2017-04-09 16:03

@JFinal spring 有个静态资源如:
mvc:resourcesmapping="/css/**"location="/WEB-INF/admin/css/"
mvc:resourcesmapping="/image/**"location="/WEB-INF/admin/image/"
挺实用的,这个用咱们JFinal要实现,能否给些代码参考不呢?

EATI001

2017-04-09 16:05

对不想分离UI界面和静态资源的目录,是很有用的。

JFinal

2017-04-09 16:15

@EATI001 前端有 nginx 的话,麻烦会更多,nginx 会接管静态请求,请求根本到不了 tomcat、jetty,如果将 nginx 的 root 配置指向 WEB-INF,那么其下的 jar 包与配置文件也暴露了,还需要额外配置对这些文件的禁用

jfinal 目前只专注处理动态请求,静态资源尽可能不去处理,生产环境下 nginx 接管静态资源已然成了标配

EATI001

2017-04-09 16:38

@JFinal 也是哦。^_^

热门反馈

扫码入社