2
    //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>

リンクをクリックすると Edit only 画像がブラウザに表示され、viewstudent.jspページが表示されない DBからフェッチした後、データとともにviewstudent.jspに画像を表示するにはどうすればよいですか

4

1 に答える 1

3

HTTP と HTML の仕組みを理解していないようです。

画像を含む HTML ページを表示するには、2 つの HTTP 要求が必要です。最初のものは HTML ページを取得します。HTMLページには次のようなタグが含まれています

<img src="location_of_the_image" />

次に、ブラウザーは HTML を解析し、imgタグが含まれていることを確認し、2 番目の HTTP 要求を画像の場所に送信します。この 2 番目の HTTP 要求への応答には、イメージのバイトが含まれています。

そのため、コントローラーには 2 つのメソッドが必要です。1 つは HTML ページのレンダリングに使用される ModelAndView を返すメソッド、もう 1 つはイメージのバイトを読み込み、コンテンツ タイプを設定し、バイトを応答 OutputStream に送信するメソッドです。

于 2013-10-21T10:59:46.557 に答える