Извлекаю из базы данных строки, изображение, дату помещаю значения в поля ввода изменяю и произвожу "апдейт",- работает все кроме изображения! Помогите разобраться!
Сервлет для извлечения картинки:
public void doGet(HttpServletRequest httpRequest,HttpServletResponse httpResponse)throws ServletException,IOException{
Statement statement= null;
ResultSet resultSet;
InputStream inputStream;
String SQL;
try {
String fileId= httpRequest.getParameter("Id");
System.out.println("inside servlet�>" +fileId);
Connection connection= databaseConnect.getConnection();
statement= connection.createStatement();
SQL= "SELECT file FROM Registration WHERE id= '"+fileId+"'";
resultSet= statement.executeQuery(SQL);
if(resultSet.next()){
byte[]byteArray= new byte[524288];
int size= 0;
inputStream= resultSet.getBinaryStream(1);
httpResponse.reset();
httpResponse.setContentType("image/jpeg");
while((size= inputStream.read(byteArray))!= -1){
httpResponse.getOutputStream().write(byteArray, 0, size);
}
}
} catch(IOException eIO) {
System.out.println("I/O error in retreiveImage servlet"+eIO);
}catch(Exception e){
System.out.println("Error in retreiveImage servlet"+e);
}
}
Вывод изображения на страницу:
<h:outputLink id="file" value="retreiveImage?Id=#{bean.id}" target="_blank">
<h:graphicImage value="retreiveImage?Id=#{bean.id}" width="50" height="75">
<h:inputFile value="#{bean.file}"></h:inputFile>// Попытка вставить новое изображение
</h:graphicImage>
Метод, который обновляет (апдейт) данные:
public static String updateUserRecord(manager updateRecord){
try {
SQL= "UPDATE Registration SET userName=?, email=?, password=?, file=?, timeStamp=? WHERE id=?";
prepStatement= databaseConnect.getConnection().prepareStatement(SQL);
prepStatement.setString(1, updateRecord.getUserName());
prepStatement.setString(2, updateRecord.getEmail());
prepStatement.setString(3, updateRecord.getPassword());
inputStream= file.getInputStream();
prepStatement.setBinaryStream(4, inputStream, (int)file.getSize());
//create a java timestamp object that represents the current time ("current timestamp")
Calendar calendar= Calendar.getInstance();
Timestamp timeStamp= new Timestamp(calendar.getTime().getTime());
prepStatement.setTimestamp(5, timeStamp);
prepStatement.setInt(6, updateRecord.getId());
prepStatement.executeUpdate();
System.out.println("User updated Successfully!");
FacesMessage message= new FacesMessage("User updated!");
FacesContext.getCurrentInstance().addMessage("editForm: updateBtn", message);
prepStatement.close();
} catch (SQLException sqlEx) {
sqlEx.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
return "administration";
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости