原因分析和解决思路

为什么在模板引擎(JSP,ThemyLeaf等等)上不能正常显示本地图片?

  因为在模板引擎中,你输入的路径名都会在前面默认加上项目路径(localHost:8080/XXX),导致路径错误

  比如你输入的是:C:/test/test1.jpg

  但实际的路径会变成 : localHost:8080/项目名/C:/test/test1.jpg

解决思路

  使用映射路径,自己定义一个路径,把该路径映射到电脑本地路径

SpringBoot+ThymeLeaf显示本地图片

在application.properties中添加路径的映射

例子:

com.jy.localFile=C:/project_image/test/
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/\
, classpath:/static/, classpath:/public/, file:${com.jy.localFile}

就这么简单

com.jy.localFile :

  自定义属性

spring.mvc.static-path-pattern :

  就是springMVC配置前端处理器时的那个<url-pattern>.默认的就是/**,所以此处不写static-path-pattern也没问题

spring.resources.static-locations :

  1).映射的路径, ${com.jy.localFile}前边的那一大串都是SpringBoot默认的配置,必须写上,否则默认配置会被覆盖而失效!

  2).本地磁盘路径前必须加上file: , 表示是指一个具体的硬盘路径, 其他的使用classpath指的是系统环境变量

注意 : 1.修改默认配置的时候会把默认配置直接覆盖,所以在修改时要加上默认配置的内容

   2.properties文件中反斜杠(\)表示连接

前台ThymeLeaf获取本地图片

  th:src="@{/{imageName}(imageName=${session.user.imageName})}"

  用传参的方式避免把${session.user.imageName})原文填入

jsp显示本地图片

通用解决方法:

  在tomcat的server.xml配置文件中,在<host></host>标签中间添上一句

    

<!-- docBase : 磁盘绝对路径,即本地图片存放地址 -->
<!-- path : 虚拟路径, testProject是项目名 -->
<!-- reloadable : 有文件更新时,是否重新加载 -->
<Context docBase="C:\project_image\testProject" path="/testProject/upload" reloadable="true"/>

  注 : 为什么path="/testProject/upload"而不是path="/upload"?(testProject是项目名)

      比如项目地址是 : localhost:8081/testProject

      如果设置为path="/upload",那么图片读取的地址会变为 : localhost:8081/upload/photo.jpg,这个错误地址是读取不到图片的,连项目都进不去.

      如果path="/testProject/upload",则图片读取地址为 : localhost:8081/testProject/upload/photo.jpg,这样才能读取到图片.

  jsp加载图片代码:

      <img src="${pageContext.request.contextPath }/testProject/photo.jpg">

eclipse配置方法:

  eclipse可以不用上边的配置方法,直接在eclipse内配置即可.

  如下图,进入Add External Web Module界面,按照上边设置对应的docBase和path即可.

  

  

jsp引入本地图片的更多相关文章

  1. Vue - 引入本地图片的两种方式

    第一种,只引入单个图片,这种引入方法在异步中引入则会报错. 比如需要遍历出很多图片展示时 <image :src = require('图片的路径') /> 第二种,可引入多个图片,也可引 ...

  2. springmvc+jsp引用本地图片文件

    1.图片文件路径,注意图片文件夹和WEB-INFO文件夹同级 2.web.xml配置 <servlet-mapping> <servlet-name>default</s ...

  3. vue如何动态加载本地图片

    大家好,我是前端队长Daotin,想要获取更多前端精彩内容,关注我(全网同名),解锁前端成长新姿势. 以下正文: 今天遇到一个在vue文件中引入本地图片的问题,于是有了这篇文章. 通常,我们的一个im ...

  4. JSP中<img>标签引用本地图片

    问题描述: jsp页面中<img>标签如何读取本地文件夹中的图片. 问题起因: 由于上传图片至本地文件夹中,图片路径为: D:/upload/file/image/img.jpg 所以将这 ...

  5. vue-cli3项目中全局引入less sass文件 以及使用本地图片在不同地方规则

    第一种直接在main.js中引入,需要声明loader demo: import '!style-loader!css-loader!less-loader!./assets/css/common.l ...

  6. iOS之在webView中引入本地html,image,js,css文件的方法 - sky//////////////////////////////////////ZZZZZZZZZZZZZZZ

    iOS之在webView中引入本地html,image,js,css文件的方法   2014-12-08 20:00:16CSDN-sky_2016-点击数:10292     项目需求 最近开发的项 ...

  7. 富文本编辑器TInyMCE,本地图片上传(Image Upload)

    TinyMCE 官网 (类似:百度的富文本web编辑器UEditor) 第一步 下载 TinyMCE,解压后放入工程,在需要的HTML页面引入tinymce.min.js. 第二步 下载tinyMCE ...

  8. Nodejs Express下引入本地文件的方法

    Express的结构如下: |---node_modules------用于安装本地模块.     |---public------------用于存放用户可以下载到的文件,比如图片.脚本文件.样式表 ...

  9. .net mvc4 利用 kindeditor 上传本地图片

    http://blog.csdn.net/ycwol/article/details/41824371?utm_source=tuicool&utm_medium=referral 最近在用k ...

随机推荐

  1. linux中修改字符编码

    一. ubuntu修改字符编码 1. 添加字符编码,例如zh_CN.UTF-8,有两种方式 方法1:locale-gen zh_CN.UTF-8   #locale-gen命令只在ubuntu中才有 ...

  2. 机器学习入门04 - 使用TensorFlow的起始步骤 (First Steps with TensorFlow)

    原文链接:https://developers.google.com/machine-learning/crash-course/first-steps-with-tensorflow/ 1- 工具包 ...

  3. 机器学习基石笔记:02 Learning to Answer Yes/No、PLA、PA

    原文地址:https://www.jianshu.com/p/ed0aee74523f 一.Perceptron Learning Algorithm (一)算法原理 PLA本质是二元线性分类算法,即 ...

  4. 推荐:7 月份值得一看的 Java 技术干货!

    月底了,又到了我们总结这一个月 Java 技术干货的时候了,又到了我们给粉丝免费送书的日子了. 7 月份干货总结 Oracle 发布了一个全栈虚拟机 GraalVM 一文带你深入拆解 Java 虚拟机 ...

  5. SpringBoot整合Mybatis完整版

    喜欢的朋友可以关注下,粉丝也缺. 自从Spring推出Boot,Cloud系列之后,一度成为热门的框架,现在大部分的招聘要求都要有相关的开发经验,借此我在这里就给大家分享一下如何玩转SpringBoo ...

  6. Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)

    1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...

  7. Java并发编程之AQS

    一.什么是AQS AQS(AbstractQueuedSynchronize:队列同步器)是用来构建锁或者其他同步组件的基础框架,很多同步类都是在它的基础上实现的,比如常用的ReentrantLock ...

  8. Leetcode 1-10

    这篇文章介绍Leetcode1到10题的解决思路和相关代码. 1. Two sum 问题描述:给定一个整数数组,返回两个数字的索引,使它们加起来等于一个特定的目标. 例子: Given nums = ...

  9. 【原创】c++拷贝初始化和直接初始化的底层区别

    说明:如果看不懂的童鞋,可以直接跳到最后看总结,再回头看上文内容,如有不对,请指出~ 环境:visual studio 2013(编译器优化关闭) 源代码 下面的源代码修改自http://blog.c ...

  10. CSS实例详解:Flex布局

    本文由云+社区发表 本文将通过三个简单的实例,实际应用上篇文章的基础理论知识,展示下Flex布局是如何解决CSS布局问题. 一.垂直居中 这里同时用非flex布局和flex布局两种方式来实现,可以对比 ...