Hi,  see the attached which is a doGet doPost format.
I started out using a service format which I used with an external user
interface html file containing the parameters and found I had problems with
internationalization of my fonts.  Changing to doGet solved this problem
and I am still working on why.  Anyway, here is a chopped up version of the
doGet. It will not compile because of space limitations but gives you some
idea of many of the structures. Morgan
public class dba extends HttpServlet {
  java.sql.PreparedStatement pstmt=null ;
  Properties template= new Properties();
  protected void doGet(HttpServletRequest req,HttpServletResponse res)
     throws ServletException, IOException {
     res.setContentType("text/html");
    // res.setContentType("text/html; charset=windows-1255"); //change
charset to your own
     res.setHeader("pragma", "no-cache");
     ServletOutputStream out = res.getOutputStream();
     //or use this PrintWriter out = res.getWriter();
     out.print("<html>");
     out.print("<head>");
     out.print("<title>GSBA Faculty Database</title>");
     out.print("</head>");
     out.print("<body>");
     out.print("<center><font size=4><b>Faculty Information
Database</b></font></center>");
     out.print("<hr><FORM METHOD=POST>");
     out.println("");
     out.print("<input type=hidden name=test value=interface>");
     out.println("<center><font size=3><b> Input Name to Search
:</b></font><input type=textarea name=query></center>");
     out.println("<hr>");
     out.println("<center><input type=submit value=submit></center>");
     out.println("<pre>");
     out.println("<font size=2><b>To Edit Personal Record</b></font>
<font size=3> <b>  noEdit<input type=radio name=updater value=default>
new record<input type=radio name=updater value=new>    update<input
type=radio name=updater value=update></b></font>");
     out.println("<h5><b>Input ID  :</b><input type=textarea
name=password></h5>");
     out.println("</pre>");
     out.print("</FORM></BODY></HTML>");
     out.close();
   }
   protected void doPost(HttpServletRequest req, HttpServletResponse res)
       throws ServletException, IOException {
       ResultSet rs=null;
       Connection con;
       query = req.getParameter("query");
       query=query.trim();
       templatename=req.getParameter("templ");
        ServletOutputStream out = res.getOutputStream();
        // or PrintWriter out = res.getWriter();
       res.setContentType("text/html; charset=windows-1255");
       out.print("<HTML><HEAD>TITLE>List Manager</TITLE></HEAD><BODY>");
       out.print("QUERY REQUESTED: "+query+"    ");
       paola= req.getParameter("test");
       if (paola==null) paola="default";
       String stack = (String)template.get("DATABASE");  // this is from a
properties file uploaded from disk
       srchfield = (String)template.get("FIELD"); // or obtained from user
doget method
       searchtable =(String) template.get("TABLE");
       String url   = "jdbc:odbc:"+stack;
       try {
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  // uses an access
database here
         con = DriverManager.getConnection(url, "", ""); //
DriverManager.getConnection(url, username, password);
         Statement stmt = con.createStatement ();
         String actiontotake= req.getParameter("test");
         query = "%"+query+"%";
         query=query.replace(' ','%');
         query=query.replace('*','%');
         query=query.replace('?','%');
         String holdbackquery=query;
         String prequery = "select * from "+searchtable+" where
"+srchfield+" like "+"'"+query+"'";
         query = prequery;
         stmt.setMaxRows(300);
         rs = stmt.executeQuery(query);
         boolean getback =
newedit(rs,out,Pass,query,paola,lowpass,passdd,passmm,passyr);
         out.print("<HR><A HREF=\"");
         out.print(req.getRequestURI());
         out.print("\">Here to RESET query else use BACK</A></BODY></HTML>");
         out.close();
         rs.close();
         stmt.close();
         con.close();
         return;
       } catch (SQLException ex) {
         if (ex != null) {out.print("<hr>*** SQLException ***<p>"+ex);}
       } catch (java.lang.Exception x) {x.printStackTrace();}
       out.print("<HR><A HREF=\"");
       out.print(req.getRequestURI());
       out.print("\">Here to RESET query else use BACK</A></BODY></HTML>");
       out.close();
     }
     boolean change(String query, HttpServletRequest req,Statement stmt,
Connection con, String paola, String searchtable,String
srchfield,ServletOutputStream out,ResultSet rs,String password, String
dd,String mm,String yr,String anchor, String anchorvalue) throws IOException
       {
        FileWriter resultsFile = new FileWriter("ChangeReport.txt",true);
        PrintWriter toFile = new PrintWriter(resultsFile);
        int pc=0;
        ResultSetMetaData rsmd=null;
        try {
          rsmd = rs.getMetaData();
          int numCols = rsmd.getColumnCount();
          if (paola.equals("new")){
            String cps = "INSERT INTO faculty("+rsmd.getColumnLabel(1);
            String endcps=") VALUES(?";
            for (int i=2; i<=numCols; i++) {
              if (!rsmd.getColumnLabel(i).equals("ID_D2N")){
                cps+=",";
                endcps+=",";
                cps+= rsmd.getColumnLabel(i);
                endcps+= "?";
              }
            }
            cps+=endcps+")";
            pstmt = con.prepareStatement(cps);
          }
          thedate=new Date();
          String reportstring="\n"+thedate+"  "+password+" "+dd+mm+yr;
          if (paola.equals("new")||paola.equals("update")){
            String updateresults="";
            reportstring += "Update ";
            if (paola.equals("update")) exquery = "UPDATE "+searchtable+"
set ";
            boolean myset=false;
            Enumeration values = req.getParameterNames();
            while(values.hasMoreElements()) {
              String names = (String)values.nextElement();
              String value = req.getParameterValues(names)[0];
              if (names.compareTo("submit") != 0) {
                if (paola.equals("new")) pstmt.setString(i, value);
                else {
                  if (myset){anchor=rsmd.getColumnLabel(i);
                    anchorvalue =value;
                    myset = false;
                  }
                  exquery += rsmd.getColumnLabel(i)+" = '"+value+"',";
                  reportstring +=value+";";
                }
              }
            }
            if (paola.equals("update")){int ii =
Integer.parseInt(anchorvalue);
              exquery=exquery.substring(0,exquery.length()-1);
              exquery +=" where "+anchor+" = "+ii;
              reportstring +=exquery;
            }
          }
          if (paola.equals("new"))pc = pstmt.executeUpdate();
          else pc = stmt.executeUpdate(exquery);
          if (0<=pc) out.print("<h2>update completed successfully</h2>");
          else out.print("<h2>update could not be completed as
submitted</h2>");
          toFile.print(reportstring);
          resultsFile.close();
        } catch (SQLException ex) {
            if (ex != null) { out.print("<hr>*** SQLException ***<p>"+ex);}
        }
        return false;
      }
    void tokenit(String order, ServletOutputStream out, ResultSet rs,
String query,String paola,ResultSetMetaData rsmd)
      throws SQLException , IOException{
      int totctr=pt.countTokens(),fieldsize=0,i;
      boolean tik=false;
      String ptt,str="null",txtnam="a1";
      StringTokenizer pt = new StringTokenizer(order," ");
      for (int r=1 ; r <= totctr ; r++ ) {
        ptt=pt.nextToken();
        ptt=ptt.trim();
        if (0>=ptt.length()) continue;
        i = Integer.parseInt(ptt);
        if (paola.equals("new")||paola.equals("update")) {
          txtnam = "a"+String.valueOf(i);
          fieldsize=rsmd.getColumnDisplaySize(i);
          if (fieldsize>=30) fieldsize=30;
          if (paola.equals("new")){ str = "null";
            if (!rsmd.getColumnLabel(i).equals("ID_D2N")){
              out.print("<th><font face='put your font here'><INPUT
TYPE=TEXTAREA NAME="+txtnam+" value="+str+" SIZE="+fieldsize+"</th>");
            }
          } else {tik=true;
            if (rsmd.getColumnLabel(i).equals("ID_D2N")){
               int integer = rs.getInt(i);
               out.print("<input type=hidden name=anchor value=ID_D2N>");
               out.print("<input type=hidden name=anchorvalue value="+ new
Integer(integer) +">");
            } else
              dispElement(rs, rsmd.getColumnType(i),rsmd.getColumnLabel(i)
,out, i, tik,txtnam,fieldsize);
          }
        } else
          dispElement(rs, rsmd.getColumnType(i),rsmd.getColumnLabel(i),out,
i, tik,txtnam,fieldsize);
      }
      out.print("</tr>");
    }
    boolean newedit(ResultSet rs, ServletOutputStream out,int Pass,String
query,String paola,String lowpass, String dd,String mm,String yr)
      throws SQLException, IOException {
      String txtnam,str,ptt;
      StringTokenizer pt;
      ResultSetMetaData rsmd = rs.getMetaData();
      int i = 0,totctr,numCols = rsmd.getColumnCount();
      out.print("<table border=3>");
      out.print("<tr>");
      String order;
      if ( paola.equals("new")|| paola.equals("update")) order ="original";
      else order = (String) template.get("COLUMNORDER");
      if (order == null|| 0>=order.length() ||order.equals("original")) {
        order="";
        for (i=1; i<=numCols; i++)order+= String.valueOf(i)+" ";
      }
      order=order.trim();
      pt = new StringTokenizer(order," ");
      totctr=pt.countTokens();
      for (int r=1 ; r <= totctr ; r++ ) {
        ptt=pt.nextToken();
        if (0>=ptt.length()) continue;
        i = Integer.parseInt(ptt);
        if (i==0) continue;
        out.print("<th><font face='put your font here'>" +
rsmd.getColumnLabel(i) + "</th>");
      }
      if (0<=paola.indexOf("new")||0<=paola.indexOf("update"))
        out.println("<hr><FORM METHOD=POST>");
      while (rs.next()) {
        out.print("<tr>");
        tokenit(order,out,rs,query,paola,rsmd);
        if (paola.equals("new")||paola.equals("update")) break;
      }
      out.print("</table>");
      if (0<=paola.indexOf("new")||0<=paola.indexOf("update")){
        out.print("<input type=hidden name=query value="+query+">");
         // in order not to have to ask the user to repeat codes and input
from initial request
        out.print("<input type=hidden name=test value=update>");
        out.print("<input type=hidden name=templ value=default>");
        out.print(" <pre>");
        if (0<=paola.indexOf("new"))
*        out.print("<input type=hidden name=updater value=new>");
        out.print(" </pre>");
        out.print("<input type=submit value=SubmitChange >");
      }
      return true;
    }
    private void dispElement(ResultSet rs, int dataType,String
label,ServletOutputStream out, int col,boolean tik,String txtnam, int
fieldsize)
      throws SQLException , IOException{
      String str = rs.getString(col);
      if (label.equals("ID_D2N")) out.print("<th>"+str+"</th>");
      else {
        if (tik) {str='"'+str+'"'; fieldsize =20;
          out.print("<th><font face='put your font here'><INPUT
TYPE=TEXTAREA NAME="+txtnam+" value="+str+" SIZE="+fieldsize+"</th>");
        } else {
          if (str != null&&0<=str.indexOf("http:")){
            int ht=str.lastIndexOf("/");
            if(ht != str.length()){
              String htmltag=str.substring(ht+1);
              out.print("<th><A HREF="+str+">"+htmltag+"</A></th>");
            } else out.print("<th><A HREF="+str+">str</A></th>");
         } else  out.print("<th><font face='put your font here'>" + str +
"</th>");
     }}}

___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".

Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html

Reply via email to