0
我使用以下Servlet來映射文件系統文件夾中的圖像。在Tomcat中,GWT無法從文件系統加載圖形
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代碼的圖像,我使用:最終圖像lgImg =新圖像(Constants.URL_PREFIX + imgPath);
其中:
URL_PREFIX = 「HTTP://本地主機:8888 /圖像」 +參數+ 「=」
ENV_VAR = 「APP_GFX_HOME」
參數= 「路徑」
在開發模式下,所有的工作很好,但是當我部署到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_PREFIX常量更改爲** String URL_PREFIX = GWT.getModuleBaseURL()+「images?」 + PARAMETER +「=」; **,但我仍然沒有得到圖像。雖然tomcat中的servlet可以正確獲取環境變量嗎? –