java web server - 浏览器找不到新创建的文件,直到服务器重启

时间:2014-08-04 16:03:14

标签: java tomcat7 http-status-code-404 file-not-found

我的本​​地计算机上有一个tomcat 7.0 Web服务器,在对服务器进行GET调用时,我创建了一个文件(图像),将其保存在服务器上,并为浏览器提供了获取的URL。

即使在我刷新浏览器404后,浏览器也会获取该URL的404“文件”。 只有在我重新启动服务器后,浏览器才能找到该文件,所有文件都按计划进行。

我试过给它读取权限,但没有用。

在哪里寻找问题?

Tomcat版本:Apache Tomcat / 7.0.12, Servlet规范版本:3.0。

该文件保存在/ projectName / WebContent / resources / images。

访问文件的网址:“http://localhost:8080/projectName/resources/images/2.png。”

在返回对GET调用的响应之前,该文件已经存在(在浏览器刷新后也找不到该文件 - 意味着另一个调用)。

至于缓存设置,我没有,这是我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>ProjectName</display-name>
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/configuration/dispatcher-servlet.xml</param-value>        
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>WEB-INF/configuration/applicationContext.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>

1 个答案:

答案 0 :(得分:0)

如果这是应用程序路径的一部分,我假设在context.xml中标识,那么在重新部署上下文之前它将不可见。部署上下文后,它将被复制到工作并从那里运行。仅监视WEB-INF / web.xml的更改,对其他文件的更改不应起任何作用(如果在dev模式下运行,则JSP除外)。

  1. 您可以将文件存储在任何webapp文件夹路径之外,这是最佳实践
  2. 编写一个servlet以从该目录中获取它们,例如/getpic/filename.png将在c:\ images \ filename.png中查找该文件,并将其流回给用户。