|
       10.4.4 Servlet alimb.java
       Acest applet este nucleul aplicatiei. La inceput, cand inca nu este selectata o subcategorie, acest servlet va afisa o lista de selectie cu subcategoriile din categoria selectata anterior si applet-ul ScrollItUp cu acelasi text introductiv. Dupa selectia unei subcategorii in locul applet-ului vor fi afisate criterii de cautare in lista de produse: pagina urmatoare, pagina anterioara, cautare dupa cuvinte cheie, cautare dupa pret maxim, alegerea unei alte subcategorii. In jos, imediat dupa criteriile de selectie, urmeaza o linie verticala realizata dinamic cu applet-ul RainbowHR. Dupa applet in jos urmeaza butoane pentru lucrul cu "cosul de alimente": pentru golire cos, pentru adaugare in cos si pentru a da comanda pentru cosul de alimente existent. In continuare servlet-ul genereaza lista de produse, din subcategoria selectata, pe pagini. In dreapta fiecarui produs este afisata imaginea acestia, daca are, si un checkbox pentru a fi adaugat in cosul de produse.
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.http.HttpSession;
import java.util.*;
public class alimb extends HttpServlet {
private String baseDir;
public void init(ServletConfig conf)throws ServletException {
super.init(conf);
baseDir = getServletConfig().getInitParameter("imagini");
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
doGet(req,res);
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
PrintWriter out=null;
try{
out = res.getWriter();
}
catch(IOException e) {;}
res.setContentType("text/html");
HttpSession ses = req.getSession();
Connection con = (Connection)ses.getAttribute("connexion");
//Pastrarea contextului folosind tehnica URL
String url1 = res.encodeURL("/adi/servlet/prcos");
out.println("<html>");
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
out.println("<META content=\"text/html; charset=windows-1252\" http-equiv=Content-Type>");
out.println("<LINK href=\"/adi/tli.css\" rel=STYLESHEET type=text/css>");
out.println("<META content=\"MSHTML 5.00.2614.3500\" name=GENERATOR>");
out.println("<meta http-equiv=\"Pragma\" content=\"no-cache\">");
out.println("<head>");
out.println("<title> Pagina realizata de servlet-ul alimb</title>");
out.println("<SCRIPT language=JavaScript1.1 src=\"/adi/Scriptj.js\"></SCRIPT>");
out.println("<SCRIPT>");
out.println("function validareCautare(form)");
out.println("{ return (checkString(form.elements[\"cuvch\"],sCuvch,true) &&");
out.println(" checkInt(form.elements[\"pretm\"],sPretm,true))");
out.println("}");
out.println("</SCRIPT>");
out.println("</head>");
out.println("<body bgcolor=\"#fff0f0\" link=#ffffff vlink=#ffffff alink=#ffffff>");
int iCat=0;
String querry="";
String cuvchi=null,cuvchf=null;
String pretmi=null,pretmf=null;
String subcti=null,subctf=null;
String cati=null,catf=null;
indprod ip = new indprod();
Hashtable Halcos = null;
/*
* Pentru sesiunea curenta se iau valorile atributelor
* "categorie", "subcategorie" si "movePage" - pentru vizualizarea pagi-
* nilor dintr-o subcategorie (o pagina 10 inregistrari)
*/
//pozitia curenta
ip=(indprod)ses.getAttribute("pozitie");
if(ip == null)
ip= new indprod();
/*
* Se ia valoarea parametrului "subcat"; daca este !=null atunci:
* - daca categoria data de parametru != categoria data de atributul sesiunii
* se pune varibila "iMovePage" pe 1(prima inregistrare din prima pagina);
* se seteaza atributul "subcat" la noua valoare
*/
pretmi=(String)ses.getAttribute("pretm");
pretmf=req.getParameter("pretm");
if(pretmf!=null){
if(!pretmf.equals(pretmi)){
pretmf=pretmf.trim();
pretmi=pretmf;
ip.delpoz();
ses.setAttribute("pretm",pretmi);
}
}
else
if(pretmi!=null){
pretmi=null;
ip.delpoz();
ses.setAttribute("pretm",pretmi);
}
cuvchi=(String)ses.getAttribute("cuvch");
cuvchf=req.getParameter("cuvch");
if(cuvchf!=null){
if(!cuvchf.equals(cuvchi)){
cuvchf=cuvchf.trim();
cuvchi=cuvchf;
ip.delpoz();
ses.setAttribute("cuvch",cuvchi);
}
}
else
if(cuvchi!=null){
cuvchi=null;
ip.delpoz();
ses.setAttribute("cuvch",cuvchi);
}
//subcategorie: implicit null
subctf=req.getParameter("subcat");
subcti=(String)ses.getAttribute("subcat");
if(subctf!=null){
if(!subctf.equals(subcti)){
cuvchi=null;
pretmi=null;
ip.delpoz();
subcti=subctf;
ses.setAttribute("subcat",subcti);
}
}
else
if(subcti!=null){
cuvchi=null;
pretmi=null;
ip.delpoz();
subcti=null;
}
//categorie
cati=(String)ses.getAttribute("cat");
catf=req.getParameter("cat");
if(catf!=null)
if(!catf.equals(cati)){
subcti=null;
cati=catf;
ses.setAttribute("cat",cati);
}
Halcos=(Hashtable)ses.getAttribute("cosal");
if(Halcos==null)
Halcos=new Hashtable();
out.println("<form action=\"" + url1 + "\" method=\"post\" name=view>");
try {
Statement stmt;
ResultSet rs=null;
stmt = con.createStatement();
out.println("<table width=\"600\">");
out.println("<td width=150>");
out.println("<font color=450000 size=3>");
//rs = stmt.executeQuery("select den from categ where cod=" + cati);
out.println("<b>Subcategoria: <br></font>");//\"" + rs.getString(1) + "\"</b><br>");
//rs.close();
out.println("<SELECT name=\"subcat\" onchange=do_reply();>");
querry="select c2,den from subcat where c1=" + cati + " order by c2";
rs = stmt.executeQuery(querry);
out.println("<option value=0");
if(subcti==null || subcti.equals("0"))
out.println(" selected");
out.println(">");
for(int i=0;i<10;i++)
out.println("    ");
out.println("</option>");
while(rs.next()){
out.println("<option value=" + rs.getString(1) + " " );
if(rs.getString(1).equals(subcti))
out.println(" selected ");
out.println(">" + rs.getString(2) + "</option>");
}
out.println("</select>");
rs.close();
out.println("</td><td width=450>");
//afiseaza tipurile de cautare pentru produse daca s-a ales o subc.
if(subcti!=null && !subcti.equals("0")){
out.println("<table width=\"350\">");
out.println("<td width=10 valign=center align=left>");
out.println("<td valign=center align=left>");
out.println("<b>Cuvinte cheie:</b><br><input type=\"text\" name=\"cuvch\" size=14 value=\"");
if(cuvchi!=null)
out.println(cuvchi);
out.println("\"></td>");
out.println("<td valign=center align=left>");
out.println("<b>Pret maxim:</b><br><input type=\"text\" name=\"pretm\" size=14 value=\"");
if(pretmi!=null)
out.println(pretmi);
out.println("\"></td>");
out.println("<td valign=center align=left><br>");
out.println("<input type=\"button\" name=\"cauta\" value=\"Cautare\"
onclick=\"if (validareCautare(this.form)) this.form.submit();\"><br>");
out.println("<input type=\"button\" value=\"Anulare\" onclick=\"putvoid(this.form)\"></td>");
out.println("</table>");
out.println("</td></table>");
}
else{
out.println("</td></table>");
out.println("<table width=600 height=870 align=left>");
out.println("<tr><td width=600 height=70 valign=middle align=center></tr>");
out.println("<tr><td width=600 height=500 valign=top align=center>");
out.println("<APPLET CODE=\"ScrollItUp.class\" ARCHIVE=\"ScrollItUp.jar\"" +
" codebase=\"/adi/applets\" WIDTH=\"450\" HEIGHT=\"400\">");
out.println("<PARAM NAME=\"bgcolor\" VALUE=\"600f0f\">");
out.println("<PARAM NAME=\"outlinecolor\" VALUE=\"000000\">");
out.println("<PARAM NAME=\"scrollbgcolor\" VALUE=\"fff0f0\">");
out.println("<PARAM NAME=\"fontcolor\" VALUE=\"450000\">");
out.println("<PARAM NAME=\"hovercolor\" VALUE=\"00ff00\">");
out.println("<PARAM NAME=\"linkcolor\" VALUE=\"ff0000\">");
out.println("<PARAM NAME=\"fontface\" VALUE=\"arial\">");
out.println("<PARAM NAME=\"fontstyle\" VALUE=\"plain\">");
out.println("<PARAM NAME=\"fontbold\" VALUE=\"on\">");
out.println("<PARAM NAME=\"fontsize\" VALUE=\"14\">");
out.println("<PARAM NAME=\"textfile\" VALUE=\"/adi/applets/test.txt\">");
out.println("<PARAM NAME=\"brakes\" VALUE=\"55\">");
out.println("<PARAM NAME=\"margin\" VALUE=\"5\">");
out.println("</APPLET>");
out.println("</tr></table>");
}
stmt.close();
}
catch(SQLException h) {
out.println("An SQL Exception was thrown.");
}
/*
* Se ia valoarea parametrului "next": poate avea valorile "next" si "prev";
* daca nu este null si are valoarea "next" atunci:
* - se interogheaza tabela alimente pentru a se lua nr. de inregistrari pentru subcategorie
* - daca nu exista inregistrari se returneaza mesaj
* - daca pozitia curenta < (nr de inreg din tabela alimene - 10) atunci se adauga 10 la pozitie
* daca valoarea este "prev" si pozitia curenta > 10 se scade 10 din pozitie
* atributul "movePage" ia valoarea pozitiei curente
*/
//daca s-a ales o subcategorie
if(subcti!=null && !subcti.equals("0")){
try {
int iRowCount=0;
String movepage;
int nopage=0;
String restr1=" ";
String restr2=" ";
String poztemp=null;
Statement stmt;
ResultSet rs;
stmt = con.createStatement();
//se numara produsele din subcategorie care corespund criteriilor
//si pret si cuv cheie
if(cuvchi!=null && !cuvchi.equals("") && pretmi!=null && !pretmi.equals(""))
restr1=" and pretp<=\"" + pretmi + "\" and denp like \"%" + cuvchi + "%\"";
//doar pret
if((cuvchi==null || cuvchi.equals("")) && pretmi!=null && !pretmi.equals(""))
restr1=" and pretp<=\"" + pretmi + "\"";
//doar cuv cheie
if(cuvchi!=null && !cuvchi.equals("") && (pretmi==null || pretmi.equals("")))
restr1=" and denp like \"%" + cuvchi + "%\"";
//fara nici un criteriu
if((cuvchi==null || cuvchi.equals("")) && (pretmi==null || pretmi.equals("")))
restr1=" ";
querry="select count(codp) from alimente where cat=" + subcti + restr1;
//out.println("<br>" + querry + "<br>");
rs = stmt.executeQuery(querry);
if(rs.getString(1).equals("0")){
iRowCount=0;
nopage=0;
out.println("<br>Nu exista inregistrari !<br>");
rs.close();
}
else{
iRowCount=Integer.parseInt(rs.getString(1));
nopage=iRowCount/10;
if((iRowCount%10)!=0)
nopage=nopage + 1;
rs.close();
//daca sirul pozitiilor nu este null
if(ip.getpozcur()!=null){
//sensul deplasarii
movepage = req.getParameter("next");
if(movepage==null){
if(ip.getpoz("next")!=null)
restr2=" and no>="+ ip.getpozcur() + " and no<" + ip.getpoz("next");
else
restr2=" and no>=" + ip.getpozcur();
}
else{
//next
if(movepage.equals("next")){
if(ip.getpage()<nopage && ip.getpoz(movepage)!=null){
//poz cur devine poz urm
ip.setpozurm(movepage);
if(ip.getpoz(movepage)!=null)
restr2=" and no>="+ ip.getpozcur() + " and no<" + ip.getpoz(movepage);
else
restr2=" and no>=" + ip.getpozcur();
}
//am ajuns la sfarsit ?
else
restr2=" and no>=" + ip.getpozcur();
}
//prev
if(movepage.equals("prev")){
if(ip.getpoz(movepage)!=null){
restr2=" and no>=" + ip.getpoz(movepage) + " and no<" + ip.getpozcur();
ip.setpozurm(movepage);
}
//sunt la inceput
else{
if(ip.getpoz("next")!=null)
restr2=" and no>="+ ip.getpozcur() + " and no<" + ip.getpoz("next");
//la inceput fara next = un singur element
else
restr2=" and no>="+ ip.getpozcur();
}
}
}
}
//sir pozitii vid
else
restr2=" ";
out.println("<table cellspacing=\"5\" width=\"500\">");
out.println("<tr><td width=200 align=\"left\">");
out.println("<input type=\"submit\" name=\"next\"value=\"next\">   ");
out.println("<input type=\"submit\" name=\"next\"value=\"prev\">");
out.println("</td><td width=300 align=right>");
out.println("Pagina " + ip.getpage() + " din " + nopage);
out.println("</td></tr>");
out.println("</table>");
querry="select * from alimente where cat=" + subcti + restr1 + restr2 + " order by no";
//out.println("<br>" + querry + "<br>");
rs = stmt.executeQuery(querry);
out.println("<applet code=\"RainbowHR.class\" ");
out.println("codebase=\"/adi/applets\" width=\"500\" height=\"2\" vspace=\"12\">");
out.println("<param name=\"color\" value=\"404040|F0C0A0\">");
out.println("<param name=\"repeat\" value=\"6\"><param name=\"speed\" value=\"4\">");
out.println("</applet><br>");
out.println("<table cellspacing=\"5\" width=\"570\" align=left>");
out.println("<tr><td width=\"570\">");
out.println("<table cellspacing=\"5\" width=\"570\" align=left>");
out.println("<td width=\"340\" align=left valign=middle>");
out.println("<input type=\"submit\" name=rmcos value=\"Goleste cos\">   ");
out.println("   <input type=\"submit\" name=adcos value=\"Adauga la cos\">");
out.println("<td width=\"200\" align=right valign=middle>");
out.println("<img src=\"/adi/imagini/cosal.gif\" usemap=\"#harta\" width=140 hight=60>");
out.println("<map name=harta>");
out.println("<area shape=\"rect\" coords=\"0,0,140,60\" href=\"" + url1 + "?cos=Adibun\"
target=\"_blank\">");
out.println("</map>");out.println("</table>");
out.println("</td></tr>");
out.println("<tr><td width=500 align=left><hr width=500 color=\"#fdddbf\" align=left></td></tr>");
int j=0;
while(rs.next() && j<10) {
if(j==0){
if(ip.getpozcur()==null){
ip.addpoz(rs.getString(8));
ip.setpozcur(rs.getString(8));
}
}
else
poztemp=rs.getString(8);
j++;
//calea pana la imagine
String filepath=baseDir + "/" + "c" + subcti + "/" + rs.getString(1)
+ "." + rs.getString(9);
filepath=filepath.replace('\\','/');
File f = new File(filepath);
filepath=filepath.substring(filepath.indexOf("adi")-1,filepath.length());
//lin t1
out.println("<tr><td width=570>");
//t2
out.println("<table cellspacing=\"5\" width=\"570\">");
//lint2
out.println("<tr>");
out.println("<td width=300 align=left >");
out.println("<font face=\"Arial\" color=\"#500000\" size=3><b>" + rs.getString(2) + "</b></font>");
if(rs.getString(7)!=null && !rs.getString(7).equals("")){
out.println("<br>");
out.println("<font face=\"Arial\" color=\"#904040\" size=3>" + rs.getString(7) + "</font>");
}
out.println("<font face=\"Arial\" color=\"#903000\" size=3><br>Pret ");
out.println("<b>" + rs.getString(3) + "</b> pe <b>" + rs.getString(4) + "</b></font>");
out.println("</td>");
if(f.length()!=0){
out.println("<td width=160 align=left valign=middle>");
out.println("<img src=" + filepath + "></td>");
}
else
out.println("<td width=160 align=left valign=middle>  </td>");
out.println("<td width=110 align=center valign=middle>");
prodcos pc = new prodcos();
if(Halcos!=null)
pc = (prodcos)Halcos.get(rs.getString(1));
else
pc=null;
if(pc!=null && pc.getcant()!=null && !pc.getcant().equals("0")){
out.println("<font face=\"Arial\" color=\"#a05050\" size=1>");
out.println("adaugat in cos<br> x " + pc.getcant());
out.println("</font>");
}
else
out.println("<input type=\"checkbox\" name=\"cosal\" value=\"" + rs.getString(1) + "\">");
out.println("</td>");
out.println("</tr></table>");
out.println("</td></tr>");
//lin t1
out.println("<tr><td width=500 align=left><hr width=500 color=\"#fdddbf\"
align=left></td></tr>");
}
rs.close();
out.println("<tr><td width=\"570\">");
out.println("<table cellspacing=\"5\" width=\"570\" align=left>");
out.println("<td width=\"340\" align=left valign=middle>");
out.println("<input type=\"submit\" name=rmcos value=\"Goleste cos\">   ");
out.println("   <input type=\"submit\" name=adcos value=\"Adauga la cos\">");
out.println("<td width=\"200\" align=right valign=middle>");
out.println("<img src=\"/adi/imagini/cosal.gif\" usemap=\"#harta\" width=140 hight=60>");
out.println("<map name=harta>");
out.println("<area shape=\"rect\" coords=\"0,0,140,60\" href=\"" + url1 + "?cos=Adibun\"
target=\"_blank\">");
out.println("</map>"); out.println("</table>");
out.println("</td></tr>");
out.println("<tr><td width=\"570\">");
querry="select * from alimente where cat=" + subcti + restr1 + restr2 + " order by no";
//out.println("<br>" + querry + "<br>");
rs = stmt.executeQuery(querry);
out.println("<applet code=\"RainbowHR.class\" ");
out.println("codebase=\"/adi/applets\" width=\"500\" height=\"2\" vspace=\"12\">");
out.println("<param name=\"color\" value=\"404040|F0C0A0\">");
out.println("<param name=\"repeat\" value=\"6\"><param name=\"speed\" value=\"4\">");
out.println("</applet><br>");
rs.close();stmt.close();
out.println("</td></tr>");
out.println("<tr><td width=\"570\">");
out.println("<table cellspacing=\"5\" width=\"500\">");
out.println("<tr><td width=200 align=\"left\">");
out.println("<input type=\"submit\" name=\"next\"value=\"next\">   ");
out.println("<input type=\"submit\" name=\"next\"value=\"prev\">");
out.println("</td><td width=300 align=right>");
out.println("Pagina " + ip.getpage() + " din " + nopage);
out.println("</td></tr>");
out.println("</table>");
out.println("</td></tr>");
out.println("</table>");
if(ip.getpoz("next")==null && poztemp!=null && !poztemp.equals(ip.getpozcur())){
poztemp=String.valueOf(Integer.parseInt(poztemp) + 1);
ip.addpoz(poztemp);
//out.println("<br>" + ip.getpozii() + " - " + ip.getpozcur() + "<br>");
}
ses.setAttribute("pozitie",ip);
}//end else exista inregistrari
}
catch(SQLException f) { out.println("An SQL Exception was thrown.");}
out.println("</form>");
}
out.println("</body></html>");
out.close();
}
}
|
|