猿问

来自 DB 的图像不会在 JSP 中显示:未找到 HTTP 请求的映射

我在我的控制器中得到了这个:


@RequestMapping(value = "details", method = RequestMethod.GET)

public ModelAndView details(@Valid @ModelAttribute("MessageForm") final MessageForm form, @RequestParam("publicationid") String publicationid) {

    final Publication pub = ps.findById(Integer.valueOf(publicationid));

    final User user = us.findById(pub.getUserid());

    final ModelAndView mav = new ModelAndView("details");

    long myid = pub.getPublicationid();


    UploadFile ufa = imageServiceImp.findFirstById(Long.parseLong(publicationid));

    System.out.println("mi publication id es " +ufa.getPublicationId());

    System.out.println("mi id de upload es " + ufa.getId());

    System.out.println("mis bytes son " + ufa.getData().toString());

   // these prints work fine


    try {

        Image img = ImageIO.read(new ByteArrayInputStream(ufa.getData()));

        mav.addObject("image1", img);

    } catch (IOException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

    }


    //other stuff

    return mav;

}

所以我在我的 JSP 中做了以下内容来显示图像:


  <img class="mySlides" src="<c:out value="${image1}" />" >

结果当我进入这个页面尝试我的程序时收到以下消息(图像当然不显示):


 Sep 26, 2018 11:27:23 PM org.springframework.web.servlet.PageNotFound noHandlerFound

 WARNING: No mapping found for HTTP request with URI [/null/meinHaus/BufferedImage@4c8d98b4:%20type%20=%205%20ColorModel:%20] in DispatcherServlet with name 'dispatcher'

会发生什么?


我正在使用 spring-mvc。


getData() 也返回一个 byte[] 类型的数组。


qq_花开花谢_0
浏览 145回答 1
1回答

临摹微笑

这不是您应该加载图像的方式。在控制器类中编写一个方法,如下所示。@RequestMapping(value = "/users/getProfilePic/{uniqueId}",method = RequestMethod.GET)&nbsp; &nbsp; public ResponseEntity<byte[]> getProfilePic(@PathVariable long uniqueId) {&nbsp; &nbsp; &nbsp; &nbsp; try{&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //reading image from tomcat folder you can read from the place where you stored the images&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String rootPath = System.getProperty("catalina.home");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String profilePicDirectory = rootPath + File.separator + "profilePictures" + File.separator&nbsp; + uniqueId;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String profilePicFile = profilePicDirectory +&nbsp; File.separator + uniqueId +".jpg";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RandomAccessFile f = new RandomAccessFile(profilePicFile, "r");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; byte[] b = new byte[(int)f.length()];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f.readFully(b);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f.close();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; final HttpHeaders headers = new HttpHeaders();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; headers.setContentType(MediaType.IMAGE_JPEG);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return new ResponseEntity<byte[]>(b, headers, HttpStatus.OK);&nbsp; &nbsp; &nbsp; &nbsp; }catch(Exception ex){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //ex.printStackTrace();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; final HttpHeaders headers = new HttpHeaders();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return new ResponseEntity<byte[]>(null, headers, HttpStatus.NOT_FOUND);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //return null;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }然后在jsp页面中调用这个url来加载图像。<img class="mySlides" src="/users/getProfilePic/${imageUniqueIdURL}" />
随时随地看视频慕课网APP

相关分类

Java
我要回答