我是 Java-Servlets 的新手(来自 PHP-Zend),我面临一些获取静态内容(如 js、css、...)的问题。
所以首先这里是项目的文件夹结构:
com.a.b.c.servlet
bin
com
...
LoginServlet.class
ResourceServlet.class
resources
languages
templates
login.html
static
css
style.css
js
script.js
src
com
...
LoginServlet.java
ResourceServlet.java
WebContent
META-INF
WEB-INF
首先,我编写了一个 Resource Servlet 来获取像这样的静态内容......
InputStreamReader resource = new InputStreamReader(getServletContext().getResourceAsStream("/WEB-INF/resources/static" + request.getPathInfo()), "UTF-8");
OutputStream out = response.getOutputStream();
for ( int c; ( c = resource.read() ) != -1; )
out.write(c);
}
...但是我在图像方面遇到了一些问题,所以我寻找了最佳实践并发现了这一点:
https://stackoverflow.com/a/2129960/363323
选项 3 对我来说似乎是一个不错的选择,所以我已将此行添加到我的 web.xml(并删除了 ResourceServlet 映射)
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ResourceServlet</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
但是资源没有加载......我尝试了几个路径,比如
<link rel="stylesheet" href="static/css/style.css" />
<link rel="stylesheet" href="css/style.css" />
并将静态文件夹放在不同的地方....
任何想法?