【问题标题】:Not allowed to load local resource: Why?不允许加载本地资源:为什么?
【发布时间】:2017-12-19 03:03:52
【问题描述】:

当请求 main.do 时,它会读取文件夹路径中的文件。然后我们将加载的文件放入 ModelAndView 对象中,并传递给 main.jsp 页面。

Controller.java

@RequestMapping("main.do")
public ModelAndView mainPage(HttpSession session)
{
    ModelAndView mav = new ModelAndView();

    mav.addObject("slideList", aService.readSlideFileList("slide"));
    mav.setViewName("mainPage");

    return mav;
}

Service.java

public List<HashMap<String, Object>> readSlideFileList(String way)
    {
        File dir = new File(path + way + "/");

        if(!dir.isDirectory())
            dir.mkdirs();

        File[] fileList = dir.listFiles();

        //List<String> list = new ArrayList<String>();
        List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
        for (File file : fileList)
        {
            HashMap<String,Object> map = new HashMap<String, Object>();
            if (file.isFile())
            {
                map.put("filePath", file.getName());
                System.out.println("map > " + map);
            }
            list.add(map);
        }
        return list;
    }

当我第一次尝试这个时,我得到了一个类似标题的错误,所以我写了这样的东西:

if (file.isFile())
{
    map.put("filePath", path + way + "/" + file.getName());
    System.out.println("map > " + map);
}

因此,map的结果值为:

map > C:/rachel/slide/"file name"

我尝试手动显示此地图。 (如下图:)

<c:forEach items="${slideList}" var="slideName">
    <div class="swiper-slide">
        <img src="${slideName.filePath}"/>
    </div>
</c:forEach>

以上结果用谷歌开发者工具表示。

<img src="C:/rachel/"file path">

但是,这会导致标题等错误。

所以我尝试了以下方法。

Server.xml

<Context docBase="rachelivf" path="/rachelivf" reloadable="true" source="org.eclipse.jst.jee.server:rachelivf"/>
 <!-- <Context docBase="C:/rachel" path="/boardFile" reloadable="ture"/> -->
 <Context docBase="C:/rachel" path="/slide" reloadable="true"/>

dispatcher-servlet.xml

<mvc:resources location="/slide/**" mapping="c:/rachel/**"></mvc:resources>

ma​​in.jsp

<c:forEach items="${slideList}" var="slideName">
    <div class="swiper-slide">
        <img src="/slide/${slideName.filePath}"/>
    </div>
</c:forEach>

(再次修改服务逻辑)

    if (file.isFile())
    {
        map.put("filePath", file.getName());
        System.out.println("map > " + map);
    }

结果错误发生了变化。

Failed to load resource: the server responded with a status of 404 ()

事实上,正如您在 Google 开发者工具中看到的那样, 标签表示为:

<img src="/slide/2f03c6f8-f5c1-4e6b-bf1c-c70398c118d4.png">

如何显示图像?我不知道我做错了什么。

告诉我们你的想法。

我需要帮助。

【问题讨论】:

    标签: java html spring jsp spring-mvc


    【解决方案1】:

    我解决了。

    代码修改如下。

    dispatcher-servlet.xml

    <mvc:resources location="/slide/**" mapping="c:/rachel/**"></mvc:resources>
    

    server.xml

    <Context docBase="C:/rachel" path="/slideImg/" reloadable="true"/>
    

    ma​​in.jsp

        <c:forEach items="${slideList}" var="slideName">
            <div class="swiper-slide">
                <img src="/slideImg/slide/${slideName.filePath}"/>
            </div>
        </c:forEach>
    

    因此,

    做得很好。

    【讨论】:

      【解决方案2】:

      试试下面的..

      在 JSP 文件的顶部有以下内容

      <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
      

      以及以下在你想要的地方。

      <img src="<c:url value="/resources/img/${slideName.filePath}"></c:url>">
      

      这里 /resources/img/ 是您保存文件的位置,或者在您保存幻灯片的情况下。 注意 src 是相对路径。

      【讨论】:

      • "/>
      • 你使用的是Maven还是普通的项目结构?
      • 我在项目中使用 Maven。
      • 结果是 rachelivf/slide/"文件名"
      • 我已经给出了另一个答案,你能检查一下结构吗?你需要这样保存图像..然后上面的代码就可以了
      【解决方案3】:
      <img src="/slide/2f03c6f8-f5c1-4e6b-bf1c-c70398c118d4.png">
      

      请您尝试使用 url 添加上下文:

      /context-path/slide/2f03c6f8-f5c1-4e6b-bf1c-c70398c118d4.png
      

      【讨论】:

      • 你的意思是上下文路径是 c:\rachel ?
      • 嗯..?我感觉不到。
      • localhost:8080/rachelivf/main.do/slide/2f03c6f8-f5c1-4e6b-bf1c-c70398c118d4.png ?
      【解决方案4】:

      我认为这是结构..

      【讨论】:

      • 我不明白你的意思。
      • 你能把你的项目结构贴出来吗,就像我给的图片一样。
      • 我将图像存储在外部,并且只导入存储在外部的图像。它与您附加的图像有关吗?
      猜你喜欢
      • 2016-10-08
      • 2016-11-04
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多