C.V.

 
 

       10.5.8 Servlet inser.java

       Acest servlet este apelat de catre servlet-ul insed.java pentru a introduce datele completate de utilizator in baza de date. Fisierele imagine atasate nu sunt salvate in baza de date ci in directorul cu denumirea "/adi/imagini/alimente/cxx" unde xx este numarul subcategoriei in care se insereaza produsele. Deoarece se pot face upload-uri multiple, pana la trei produse in acelasi timp, fisierele imagine se salveaza la inceput sub forma 1.tip_1, 2.tip_2, 3.tip_3, pentru a nu se sterge sau modifica numele pentru cazul in care cele trei (sau 2) fisiere au aceeasi denumire. Chiar daca imaginea este aceeasi se considera astefel ca sunt fisiere distincte. Atunci cand se citesc parametrii upload-ului si se salveaza in baza de date, daca nu s-a completat campul denumire produs atunci fisierul atasat, daca exista, se sterge. Daca campul denumire este completat atunci fisierul atasat, daca exista, este redenumit din x.tip_x in codp.tip_x unde x este de la 1 la 3 iar codp este codul produsului. Exemplu de fisier upload-at:

       10183927312.jpg

unde 10183927312 este codul produsului iar jpg este tipul fisierului.

import java.io.*;
import java.util.*;
import java.util.Date;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.*;
import javax.servlet.http.HttpSession;

public class inser extends HttpServlet{  

private String baseDir;//directorul aplicatiei pentru imaginile produselor alimentare

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 {
  
  res.setContentType("text/html");
  HttpSession ses = req.getSession();
  Connection con=(Connection) ses.getAttribute("connexion");
  
  String url1 = res.encodeURL("/adi/servlet/insed"); 
  String url2 = res.encodeURL("/adi/servlet/opert"); 
  
  PrintWriter out = res.getWriter();    
  out.println("<html>");
  out.println("<meta http-equiv=\"Pragma\" content=\"no-cache\">");
  out.println("<head>");
  out.println("<title> Pagina realizata cu servlet-ul inser" + "</title>");
  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("<body>");
  
  //butoanele pentru intoarcerea la paginile de editare si subcategorii
  out.println("<table  cellspacing=\"5\" width=\"100%\">"); 
  out.println("<td width=40% align=\"rigth\">");
  out.println("<form action=\"" + url1 + "\"method=\"post\">");
  out.println("<input type=\"submit\" value=\"Editare\">");
  out.println("</form>");
  out.println("</td>");
  out.println("<td width=20%> </td>");
  out.println("<td width=40% align=\"left\">");
  out.println("<form action=\"" + url2 + "\"method=\"post\">");
  out.println("<input type=\"submit\" value=\"Categorii\">");
  out.println("</form>");
  out.println("</td>");
  out.println("</table>");	    
  
  try {   
    String subcti;
    int iRowCount;	

    //se extrage categoria    
    subcti=(String)ses.getAttribute("subcat");

    //se citeste numele si se calculeaza numarul de inregistrari pentru categorie
    Statement stmt  = con.createStatement(); 
    ResultSet rs; 

    rs = stmt.executeQuery("select den from subcat where c2=" +	subcti);
   out.println("<br><br>  Subcategoria  \"" + rs.getString(1) + "<br><br>");
    rs.close();

    rs = stmt.executeQuery("select count(no) from alimente where cat=" + subcti);
    if(rs.getString(1)!=null)
        iRowCount=Integer.parseInt(rs.getString(1));
    else 
        iRowCount=0;
    rs.close();stmt.close();
		
    //directorul cu imaginile categoriei; daca nu exista se creaza    		
    String dir;
    File fDir = new File(baseDir + File.separator + "c" + subcti);
     if(!fDir.isDirectory())
        fDir.mkdir();
     dir=fDir.toString();
     out.println("<br><br>   1 <br><br>");
     //se citesc parametrii	
     MultipartRequest multi = new MultipartRequest(req,dir,15*1024);
     out.println("<br><br>   2 <br><br>");
     //se adauga produsele in BD	
     int countAddProd=0;
    for(int i=1;i<4;i++){
        File f=null;
        File g=null;
        String fimp=null;
        String type="";
        String pname,dp,pret,up,expl,pozp,codp;
        stoi Pret, Pozp;
	  
        //fisierul pentru upload, el este deja pe disc
         pname="imp" + i;
         fimp = multi.getFilesystemName(pname);
         if(fimp!=null){
	 type = fimp.substring(fimp.indexOf(".")+1,fimp.length());
 	 f = multi.getFile(pname);
         }
        //denumire produs
        pname="denp" + i;
        dp = multi.getParameter(pname);
        //conditie minima pentru introducere in baza de date
        if(dp!=null){
      	pname="ump" + i;
	up = multi.getParameter(pname);
	if(up==null) up=" ";
	pname="pretp" + i ;
	pret = multi.getParameter(pname);
	Pret = new stoi(pret);
	pname="pozp" + i ;
	pozp = multi.getParameter(pname);
	Pozp = new stoi(pozp);   
	pname="expl" + i;
  	expl = multi.getParameter(pname);
	if(expl==null) expl=" ";
	//cod produs pe baza datei la care se adauga i= 1,3
	Date dtcod = new Date();
	codp=dtcod.getTime()/1000 + "" + i;
            countAddProd++;
	
	stmt = con.createStatement();
	String querry;
		
	//se adauga produs in pozitia specificata
	if(Pozp.IntS()>0 && Pozp.IntS()<=(iRowCount + countAddProd-1)){
		
	  //se incrementeaza numarul pentru produsele de "deasupra" 
	  querry="update alimente set no=no+1 where no>=" + Pozp.IntS() + " and cat=" + subcti;
	  stmt.executeUpdate(querry);
	  //out.println("<br>"+ querry +"<br>");
		  
	  //se insereaza produsul
	  querry="insert into alimente values(" + codp + ",\"" + dp.trim() + "\"," + Pret.IntS() 
	                      + ",\"" + (up.trim()).toLowerCase() + "\",\"\"," + subcti + ",\"" 
						  + expl.trim() + "\"," + Pozp.IntS() + ",\"" + type + "\")";
	  stmt.executeUpdate(querry);					  
	  //out.println("<br>"+ querry +"<br>");
	}
	else{
	
	  //produsul se insereaza la sfarsit
	  querry="insert into alimente values(" + codp + ",\"" + dp.trim() + "\"," + Pret.IntS() 
	                      + ",\"" + (up.trim()).toLowerCase() + "\",\"\"," + subcti + ",\"" 
 		         + expl.trim() + "\"," + (iRowCount + countAddProd) +  ",\"" + type + "\")";
	   stmt.executeUpdate(querry);					  
	  //out.println("<br>"+ querry +"<br>");
	}
	stmt.close();

 	//se redenumeste fisierul cu codul produsului
	String filepath="";
	if(fimp!=null){	
	  String ren = dir + File.separator + codp + "." + type;
	  g = new File(ren);
	  f.renameTo(g);
	  //out.println("<br>" + ren + "<br>");
				
	  //se afiseaza produsul introdus		
	  filepath=g.toString();
	  filepath=filepath.substring(filepath.indexOf("adi")-1,filepath.length());
	  filepath=filepath.replace('\\','/');
	}
	out.println("<hr>    Produsul " + i + " inregistrat:<br>");
	out.println("<table  cellspacing=\"5\" width=\"600\">"); 
	out.println("<td align=left valign=middle>");
	out.println("Denumire:<br>" + dp + "<br>" + expl + "<br>Pret " 
		             + Pret.IntS() + " pe " + up + "<br></td>");		
	out.println("<td valign=middle>");
	if(f!=null)
                out.println("<img src=" + filepath + " height=70></td>");
	    out.println("</table>");		
	}
	else{//nu s-a dat denumirea produsului
	    if(f!=null) f.delete();
	}
      }
  }
  catch(SQLException e) {
    out.println("An SQL Exception was thrown.");
  }
  catch(Exception e) { e.printStackTrace(out); }

  out.println("</body></html>");
  out.close();
}
}
	




 
 
C.V.
 
Hosted by www.Geocities.ws

1