我正在为我的项目使用strust2和tiles。以下是输入ID的代码( jsp )。
<s:textfield name="uniqueID" label="Enter Unique ID" required="required"/>
这是动作文件。
public String execute() throws Exception{
SearchDao.search(selectedID,uniqueID);
return SUCCESS;
}
dao 将检索图片。
try{
.
.
.
rs = ps.executeQuery();
if(rs.next()){
InputStream originalImageStream = rs.getBinaryStream(1);
File file = new File("Retina"+".jpg");
FileOutputStream fileOutputStream = new FileOutputStream(file);
while ((length = originalImageStream.read()) != -1) {
fileOutputStream.write(length);
}
fileOutputStream.close();
}
else{
return null;
}
}
catch(Exception ex){
ex.printStackTrace();
}
return "found";
找到图像后,将返回 found ,因此操作文件将返回成功。 struts.xml 中的代码是
<action name="search" class="com.ActionClasses.SearchAction">
<result name="success" type="tiles"> found </result>
<result name="input" type="tiles"> search </result>
<result name="error" type="tiles"> notFound </result>
</action>
这是 tiles.xml 文件。
<definition name="found" extends="home">
<put-attribute name="myTitle" value="searchSuccess"/>
<put-attribute name="myBody" value="/found.jsp"/>
</definition>
现在如何在 found.jsp 中显示检索到的图像。我在Internet上找到了一些解决方案,但仅适用于使用struts2或struts2以及hibernate的项目。对于同时使用strus2和tiles的项目,我没有找到任何解决方案。谁能帮我。谢谢。
答案 0 :(得分:0)
尝试一下......我已经在我的一个项目中实现了类似的场景,但是在春天,我想它应该对你有用而几乎没有变化
这就是我实施的内容。我创建了一个控制器(也就是struts中的动作),如下所示
@RequestMapping(value = "view", method = RequestMethod.GET)
public void getImage(@RequestParam(value = "location") String location, HttpServletResponse response) {
String ext = FilenameUtils.getExtension(location);
response.setContentType("image/"+ext);
try {
File file = new File(location);
BufferedImage image = ImageIO.read(file);
OutputStream baos = response.getOutputStream();
ImageIO.write(image, ext, baos);
baos.flush();
baos.close();
} catch (FileNotFoundException e) {
logger.error("File Not Found: " + location, e);
} catch (IOException e) {
logger.error("Can't read the File: " + location, e);
} catch(Exception e) {
logger.error("Can't read input file: " + location, e);
}
return;
}
然后在服务器实际视图的控制器/操作中我做了类似的事情
final String IMAGE_RESOLVER = "../../image/view?location=";
Game game = gameService.populateGame(gameId);
if(game.getThumbnailPath() != null) {
game.setThumbnailPath(IMAGE_RESOLVER.concat(game.getThumbnailPath()));
}
mv.addObject("game", game); // set object to return to view
当名称为“thumbnail”的DOM对象收到此字符串时,它会调用上面提到的操作,然后返回一个图像
希望这对你有用