gpt4 book ai didi

在 Tomcat 中时,GWT 无法从文件系统加载图形

转载 作者:行者123 更新时间:2023-11-28 23:51:49 24 4
gpt4 key购买 nike

我使用以下 Servlet 从文件系统的文件夹映射图像。

public class ImageServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {

// Get the base path for graphics root folder
String basePath = System.getenv(Constants.ENV_VAR);

String specifier = req.getParameter(Constants.PARAMETER);


resp.setContentType(Constants.CONTENT_TYPE);

File file = new File(basePath+specifier+"."+Constants.IMG_TYPE);
resp.setContentLength((int)file.length());

FileInputStream in = new FileInputStream(file);
OutputStream out = resp.getOutputStream();

// Copy the contents of the file to the output stream
byte[] buf = new byte[Constants.INPUT_BUFFER_SIZE];
int count = 0;
while ((count = in.read(buf)) >= 0) {
out.write(buf, 0, count);
}
in.close();
out.close();
}
}

然后,我使用 GWT-RPC 获取图像,方法是使用以下 AppServiceImpl 类:

public class AppServiceImpl extends RemoteServiceServlet implements AppService {

//Get the base path for graphics root folder
String basePath = System.getenv(Constants.ENV_VAR);

@Override
public ArrayList<String> getImageFiles(String folder) {
ArrayList<String> list = new ArrayList<String>();
File parent = new File(**basePath+folder**);
if (!parent.isDirectory()) {
return list;
}
File[] files = parent.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isFile() && !files[i].isHidden()) {
// save image title
list.add(files[i].getName().substring(0, files[i].getName().indexOf(".")));
}
}
return list;
}
...

为了在 GWT 代码中获取图像,我使用:final Image lgImg = new Image(Constants.URL_PREFIX + imgPath);

哪里:

  • URL_PREFIX = "http://localhost:8888/images?"+ 参数 + "="

  • ENV_VAR = "APP_GFX_HOME"

  • PARAMETER = "路径"

在开发模式下,一切正常,但是当我部署到 tomcat 服务器时,图像不出现,我需要一些帮助来找出问题。

p.s: 这是web.xml文件的一部分

<!-- Services -->
<servlet>
<servlet-name>theImageServlet</servlet-name>
<servlet-class>com.app.server.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>theImageServlet</servlet-name>
<url-pattern>/images</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>appService</servlet-name>
<servlet-class>com.app.server.AppServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>appService</servlet-name>
<url-pattern>/app/services</url-pattern>
</servlet-mapping>

最佳答案

我不会对 URL 进行硬编码,因为上下文部分在开发模式下不存在。只需使用:

String url = GWT.getModuleBaseURL() + "images?";

我在类似情况下使用它从报告 servlet 下载 Excel 文件,它在所有情况下都能正常工作。

关于在 Tomcat 中时,GWT 无法从文件系统加载图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7693310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com