Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP-404图像处理_Java_Jsp - Fatal编程技术网

Java JSP-404图像处理

Java JSP-404图像处理,java,jsp,Java,Jsp,我正在使用以下代码从我的服务器获取图像: <a href="#"> <img src="<% if(user.getImageURL()!=null){ out.print(user.getImageURL); }else{ out.print("images/no-profile-pic-small.jpg"); }%>" /> </a> 上

我正在使用以下代码从我的服务器获取图像:

<a href="#">
    <img src="<%
        if(user.getImageURL()!=null){
           out.print(user.getImageURL);
        }else{
           out.print("images/no-profile-pic-small.jpg");
        }%>" />
</a>

上面的代码处理imageURL为null时的情况,但是当imageURL返回正确的URL但在服务器上找不到该图像(即404未找到)时,我如何处理该情况


编辑:图像位于不同的服务器上。

目前,您没有在JSP中检查路径,只是将路径放入HTML(如果存在)。这意味着您不知道路径是否存在,直到HTTP请求通过映像。您有两个主要选择:

在包含JSP代码之前,请检查该路径上是否有文件,否则返回到占位符:

<% 
    String userImagePath = user.getImageURL();
    File userImage= new File(userImagePath);
    if(!userImage.exists()){
        userImagePath = "fallBackImagePath.png";
    }
%>

<img src="<%= userImagePath %>"/>

"/>
或者让您的HTML处理非显示图像,例如:

<img src="non-existent.png" class="fallBackBackground"/>

<style>
    .fallBackBackground {
        background: url(./placeholderImage.png);
    }
</style>

.后备基地{
背景:url(./placeholder-image.png);
}

这可能会导致您提供一个不需要的后备映像,而且它依赖于相同大小的映像。

我使用jquery和
onerror
属性解决了这个问题:

我的服务器端代码现在是:

<a href="#">
    <img src="<%
        if(user.getImageURL()!=null){
           out.print(user.getImageURL);
        }else{
           out.print("images/no-profile-pic-small.jpg");
        }%>" onerror="profilePicNotFound(this);" 
    />
</a>

如果映像位于不同的服务器上,这会很好地工作。更多信息。

如果您有正确的映像URL,那么怎么会出现“404未找到”的情况?但也可能出现“访问被拒绝”的情况“由于权限因素。url存储在数据库中。但是图像可能存在,也可能不存在,因为它是一个外部资源。在数千个这样的案例中只有少数几个,但我还是想处理它们。在服务器端,您无法知道这一点,因为浏览器试图获取图像。您可以尝试在服务器端获取图像以了解它是否存在(不推荐),或者在客户端执行一些JS/CSS魔术。或者在用户提供URL时检查它。这可能会在几天/几周后导致404,但是,唉……如果您控制着传送图像的服务器,例如使用apache httpd,您可以使用mod_rewrite检查它是否存在。但这是两个大的假设,我认为这是一个比使用javascript检查更好的方法吗?通过JSP检查将把工作转移到服务器端,这将使您在客户端的性能得到增量提高。一般认为,在后端进行这项工作更可取,但这取决于您的站点!哦,如果这个映像在不同的服务器上,这会起作用吗?说。。被从facebook抓取?即使是加载良好的图像,我似乎也会得到一个“false”。如果你从Facebook获取图像,我倾向于使用Graph API&让Facebook在图像不可用时处理占位符图像-
function profilePicNotFound(image){
    image.src='images/no-profile-pic-small.jpg';
}