不允许加载本地资源:为什么?

时间:2017-12-19 03:03:53

标签: java html spring jsp spring-mvc

当出现对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>

以上结果在Google Developer Tools中表示。

<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"/>

调度-servlet.xml中

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

main.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">

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

告诉我们你的想法。

我需要帮助。

4 个答案:

答案 0 :(得分:1)

我解决了这个问题。

代码修改如下。

<强>调度-servlet.xml中

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

<强> server.xml中

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

<强> main.jsp中

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

结果,

enter image description here

这是非常好的工作。

答案 1 :(得分:0)

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

请尝试使用网址添加上下文:

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

答案 2 :(得分:0)

尝试以下方法..

在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采用相对路径。

答案 3 :(得分:0)

我认为这是结构.. enter image description here