Tomcat中JSP无法访问图片,求不改代码及图片位置的解决方案
解决办法
问题根源是你JSP里的图片路径/images/common/logo.jpg是服务器根目录相对路径,浏览器会直接请求http://localhost:8080/images/common/logo.jpg,但你的应用部署在sfeaapp上下文路径下,实际图片的正确路径是http://localhost:8080/sfeaapp/images/common/logo.jpg,所以导致加载失败。以下是无需修改JSP代码和图片位置的解决办法:
方法1:将应用设置为Tomcat根上下文
- 直接把Tomcat
webapps目录下的sfeaapp文件夹(或war包)重命名为ROOT,这样访问http://localhost:8080/就会指向你的应用,此时/images/common/logo.jpg会自动匹配到webapps/ROOT/images/common/logo.jpg,图片就能正常加载。 - 或者修改Tomcat的
conf/server.xml,添加上下文配置(需重启Tomcat生效):<Context path="" docBase="C:\Users\jl.lmnchr.rsp\redhat-community-server-connector\runtimes\installations\tomcat-9.0.41\apache-tomcat-9.0.41\webapps\sfeaapp" reloadable="true"/>
方法2:配置Tomcat URL重写规则
- 在你的应用
WEB-INF目录下创建rewrite.config文件,添加以下规则:RewriteCond %{REQUEST_URI} ^/images/(.*)$ RewriteRule ^/images/(.*)$ /sfeaapp/images/$1 [L] - 在
WEB-INF/web.xml中添加URL重写过滤器配置:
配置完成后,Tomcat会自动将根目录下的<filter> <filter-name>RewriteFilter</filter-name> <filter-class>org.apache.catalina.filters.RewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>RewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>/images/请求重定向到sfeaapp上下文对应的路径,无需修改原有代码。
内容的提问来源于stack exchange,提问作者JLLMNCHR
相关产品推荐
相关产品推荐

