public class ImageServlet extends HttpServlet {
private Connection database = null;
private String databaseHost ="localhost";
private String databasePort = "5432";
private String databaseServerLogin ="nobody";
private String databaseServerPassword ="nobody";
private String databaseName = "database";
private String jdbcClass = "org.postgresql.Driver";
private String jdbcPrefix = "jdbc:postgresql";
// DATENBANK ÖFFNEN
public void openDb(String aJDBCDriver,
String aJDBCPrefix, String aHost, String aPort,
String aDatabase, String aUser, String aPassword ) throws ServerShellException {
try {
Class.forName(aJDBCDriver);
String aDbURL=aJDBCPrefix+"://"+aHost+":"+aPort+"/"+aDatabase;
database = DriverManager.getConnection(aDbURL, aUser, aPassword);
} catch( Exception e ) {
throw new ServerShellException(
ServerShellException.ERROR_DATA_BACKPLANE_ACCESS+
" Details: "+e.getLocalizedMessage());
}
}
// SERVLET INITIALISIEREN
public void init(ServletConfig config) throws ServletException {
super.init(config);
databaseHost = config.getInitParameter("DatabaseHost");
databasePort = config.getInitParameter("DatabasePort");
databaseServerLogin = config.getInitParameter("DatabaseServerLogin");
databaseServerPassword = config.getInitParameter("DatabaseServerPassword");
databaseName = config.getInitParameter("DatabaseName");
jdbcClass = config.getInitParameter("JdbcClass");
jdbcPrefix = config.getInitParameter("JdbcPrefix");
openDb(jdbcDriver, jdbcPrefix, databaseHost, databasePort, databaseName,
databaseServerLogin, databaseServerPassword);
}
// PARAMETER HOLEN
public static TreeMap parseHttpRequestParameter(HttpServletRequest request) {
String Token; int Num =0; TreeMap result = new TreeMap();
Enumeration paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String prmName = (String)paramNames.nextElement();
String[] prmValues = request.getParameterValues(prmName);
if (prmValues!=null) {
Num = prmValues.length;
if (Num==1)
result.put(new String(prmName), new String(prmValues[0]));
else {
result.put(new String(prmName+".count"), Integer.toString(Num));
for (int i=0;i<Num;i++)
result.put(new String(prmName+"."+i), new String(prmValues[i]));
}
} // end if
} // end while
return result;
}
// BILD AUS DER DB HOLEN UNESCAPE SQL geht auch ist nur einanderer Coder
public void loadBase64Picture( int ident, String identColumn, String imageColumn, String table, DataOutputStream out) {
try {
String sql = "SELECT "+imageColumn+" FROM " + table +
" WHERE " + identColumn + " = " + ident + ";";
res = stmt.executeQuery(sql);
if (res.next() ) {
String imageData = res.getString(imageColumn);
title = res.getString(titleColumn);
res.close();
byte [] fromBase64 = Base64.decodeBase64(imageData.getBytes());
out.write(fromBase64);
// image = new ImageIcon(fromBase64);
}
} catch (SQLException se) {
System.out.println("Fehler beim Laden Bilddaten Ident " +
ident + " in " + table + "! Details: " + se);
}
}
// HIER IST DER CODE
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
TreeMap param = TreeMap parameter = StrUtils.parseHttpRequestParameter(request);
String table = (String) param.get("table");
String imageColumn = (String) param.get("imageColumn");
String imageIdent = (String) param.get("imageIden");
if (table==null) FEHLER und das auch für die 2 anderen Parameter
response.setContentType("text/html;charset=UTF-8");
DataOutputStream out = response.getWriter();
loadBase64(table,imageColumn,imageIdent, out);
out.close();
}
// Falls reques über POST
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
// Falls reques über GET
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}