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