如何使用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...
我得到了什么输出:
- 我只在JSP中获取Image而不是image
- 当我使用RequestDispatcher / sendRedirect()时,我得到以下exception
java.lang.IllegalStateException: Cannot forward after response has been committed
题:
- 如何在JSP中获取Image而不仅仅是在浏览器中使用Image
- 如何避免上述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