import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.net.*; import java.sql.*; import java.util.*; import myDatabase; /** * ImageDBServlet.java * * This servlet demonstrates how to use JDBC driver to access the * image database from the servlet, thus shows a 3-tier JDBC example. * * @author xjqiu@npac.syr.edu */ public class ImageDBServlet extends HttpServlet { String imgname; String color; String type; String url; String noneLabel=" "; /** * doGet() method * At Server side, collection query information from client side interface, * access Image Database, send back HTML file containing query results */ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { Connection con; PrintWriter out; res.setContentType("text/html"); out = new PrintWriter(res.getOutputStream()); // Fetch the parameters from client side // while checking each field of the query table. // Perform Database Access according to the value combinations provieded from User. if (req.getParameter("imgname") != null) imgname=req.getParameter("imgname"); else imgname=noneLabel; if (req.getParameter("color") != null) color=req.getParameter("color"); else color=noneLabel; if (req.getParameter("type") != null) type=req.getParameter("type"); else type=noneLabel; if (req.getParameter("url") != null) url=req.getParameter("url"); else url=noneLabel; printPageHeader(out); String cntrl = req.getParameter("control"); if(cntrl != null) { if (cntrl.equals("Search")) {//Search button pressed doSearch(req, out); }else if (cntrl.equals("Insert")) {//Insert button pressed doInsert(out); } } printPageFooter(out); } private void printPageHeader(PrintWriter out) { out.println(""); out.println(""); out.println("3-Tier Model - Java Servlet, XML and JDBC"); out.println(""); out.println(""); out.println("
Image Database
"); out.println("
"); out.println("

This is a test.

"); } private void printPageFooter(PrintWriter out) { out.println("
"); out.println("
"); out.println(""); out.println(""); out.println(""); out.close(); } private void displayHashtable(Hashtable ht, PrintWriter out) { out.println(" Name :"+ ht.get("name").toString()); out.println(""); out.println(" Color :"+ ht.get("color").toString()); out.println(" Type :"+ ht.get("type").toString()); out.println("  "); out.println(""); } private String getSQLstring(HttpServletRequest req) { String tmpstr = "select * from images_table where "; StringBuffer strbuf = new StringBuffer(); if(!(imgname.trim().equals(""))) { strbuf.append("upper(imgname)=upper('"+(req.getParameter("imgname")).trim()+"') and "); }else { strbuf.append("imgname like '%' and "); } if(!(color.trim().equals(""))) { strbuf.append("upper(color)=upper('"+(req.getParameter("color")).trim()+"') and "); }else { strbuf.append("color like '%' and "); } if(!(type.trim().equals(""))) { strbuf.append("upper(type)=upper('"+(req.getParameter("type")).trim()+"') and "); }else { strbuf.append("type like '%' and "); } if(!(url.trim().equals(""))) { strbuf.append("upper(url)=upper('"+(req.getParameter("url")).trim()+"');"); }else { strbuf.append("url like '%'"); } tmpstr = tmpstr + strbuf.toString(); if(tmpstr == null || tmpstr.equals("") ) return noneLabel; else return tmpstr; } private void doInsert(PrintWriter out) { //Insert new record to database file String sql = "insert into images_table values(" + "images_table_seq.nextval,'"+imgname+ "','"+color+"','"+type+"','"+ url+"')"; myDatabase myDb = new myDatabase(); myDb.open(); myDb.executeSQL(sql); myDb.close(); out.println("New record has been added to Database!"); } private void doSearch(HttpServletRequest req, PrintWriter out) { String sql; sql = getSQLstring(req); myDatabase myDb = new myDatabase(); myDb.open(); Vector vec = myDb.getRecords(sql); Hashtable ht ; if(vec.size() <= 0) { out.println("
No Records Matched the Query !
"); }else { out.println("
"); out.println(""); for(Enumeration e = vec.elements(); e.hasMoreElements(); ){ ht = (Hashtable) e.nextElement(); displayHashtable(ht,out); } myDb.close(); out.println("
"); out.println("
"); } } private String get(String key, Hashtable ht){ //Check keyword field, subsitute null field with " " if(ht.get(key) != null) return ht.get(key).toString(); else return " "; } }//end of class