如何使用Spring MVC在JSP上显示图像

时间:2013-10-21 10:48:30

标签: java spring jsp spring-mvc

    //My Controller which handles image and Data
     @RequestMapping(value = "/student/edit/{id}/", method = RequestMethod.GET)
        public ModelAndView editStudent( @PathVariable Integer id,
                                        ModelMap model,
                                        HttpServletRequest request,HttpServletResponse response) throws IOException {

      Student student=studentservice.retieveStudent(id); 
                byte[] studentImage = student.getUserImage();
                response.setContentType("image/png");
                response.getOutputStream().write(studentImage);
                response.getOutputStream().flush();
                model.addAttribute("studentImage","studentImage")
                model.addAttribute("studentName",student.getStudentName);
                model.addAttribute("studentDetails",student.getStudentDetails);
            return new ModelAndView("viewstudent");
        }

student.jsp
<a href=student/edit/12><h1>Edit<h1></a>


 viewstudent.jsp   
<div>
 <table> <tr><td>Student Name=${studentName}</td></tr>
          <tr><td>StudentDetails=${studentDetails}</td></tr>
     <img src=data:image/jpeg;base64,"<c:out value='${studentImage}'/>" alt="my image" />
</table>

当我点击链接编辑时,只有图像显示在浏览器上并且viewstudent.jsp页面没有显示,如何在viewstudent.jsp中显示图像以及数据从DB获取后

1 个答案:

答案 0 :(得分:1)

您似乎并不了解HTTP和HTML的工作原理。

要显示包含图像的HTML页面,您需要两个HTTP请求。第一个获取HTML页面。 HTML页面包含类似

的标记
<img src="location_of_the_image" />

然后浏览器解析HTML,看到它包含img标记,并向图像的位置发送第二个HTTP请求。对第二个HTTP请求的响应包含图像的字节。

所以你的控制器应该有两个方法:一个返回一个用于呈现HTML页面的ModelAndView,另一个用于加载图像的字节,设置内容类型,并将字节发送到响应OutputStream