Jakarta ee 默认servlet的静态资源路径
我对来自PHPzend的Java servlet还不熟悉,我在获取静态内容(如js、css等)时遇到了一些问题 首先,这里是项目的文件夹结构:Jakarta ee 默认servlet的静态资源路径,jakarta-ee,servlets,Jakarta Ee,Servlets,我对来自PHPzend的Java servlet还不熟悉,我在获取静态内容(如js、css等)时遇到了一些问题 首先,这里是项目的文件夹结构: com.a.b.c.servlet bin com ... LoginServlet.class ResourceServlet.class resources languages templates lo
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
首先,我编写了一个资源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);
}
。。。但我在图像方面遇到了一些问题,因此我寻找了最佳实践,并发现:
选项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" />
并将静态文件夹放在不同的位置
有什么想法吗?为什么要编写一个servlet来服务静态资源?你为什么不直接将静态资源放在WebContent中,从而直接放在部署的应用程序中呢?不幸的是,我没有尝试这个文件夹。。。thx,这就是解决方案