当前位置: 首页 > 知识库问答 >
问题:

图像的Struts2结果类型

红甫
2023-03-14

在Struts2应用程序中,我尝试使用Custome结果类型。但是我没有得到任何效果,我的JSP页面图像的动作没有得到调用。而且也没有例外得到。请纠正我哪里做错了。HTTPFox说404,但我在JAVA控制台没有得到任何东西。

HTML:

 <img src=" <s:url action='ExternalImageAction' />" />

XML:

<package name="externalImage_package" extends="struts-default">
        <result-types>
            <result-type name="myBytesResult" class="leo.struts.CustomeImageResult" />
        </result-types>

        <action name="ExternalImageAction" class="leo.struts.ExternalImageAction">
            <result name="myImageResult" type="myBytesResult">
            </result>
        </action>
</package>
00:18:06.762    0.044   432 1258    GET 404 text/html (NS_ERROR_FAILURE)    http://localhost:8888/Struts2Whole/%3Cs:url%20action=%27ExternalImageAction%27%20/%3E
ExternalImageAction action = (ExternalImageAction) invocation.getAction();
HttpServletResponse response = ServletActionContext.getResponse();

response.setContentType(action.getContentType());       
response.getOutputStream().write(action.getImageInBytes());
response.getOutputStream().flush();
public String execute()
{
    System.out.println("execute of the ExternalImageAction...........");
    setContentType("jpg");
    setImageInBytes(getFileBytes("C:/Users/Joseph.M/Desktop/ocwcd5.jpg"));
    return "myImageResult";
}
public static  byte[] getFileBytes(String filePath)
{
    File file = new File(filePath);

    System.out.println("file : "+file.getName());
    byte[] b = new byte[(int) file.length()];
    try {
          FileInputStream fileInputStream = new FileInputStream(file);
          fileInputStream.read(b);
          for (int i = 0; i < b.length; i++) {
                      System.out.print((char)b[i]);
           }
          fileInputStream.close();
     } catch (FileNotFoundException e) {
                 System.out.println("File Not Found.");
                 e.printStackTrace();
     }
     catch (IOException e1) {
              System.out.println("Error Reading The File.");
               e1.printStackTrace();
     }        
    System.out.println("byes of image size : "+b.length);
    return b;
}

共有1个答案

楚昀
2023-03-14

如果向标记的src属性返回某项内容,则它认为该内容是URL,尝试打开它,并收到404 Not found

由于返回的不是URL,而是字节数组中的实际图像,因此需要使用RFC2397中定义的数据URI方案。

假设结果只返回字节,则应将数据URI放入html中,如下所示:https://stackoverflow.com/a/20019398/1654265

 类似资料:
  • 主要内容:分发结果类型:,FreeMaker结果类型:,重定向结果类型:正如前面提到的,<results>标签在Struts2的MVC框架的视图中所扮演的角色。动作是负责执行业务逻辑。执行业务逻辑后,接下来的步骤是使用<results>标签显示的视图。  经常有一些附带导航规则的结果。例如,如果在操作方法是对用户进行验证,有三种可能的结果。 (一)成功登录;(二)不成功的登录,用户名或密码错误;(三)帐户锁定。 在这种情况下的动作方法将被配置呈现的结果有三种可能的结果

  • 问题内容: 我有一个Struts2应用程序,在其中使用了Tiles。如何在操作映射中获得多种结果类型?因为我需要将de output设置为JSON数据,并将Tiles同时设置。我努力了: 但这不起作用 问题答案: 据我所知,无法同时返回多个事物。一旦完成所有切片操作,浏览器将只期望一件事,即JSON或HTML。 我可以想到两种方法来执行此操作:双重请求(每种结果类型一种)或使用一种方法生成另一种方

  • 我正在尝试使用Struts 2和jQuery构建Web应用程序。 在改变下拉列表时,我需要从数据库中获取详细信息。在我的< code>struts.xml配置中,我将方法和操作定义如下: 当我在所有相应位置进行更改后执行应用程序时,请求被传递给 类和 DAO 方法,并且控件成功返回到屏幕。但是返回的数据在屏幕上不可用,我收到一条错误消息: url…404未在jQuery中找到(匿名函数)ajax。

  • 很多关于camera2 api和RAW图像格式的问题已经提出,但是在网上搜索我仍然没有找到答案(这就是为什么我在这里顺便说一句)。 我正在尝试使用ImageReader和设置RepeatingRequest对摄像头捕获的帧进行一些实时图像处理。正如之前的一些帖子中所建议的,我正在获取RAW格式的图像(特别是ImageFormat.yuv_420_888),以获得大约30fps的帧速率: 我的图像处

  • 我试图用python编码一个水果图像分类器,尝试分类7个水果。我有train_set的15077张图片和validation_set的4204张图片。我编译了10个时代的代码,结果如下: 在15077个样本上进行训练,在4204个样本上进行验证,历元1/10 15077/15077[=============================================]-264s 17ms/步

  • 问题内容: 我正在制作一个游戏,其中一些对象旋转以面对他们所拍摄的内容。拍摄之间有一个延迟,我希望物体一直面对着它,直到再次拍摄为止。我知道如何加载图像,也知道如何使用AffineTransform旋转图像。但是有了这个,我需要在每次绘制对象时计算旋转。 所以我的问题是如何旋转图像并将结果保存到可以显示的新图像中? 问题答案: 如何旋转图像并将结果保存到将要显示的新图像中? 创建一个新的。握住一个