I have inserted an image file in database using a Servlet it is inserted into database but when I tried to display on a JSP page I couldn't get the Image but all text data was retrieved.
This is servlet Code which I used for Insertion of Image
package visitor;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.MultipartConfig;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import jakarta.servlet.http.Part;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.mysql.cj.xdevapi.Statement;
import dbConnection.ConnectionProvider;
@MultipartConfig(maxFileSize = 16177215)
public class VisitApply extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
String compname = (String)session.getAttribute("compname");
String firstname = request.getParameter("firstname");
String lastname = request.getParameter("lastname");
String vemail = request.getParameter("vemail");
String vphone = request.getParameter("vphone");
String vdate = request.getParameter("vdate");
String empname = request.getParameter("empname");
String empmail = request.getParameter("empmail");
String city = request.getParameter("city");
InputStream inputStream = null;
Part filePart = request.getPart("vimage");
if(filePart != null){
System.out.println(filePart.getName());
System.out.println(filePart.getSize());
System.out.println(filePart.getContentType());
inputStream = filePart.getInputStream();
}
Connection con = ConnectionProvider.getCon();
try {
compname = compname.replaceAll("\\s","");
PreparedStatement st = con.prepareStatement("use "+compname+"");
st.executeQuery();
PreparedStatement pst2 = con.prepareStatement("select * from "+compname+"empdetails where empmail = ?");
pst2.setString(1, empmail);
ResultSet rs = pst2.executeQuery();
if(rs.next()) {
String sql = "insert into "+compname+"avisitors(firstname, lastname, vemail, vphone, vdate, empname, empmail, city, vimage) values(?,?,?,?,?,?,?,?,?)";
PreparedStatement statement = con.prepareStatement(sql);
statement.setString(1, firstname);
statement.setString(2, lastname);
statement.setString(3, vemail);
statement.setString(4, vphone);
statement.setString(5, vdate);
statement.setString(6, empname);
statement.setString(7, empmail);
statement.setString(8, city);
if(inputStream != null) {
statement.setBlob(9, inputStream);
}
int row = statement.executeUpdate();
if(row>0) {
response.sendRedirect("visitorform.jsp");
}else {
response.sendRedirect("visitorentry.jsp");
}
}else{
response.sendRedirect("visitorentry.jsp");
}
}catch(Exception e){
e.printStackTrace();
}
}
type here
}
This is JSP Code for obtaining the image I tried but nothing comes
<%@page import="dbConnection.*"%>
<%@page import="java.sql.*"%>
<%
String compname = (String)session.getAttribute("compname");
Connection con = ConnectionProvider.getCon();
try{
Statement st = con.createStatement();
compname = compname.replaceAll("\\s", "");
String dbuse = "use "+compname+"";
st.executeQuery(dbuse);
String viewdata = "select * from "+compname+"avisitors";
PreparedStatement statement = con.prepareStatement(viewdata);
ResultSet rs = statement.executeQuery();
if(rs.next()){
%>
<div class="col-xl-3 col-lg-3 col-md-3 col-sm-4 col-12">
<figure class="user-card green">
<figcaption>
<img src="<%= rs.getBlob(9)%>" alt="VisitorPhoto" class="profile">
<h5><%=rs.getString(1)%> <%= rs.getString(2)%></h5>
<h6><%=rs.getString(5) %></h6>
<p>Email: <a href="mailto:<%= rs.getString(3)%>"> <%= rs.getString(3)%></a></p>
<p>Phone: <a href="tel:<%= rs.getString(4)%>"><%= rs.getString(4)%></a></p>
<h6>- Employee Details -</h6>
<p>Name: <b><%= rs.getString(6)%></b></p>
<p>EMail: <a href="mailto:<%= rs.getString(7)%>"><%= rs.getString(7)%></a></p>