如何使用Servlet在其Response中显示一个JSP页面?

Servlet doGet()代码,用于从数据库获取图像并在Response中存储图像

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Get userid from session try { // Get photos from database in (image) // Init servlet response. response.reset(); response.setBufferSize(DEFAULT_BUFFER_SIZE); response.setContentType(image.getContenttype()); response.setHeader("Content-Length", String.valueOf(image.getLength())); response.setHeader("Content-Disposition", "inline; filename=\"" + image.getTitle() + "\""); // Prepare streams. BufferedInputStream input = null; BufferedOutputStream output = null; try { // Open streams. input = new BufferedInputStream(image.getPhoto(), DEFAULT_BUFFER_SIZE); output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE); // Write file contents to response. byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; int length; while ((length = input.read(buffer)) > 0) { output.write(buffer, 0, length); } } finally { // Gently close streams. output.close(); input.close(); } //Redirect it to photo page RequestDispatcher rd = request.getRequestDispatcher ("/webplugin/jsp/profile/photos.jsp"); rd.forward(request, response); } catch (Exception e) { e.printStackTrace(); } } 

但是,当此servlet显示JSP页面时,它only image显示only image而不显示JSP页面。

JSP代码:

 ... JSP code  ... JSP code cont... 

我得到了什么输出:

  1. 我只在JSP中获取Image而不是image
  2. 当我使用RequestDispatcher / sendRedirect()时,我得到以下exceptionjava.lang.IllegalStateException: Cannot forward after response has been committed

题:

  1. 如何在JSP中获取Image而不仅仅是在浏览器中使用Image
  2. 如何避免上述exception?

编辑:我的Web.xml看起来像这样

  Photo Module app.controllers.PhotoServlet   Photo Module /Photos  

如何在JSP中获取Image而不仅仅是在浏览器中使用Image

在浏览器地址栏中输入包含元素的JSP文件的URL。

HTTP://本地主机:8080 / CONTEXTNAME / webplugin / JSP /资料/ photos.jsp


如何避免上述exception?

从servlet代码中删除以下行。

 //Redirect it to profile page RequestDispatcher rd = request.getRequestDispatcher ("/webplugin/jsp/profile/photos.jsp"); rd.forward(request, response); 

servlet应该只返回图像。 而已。 Web浏览器本身应该下载并显示图像,而不是网络服务器。

也可以看看:

  • 如何从数据库中检索图像并通过Servlet在JSP中显示?
  • 如何从JSP页面中的数据库中检索和显示图像?

1你正在修改响应然后转发,这是没用的。 不要这样做。

2 如何将图像从servlet获取到jsp