Java 如何使用Struts2为静态资源(图像、css等)提供服务?
我是Struts2新手,我只是在寻找一种服务于静态资源(例如图像、javascript文件、css文件等)的方法。例如,以Java 如何使用Struts2为静态资源(图像、css等)提供服务?,java,struts2,tomcat7,Java,Struts2,Tomcat7,我是Struts2新手,我只是在寻找一种服务于静态资源(例如图像、javascript文件、css文件等)的方法。例如,以/assets开头的每个请求都应尝试加载所引用的静态资源 1) 我需要在哪里存储我的图像/js文件等以使其正常工作 2) 我需要如何配置Struts,以便它加载这些文件 该项目将在Tomcat 7上以.WAR的形式运行,静态资源将作为WAR的一部分包含在其中通常您的web服务器直接从文件系统提供这些资源。也就是说,Struts2不是自己做的 如果您提供您正在使用的,也许我们可
/assets
开头的每个请求都应尝试加载所引用的静态资源
1) 我需要在哪里存储我的图像/js文件等以使其正常工作
2) 我需要如何配置Struts,以便它加载这些文件
该项目将在Tomcat 7上以.WAR的形式运行,静态资源将作为WAR的一部分包含在其中通常您的web服务器直接从文件系统提供这些资源。也就是说,Struts2不是自己做的 如果您提供您正在使用的,也许我们可以帮助配置它 例如,如果您在Tomcat7前面使用HTTPD(Apache)web服务器,则会有一个文件夹,HTTPD从中提供文件。也许/var/www/html是某些系统的位置。然后将静态内容放在/var/www/html/assets中 编辑 如果静态资源要在war文件中,您只需构建war并将这些文件放在war文件的根目录中,或者放在从war根目录开始的其他未使用的文件夹结构中 例如,如果您想在上引用图像,则将其my.png放在war文件根目录下的文件夹/assets中 从站点中的任何HTML页面,您都可以通过以下方式引用该图像文件:
<img src="/assets/m.png" .../>
这将使用同一网站上的默认路径。(稍后回答)
很抱歉,因为Java服务器是中间件,所以不应该将资源管理委托给Apache。你不应该把你的资源放在战争的根源上。这不是一个标准的体系结构。
通常,Java web项目应该如下所示(我使用Maven,因为它很棒,所以我也指出它):
src
--主要
--java您是如何部署的?战争文件?谢谢你的编辑。问题是,我不知道战争将在哪个URL上进行。它可能在mysite.com或mysite.com/appName等上。我如何引用这些资产,以便无论WAR在哪个URL上运行,都能加载它们?好吧,这个方法不起作用。我需要将资源打包到与代码其余部分相同的WAR中,我不能将资源单独放在/var/www/html或任何其他目录中。我刚刚测试了这个方法,但是当我尝试显示一个图像时,使用
我得到了没有为动作名abc.jpg映射的动作。
错误页面我确实将资产目录与META-INF和WEB-INF目录一起放在了WAR的根目录中。我将assets目录放在src/main/webapp
目录中,当我从Netbeans构建它时,assets
目录放在war@ClickUpvote我不使用Struts,但在/*
上映射MVC前端控制器是个坏主意。您不希望让它完全覆盖servletcontainer的默认servlet。而是用*.html
或*.do
等替换它。如果你在这方面真的很固执,请继续阅读并@BalusC谢谢,就是这样。将URL更改为.do
解决了这个问题。@BalusC Struts 2中的前端是一个过滤器,FWIW。
src
-- main
-- java <= you put your java sources here
-- resources <= you put your configuration or i18n properties files here
-- webapp <= here is the "web application" code. The front-end...
-- img <= your images
-- js <= your JS
-- css <= your css
-- jsp <= your JSP
-- test
-- etc...
pom.xml