I stored an image in mysql database table in a byte format. when i am retrieving that image from database i am getting like this.
So dispatcher-servlet.xml is as follows
<beans:bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- setting maximum upload size -->
<beans:property name="maxUploadSize" value="100000" />
</beans:bean>
pom.xml
<!-- Apache Commons FileUpload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- Apache Commons IO -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
driversList.jsp
<div style="color: teal; font-size: 20px">List Of Drivers</div>
<c:if test="${!empty listDrivers}">
<table border="1" bgcolor="black" width="600px">
<tr
style="background-color: teal; color: white; text-align: center;"
height="40px">
<th width="60">Name</th>
<th width="80">License Number</th>
<!-- <th width="80">Password</th> -->
<th width="80">Phone</th>
<th width="80">Password</th>
<th width="80">Address</th>
<th width="80">Photo</th>
</tr>
<c:forEach items="${listDrivers}" var="driver">
<tr
style="background-color: white; color: black; text-align: center;"
height="30px">
<td>${driver.name}</td>
<td>${driver.license}</td>
<td>${driver.number}</td>
<td>${driver.password}</td>
<td>${driver.address}</td>
<td><img src="/momcab1/myImage/imageDisplay?id=${driver.id}"/></td>
</tr>
</c:forEach>
</table>
</c:if>
<!-- Content data end -->
<br> <br> <br> <br> <br> <br> <br>
<br> <br> <br>
</div>
DriverController.java
@RequestMapping(value = "/DriversList", method = RequestMethod.GET)
public String listUsers(Model model,HttpServletRequest req,HttpServletResponse res) {
HttpSession session =req.getSession();
if(session.getAttribute("emailId")==null)
{
return "redirect:/login";
}
System.out.println("MY NAME IS GO PINK");
model.addAttribute("listDrivers", this.driverService.listDrivers());
return "driversList";
}
ImageController.java
@Controller
@RequestMapping("/myImage")
public class ImageController {
@Value("${login_session_token_timeout_mnts}")
private String loginSessionTokenTimeoutMnts;
private DriverService driverService;
@Autowired(required = true)
@Qualifier(value = "driverService")
public void setDriverService(DriverService ds) {
this.driverService = ds;
}
@RequestMapping(value = "/imageDisplay", method = RequestMethod.GET)
public void showImage(@RequestParam("id") Integer id, HttpServletResponse response,HttpServletRequest request)
throws ServletException, IOException{
Driver item = driverService.getDriverById(id);
response.setContentType("image/jpeg, image/jpg, image/png, image/gif");
response.getOutputStream().write(item.getBlobImg());
response.getOutputStream().close();
}
}
Driver.java
@Column(name = "photo")
private byte[] blobImg;
So here when a person clicks on "Drivers List" then the Request Mapping goes to "/DriversList"
of DriverController.java
But in my driversList.jsp
there is an image to be displayed from mysql database table. but when the page is loaded it is not even going into the controller request mapping given in "<img src>"
and it is displaying a "cross mark" as shown below.Any help in this will be appreciated.
Thanking You
And i tried the code given in this enter link description here