Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: servlet: session tallennus ja luku

ezku [08.04.2008 22:12:41]

#

Olen tekemässä yksinkertaista verkkokauppa sovellusta, johon yritän tällä hetkellä koodailla ostoskoria. Nyt tarvisin sitten apua, koska logiikassani on jotain pielessä.
Ideana olen käyttänyt seuraavaa. Haen kannasta tuotelistan, josta on sitten mahdollista valita tuotteita. Tuotteen id:n, nimen ja hinnan lähetän parametrinä osoiterivillä takaisin servletille. Siellä on tarkoitus tallentaa se vectoriin ja vectori sen jälkeen sessioon. Jostain syystä tuo sessioon tallennus tai sitten sessiosta haku ei onnistu?

Servletti on tämän näköinen niiltä osin miltä tarvitsisin apua.

if (request.getParameter("id")!=null) {
		String hinta = request.getParameter("hinta");
		String id = request.getParameter("id");
		String tuotenimi = request.getParameter("nimi");
		System.out.println("tuotteen hinta on:"+hinta);
		System.out.println("id:n arvo on:"+id);
		System.out.println("tuotteen arvo on:"+tuotenimi);
		oOstoskori.LisaaTuote(new Tuote(id,hinta,tuotenimi));
		Vector<Tuote>homo=oOstoskori.getTuotteet();
		oOstoskori.setSessionVar("lista", homo);

ja nuo ostoskori luokan metodit näyttävät tältä:

public class Ostoskori {
	private HttpSession sessio;
	private HttpServletRequest request;
	private HttpServletResponse response;
	private Vector<Tuote> tuotteet;


	public Ostoskori(HttpServletRequest request, HttpServletResponse response) {
		this.request = request;
		this.response = response;
		sessio = request.getSession(true);
	}

	public Ostoskori() {
		LuoTuote();
	}

	private Vector<Tuote>LuoTuote() {
		tuotteet = new Vector<Tuote>();
		return tuotteet;
	}
	public void LisaaTuote(Tuote item) {
		tuotteet.add(item);
	}

	//luodaan sessio
	public void setSessionVar(String Nimi, Vector<Tuote> Arvo) {
		if ( request.getAttribute( "lista" ) == null ) {
		sessio.setAttribute(Nimi, Arvo);
		}
	}

	public Vector<Tuote> getSession(String nimi) {
		tuotteet=(Vector<Tuote>)sessio.getAttribute(nimi);
		return tuotteet;
		//		Tuote tuote = null;
//		Vector<Tuote>
//			Ostoskori vLista = //(Ostoskori)(sessio.getAttribute("lista"));
//			Vector<Tuote> tilu= getTuotteet();
//			for (int i=0;i<getTuoteMaara(tuotteet);i++) {
//				 tuote=(Tuote)vLista.el
//				 tulos = //tuote.getId()+tuote.getTuottennimi()+tuote.getHinta();
//			return tulos;
//			}
//		return null;
	}
	public void setTuotteet(String lNimi,Vector<String>vlista) {
		sessio.setAttribute(lNimi , vlista);
	}
	public Vector<Tuote> getTuotteet() {

		return tuotteet;
	}
	public String getLisattyTuote(String id, String tuotteennimi, String hinta) {
		String lisattyTuote = (id+tuotteennimi+hinta);
		return lisattyTuote;
	}
	public Integer getTuoteMaara(Vector<Tuote>tuotteet) {
		if (tuotteet!=null) {
			Integer tuotemaara= tuotteet.size();
			return tuotemaara;
		}
		return null;
	}
	public void poistaTuotteet() {
		tuotteet.removeAllElements();
	}
	public void poistatuote(String id) {
		tuotteet.remove(Integer.parseInt(id));
	}
}

Tämä voi olla vähän vaikea selvittää, mutta jos joku osaisi vähän antaa ideaa kuinka tuo homma toimisi helpoiten niin sekin olisi jo edistystä. Itellä kun tuo logiikka ei tunnu oikein pelaavan. Niin ja nuo muuttujan nimet ovat mitä ovat kun jossain vaiheessa ei jaksanu enää keskittyä.

Mod. lisäsi kooditagit

kayttaja-2499 [12.04.2008 14:27:02]

#

Ostoskoriluokkasi on sekava kuorutus listalle, mikä oikeastaan on turhaa. Sitten kun haluat ostoskorisi sisältävän muutakin kuin tuotelistan ostoskoriluokasta voisi olla hyötyä.
Kokeile ensin tehdä yksinkertaisesti.

if (request.getParameter("id")!=null) {
        String hinta = request.getParameter("hinta");
        String id = request.getParameter("id");
        String tuotenimi = request.getParameter("nimi");
        System.out.println("tuotteen hinta on:"+hinta);
        System.out.println("id:n arvo on:"+id);
        System.out.println("tuotteen arvo on:"+tuotenimi);

  HttpSession session = request.getSession(true);
  List<Tuote> tuotelista = session.getAttribute("ostoskori");
  if(tuotelista == null) {
    tuotelista = new Vector<Tuote>();
    session.setAttribute("ostoskori", tuotelista);
  }
  tuotelista.add(new Tuote(id,hinta,tuotenimi));
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta