使用此代码,我可以从servlet渲染图像,但我的业务说。我需要添加链接说" www.google.com"。如果我点击此图片。是否有任何我可以通过链接访问图像的方式。我需要直接从servlet刷新它不应该使用jsp.Can任何人请帮助我。
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
ServletContext sc = getServletContext();
String filename = sc.getRealPath("image.JPG");
resp.setContentType("image/jpeg");
// Set content size
File file = new File(filename);
resp.setContentLength((int)file.length());
// Open the file and output streams
FileInputStream in = new FileInputStream(file);
OutputStream out = resp.getOutputStream();
// Copy the contents of the file to the output stream
byte[] buf = new byte[1024];
int count = 0;
while ((count = in.read(buf)) >= 0) {
out.write(buf, 0, count);
}
in.close();
out.close();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request , response);
// TODO Auto-generated method stub
}
}
答案 0 :(得分:1)
您需要在标记中的<a>
元素周围添加<img>
元素。
<a href="http://www.google.com">
<img src="imageServlet" />
</a>
顺便说一下,sc.getRealPath()
表明您的图片文件已经已经在公共webcontent文件夹中。为什么不使用<img src="image.JPG">
呢?或者servlet是否过度简化?
答案 1 :(得分:0)
如果我感觉不正确,您可以使用图片上的链接返回html:
<a href="http://www.google.com"><img src="yourImageRenderingServletPath"></a>
因此,您将拥有一个呈现html的servlet和第二个呈现图像的servlet。要防止在浏览器中进行图像缓冲,可以添加随机参数id =(new Random())。nextInt():
<a href="http://www.google.com"><img src="yourImageRenderingServletPath?id=124"></a>
答案 2 :(得分:0)
简而言之,您想要添加一个链接,例如google.com,点击它就会显示图片。
首先,您不需要将图像作为响应发送,而是需要锚定链接并在该链接上添加javascript函数onclick。
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n" +
"<HTML>\n" +
"<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" +
"<BODY>\n" +
"<a href='www.google.com'><img src='imagePath' /></a>\n" +
"</BODY></HTML>");