18. marts 2004 - 18:37
Der er
90 kommentarer og 1 løsning
JSP og database
Skal lave en webshop, hvor kunder kan bestille en masse vare. Men kan ikke overskue hvordan jeg skal lave det. Noget med en sessionbean, som holder styr på hvad brugeren bestiller. Men hver bruger skal have sin egen kurv(database), hvordan gør man det? evt. viser et eksempel...
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
18. marts 2004 - 21:09
#1
18. marts 2004 - 21:15
#2
18. marts 2004 - 21:21
#3
Medmindre du har krav i "professionel kaliber", så vil jeg foreslå at du ikke bruger EJB's. Altså: - gem kurven i sessionen (og en java web app session har intet med session bean at gøre) - først når der købes gemmer du databasen med normal JDBC
18. marts 2004 - 21:43
#4
det vil sige, at jeg skal gemme varene i en ArrayList eller? Har jo flere forskellige JSP sider... På f.eks. den ene kan man bestille en mus og på en anden en harddisk.
18. marts 2004 - 21:47
#5
et kurveobjekt kan have en arraylist hvor du kommer et vare objekt i ja. og du gemmer kurven i din session, den kan du få fat i lige meget hvor du navigerer hen.
18. marts 2004 - 21:47
#6
Har en form: JSP1: <form> <input type="HIDDEN" name="varenavn" value="mus"> <input type="SUBMIT" name="skift" value="skift"> </form> JSP2: <form> <input type="HIDDEN" name="varenavn" value="harddisk"> <input type="SUBMIT" name="skift" value="skift"> </form> Hvordan skal jeg anvende session?
18. marts 2004 - 21:48
#7
hvordan kan man hente Sessionen fra en anden JSP side?
18. marts 2004 - 22:04
#8
jeg tror jeg ville lave en servlet der stod for det public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(true); Kurv kurv = (Kurv)session.getAttribute("kurv"); if (kurv == null) { // No cart already in session kurv = new Kurv(); session.setAttribute("kurv", kurv); } // kom request.getParameter("varenavn") i kurv } på jsp siden kan du hente med session.getEtEllerAndet() det er lige hvad jeg har i hovedet så det er måske ikke 100% korrekt.
18. marts 2004 - 22:06
#9
men jeg vil anbefale dig at du læser lidt på det... der er bla
http://javabog.dk/JSP/ som er gratis at læse.
18. marts 2004 - 22:17
#10
<jsp:useBean id="kurv" class="ArrayList" scope="session" /> Så kan du i alle dine JSP sider bruge kurv i Java kode (altså indeni <% %>) og alle sider vil bruge den samme ArrayList for en given session/bruger (men altså forskellige for forskellige sessioner/brugere).
18. marts 2004 - 22:19
#11
Nu siger vi f.eks. : JSP1: <% ArrayList kurv = (ArrayList)session.getAttribute("kurv"); if(kurv==null) { kurv = new ArrayList(); session.setAttribute("kurv", kurv); } %> <form> <input type="SUBMIT" name="mus" value="mus"> <%kurv.add(request.getParameter("varenavn"));%> <input type="HIDDEN" name="varenavn" value="mus"> </form> <form action="JSP2.jsp> <input type="SUBMIT" name="skift" value="skift side"> </form> ---------------------------- Så starter jeg JSP'en trykker 2 gange på mus, så ligger der mus, mus i arrayList. Derefter trykker jeg på skift. Hvordan tilføjer jeg så noget til arrayList fra JSP2?
18. marts 2004 - 22:22
#12
det prøver jeg lige
18. marts 2004 - 22:25
#13
Du tilføjer til kurv ved at skaffe en reference til kurv i side 2 og simpelt bruge add.
18. marts 2004 - 22:26
#14
Hvordan skal bønnen ArrayList se ud?
18. marts 2004 - 22:26
#15
Det skal iøvrigt siges at din kode til at hente kurv med og mit tag laver præcis det samme.
18. marts 2004 - 22:27
#16
ArrayList er en standard java klasse.
18. marts 2004 - 22:29
#17
<%@page import="java.util.*"%>
18. marts 2004 - 22:32
#18
er ikke helt inden i det, men kan du hurtigt lave et eksempel. :)
19. marts 2004 - 19:14
#19
Super simpelt eksempel. basket.jsp: <%@page import="java.util.*"%> <jsp:useBean id="basket" class="ArrayList" scope="session" /> <% if(request.getMethod().equals("POST")) { basket.add(request.getParameter("vare")); } %> <form method="POST" action="basket.jsp"> Vare: <input name="vare" type="TEXT" size="20"> <BR> <input type="SUBMIT" value="Add"> </form> Kurv: <%=basket%>
19. marts 2004 - 19:18
#20
og hvordan ser klassen ArrayList ud?
19. marts 2004 - 19:20
#21
Den er indbygget i Java ! Du kan slå den op i Java dokumentationen.
19. marts 2004 - 19:20
#22
Arh så kan jeg bedre forstå hvad du snakker om :)..
19. marts 2004 - 19:21
#23
De mest relevante metoder er: void add(Object o) Object het(int ix) int size()
19. marts 2004 - 19:21
#24
Object get(int ix)
19. marts 2004 - 19:23
#25
Den melder fejlen: Error(2): Unable to find class for bean: basket defined by tag with class: ArrayList
19. marts 2004 - 19:25
#26
Har du husket: <%@page import="java.util.*"%> ?
19. marts 2004 - 19:28
#27
yep, har importet den
19. marts 2004 - 20:37
#28
Så bør den også kunne finde ArrayList ...
19. marts 2004 - 21:17
#29
Sådan ser min kode ud: <%@ page contentType="text/html;charset=windows-1252"%> <%@ page language="java" import="java.util.*" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>untitled</title> </head> <body> <% if(request.getMethod().equals("POST")) { basket.add(request.getParameter("vare")); } %> <jsp:useBean id="basket" class="ArrayList" scope="session" /> <form method="POST" action="basket.jsp"> Vare: <input name="vare" type="TEXT" size="20"> <BR> <input type="SUBMIT" value="Add"> </form> Kurv: <%=basket%> </body> </html>
19. marts 2004 - 21:23
#30
Din kode virker hos mig hvis jeg flytter: <jsp:useBean id="basket" class="ArrayList" scope="session" /> op over den kode som bruger basket.
19. marts 2004 - 21:23
#31
Altså: <% if(request.getMethod().equals("POST")) { basket.add(request.getParameter("vare")); } %>
19. marts 2004 - 23:53
#32
hmmm underligt... det har jeg prøvet!? Melder stadig fejlen: Error(13): Unable to find class for bean: basket defined by tag with class: ArrayList
20. marts 2004 - 09:02
#33
har JDeveloper10g er ArrayList implementeret der?
20. marts 2004 - 09:21
#34
110% sikkert
22. marts 2004 - 16:55
#35
Et skud i tågen... Prøv at dele denne: <%@ page language="java" import="java.util.*" %> over to linier: <%@page language="java" %> <%@page import="java.util.*"%>
22. marts 2004 - 20:04
#36
melder stadig den samme fejl... der er evt fejl i min jdeveloper
22. marts 2004 - 20:07
#37
hvad bruger i siden det virker hos jer? Og hvor kan jeg hente programmet?
22. marts 2004 - 20:08
#38
JSP sider dobbelt compiles jo: .jsp --(jspc)--> .java --(javac)--> .class Kan du finde den .java fil som svarer til din .jsp fil ? (ihvertfald Tomcat og Resin lader den ligge på disk) Den kunne muligvis afsløre noget !
22. marts 2004 - 20:09
#39
Jeg bruger Tomcat til ren JSP/servlet og JBoss til fuld J2EE.
22. marts 2004 - 20:09
#40
22. marts 2004 - 20:12
#41
kurv.java
/*@lineinfo:filename=/kurv.jsp*/
/*@lineinfo:generated-code*/
import oracle.jsp.runtime.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
public class _kurv extends oracle.jsp.runtime.HttpJsp {
public final String _globalsClassName = null;
// ** Begin Declarations
// ** End Declarations
public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException {
response.setContentType( "text/html;charset=windows-1252");
/* set up the intrinsic variables using the pageContext goober:
** session = HttpSession
** application = ServletContext
** out = JspWriter
** page = this
** config = ServletConfig
** all session/app beans declared in globals.jsa
*/
PageContext pageContext = JspFactory.getDefaultFactory().getPageContext( this, request, response, null, true, JspWriter.DEFAULT_BUFFER, true);
// Note: this is not emitted if the session directive == false
HttpSession session = pageContext.getSession();
if (pageContext.getAttribute(OracleJspRuntime.JSP_REQUEST_REDIRECTED, PageContext.REQUEST_SCOPE) != null) {
pageContext.setAttribute(OracleJspRuntime.JSP_PAGE_DONTNOTIFY, "true", PageContext.PAGE_SCOPE);
JspFactory.getDefaultFactory().releasePageContext(pageContext);
return;
}
int __jsp_tag_starteval;
ServletContext application = pageContext.getServletContext();
JspWriter out = pageContext.getOut();
_kurv page = this;
ServletConfig config = pageContext.getServletConfig();
try {
// global beans
// end global beans
out.write(__oracle_jsp_text[0]);
}
catch( Throwable e) {
try {
if (out != null) out.clear();
}
catch( Exception clearException) {
}
pageContext.handlePageException( e);
}
finally {
OracleJspRuntime.extraHandlePCFinally(pageContext,false);
JspFactory.getDefaultFactory().releasePageContext(pageContext);
}
}
private static final char __oracle_jsp_text[][]=new char[1][];
static {
try {
__oracle_jsp_text[0] =
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n\"
http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n<title>Untitled Document</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n<script language=\"JavaScript\" type=\"text/JavaScript\">\n<!--\nfunction MM_reloadPage(init) { //reloads the window if Nav4 resized\n if (init==true) with (navigator) {if ((appName==\"Netscape\")&&(parseInt(appVersion)==4)) {\n document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}\n else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();\n}\nMM_reloadPage(true);\n//-->\n</script>\n</head>\n\n<body>\n<div align=\"center\">\n <table width=\"800\" height=\"64\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" th align=\"center\" >\n <tr>\n <th width=\"350\" height=\"64\" rowspan=\"2\" align=\"center\" valign=\"middle\" background=\"pic/øverstvenstre.gif\" scope=\"row\"><div align=\"center\"></div></th>\n <th width=\"450\" height=\"44\" align=\"center\" valign=\"middle\" bgcolor=\"#C5E8FB\" scope=\"row\"><div align=\"right\"><img src=\"pic/logo.gif\" width=\"102\" height=\"30\"></div></th>\n </tr>\n <tr>\n <th width=\"450\" height=\"20\" align=\"center\" valign=\"middle\" bgcolor=\"#C5E8FB\" scope=\"row\"><div align=\"right\"><a href=\"tilbud.htm\"><img src=\"pic/tilbudmedfarve.gif\" width=\"92\" height=\"20\" border=\"0\"></a><a href=\"produkter.htm\"><img src=\"pic/Produkter-udenfarve.gif\" width=\"92\" height=\"20\" border=\"0\"></a><img src=\"pic/kurv.gif\" width=\"92\" height=\"20\" border=\"0\"></div></th>\n </tr>\n </table>\n <table width=\"800\" height=\"400\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\" >\n <tr>\n <td bgcolor=\"#F0F5FB\"> <table width=\"514\" height=\"103\" border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" id=\"vare\">\n <tr bgcolor=\"#C5E8FB\">\n <th height=\"21\" scope=\"row\">Indkøbskurv</th>\n </tr>\n <tr bgcolor=\"#FFFFFF\">\n <th height=\"80\" background=\"\" bgcolor=\"#FFFFFF\" scope=\"row\">\n <div align=\"left\">\n <table width=\"510\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td width=\"254\"> </td>\n <td width=\"254\" align=\"right\"><div align=\"left\"></div></td>\n </tr>\n <tr>\n <td> </td>\n <td align=\"right\"> </td>\n </tr>\n\t\t\t\t\n </table>\n <p> </p>\n </div></th>\n </tr>\n\t \n </table></th>\n </tr>\n </table>\n <table width=\"800\" height=\"50\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" th align=\"center\" >\n <tr>\n <th width=\"700\" height=\"40\" bgcolor=\"#C5E8FB\" scope=\"row\"><div align=\"right\">\n \n <div id=\"Layer1\" style=\"position:absolute; width:94px; height:46px; z-index:1; left: 107px; top: 494px;\"><a href=\"kontaktos.htm\"><img src=\"pic/kontaktos.gif\" width=\"102\" height=\"30\" border=\"0\"></a></div>\n <p> <img src=\"pic/betaling/dankort_01.gif\" width=\"35\" height=\"22\"> <img src=\"pic/betaling/emc_01.gif\" width=\"35\" height=\"22\"> <img src=\"pic/betaling/visa_01.gif\" width=\"35\" height=\"22\"></p>\n </div></th>\n </tr>\n </table>\n</div>\n</body>\n</html>\n".toCharArray();
}
catch (Throwable th) {
System.err.println(th);
}
}
}
22. marts 2004 - 20:18
#42
Hm - det synes jeg ikke rigtigt giver noget - basket optræder jo ikke engang i filen ...
22. marts 2004 - 20:19
#43
Det er også mig der havde problemer med en anden opgave, hvor vi kom til den konklusion at der var bugs i jdeveloper... ved ikke om du kan huske det arne (bestil.jsp & ordre.jsp, hvor jeg ikke kunne få udskrevet data i ordne, men kun i bestil)?
22. marts 2004 - 20:20
#44
Er igang med at hente tomcat 5.... er det svært at sætte op?
22. marts 2004 - 20:23
#45
Det synes jeg ikke. hent ZIP unzip kør bin/startup.bat og du kører (der er en zillion ting man kan ændre i opsætning, men default er OK til at starte med)
22. marts 2004 - 20:29
#46
22. marts 2004 - 20:33
#47
1, 2 og 4 er nok (plus første halvdel af 3 hvis du ikke allerede har JAVA_HOME defineret) resten er enten optional for Tomcat eller for cocoon
22. marts 2004 - 20:44
#48
Kan du guide min gennem hvordan jeg bruger tomcat, eller tager det for langt tid? Vil bare køre mit eksempel kurv.jsp
22. marts 2004 - 20:45
#49
Du får selvfølgelig pointene for det
22. marts 2004 - 20:50
#50
Det er så simpelt !
installer Tomcat:
download
unzip
installer din web app:
kopier til webapps\test\basket.jsp (eller kurv.jsp hvis du har kaldt den det)
lav en standard webapps\test\WEB-INF\web.xml
start Tomcat:
startup.bat
test:
http://localhost:8080/test/basket.jsp i din browser
22. marts 2004 - 20:52
#51
lav en standard webapps\test\WEB-INF\web.xml??
22. marts 2004 - 20:59
#53
Den skriver The page cannot be displayed
22. marts 2004 - 21:08
#54
har installeret jakarta-tomcat-5.0.19, unzip'et filen. Lavet Right-click My Computer > Properties > Advanced > Environment variables... > System Variable pane, New... etc.
JAVA_HOME
c:\j2sdk1.4.2_01
CATALINA_HOME
c:\jakarta-tomcat-5.0.19
installer din web app:
kopier til webapps\test\basket.jsp (eller kurv.jsp hvis du har kaldt den det)
lav en standard webapps\test\WEB-INF\web.xml
start Tomcat:
startup.bat
test:
http://localhost:8080/test/basket.jsp i din browser
22. marts 2004 - 21:09
#55
Du har: webapps\test\basket.jsp webapps\test\WEB-INF\web.xml ?
22. marts 2004 - 21:11
#56
ja... er de her paths forkerte? JAVA_HOME c:\j2sdk1.4.2_01 CATALINA_HOME c:\jakarta-tomcat-5.0.19 hvad er CATALINA_HOME?
22. marts 2004 - 21:12
#57
Prøv lige at erstat web.xml med:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "
http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app>
</web-app>
22. marts 2004 - 21:12
#58
JAVA_HOME skal pege på rod directory for Java SDK CATALINA_HOME er optional men skal hvis den er defineret pege på roden af Tomcat
22. marts 2004 - 21:13
#59
hmm stadig det samme....
22. marts 2004 - 21:14
#60
Har du genstartet ? Nogen fejl i console vinduet for Tomcat ?
22. marts 2004 - 21:15
#61
cmd vinduet kommer frem i ca 1 sek og har prøvet at genstarte.
22. marts 2004 - 21:17
#62
virker somom det ikke opstartes... skal det være i process i taskmanager?
22. marts 2004 - 21:19
#63
Ja. Og vinduet skal være åben mens det kører. (man kan så starte den som service for at undgå det vindue, men lige nu er vi glade for noget console output)
22. marts 2004 - 21:20
#64
hmmm men det forsvinder med det samme
22. marts 2004 - 21:21
#65
1) check om JAVA_HOME er OK, om CATALINA_HOME er OK 2) åben en DOS box gå til Tomcat bin dir og skriv: catalina run og se hvilke fejl du får
22. marts 2004 - 21:23
#66
den lukker bare vinduet ned?
22. marts 2004 - 21:25
#67
Den kan da ikke lukke vinduet når det er et permanent vindue du har åbnet ?
22. marts 2004 - 21:27
#68
åbenbart... Start - Run - cmd - cd jakarta-tomcat-5.0.19 - cd bin - catalina run og cmd vinduet lukker.... Prøver lige at genstarte
22. marts 2004 - 21:31
#69
hmm den lukker stadigvæk
22. marts 2004 - 21:31
#70
hvilken version køre du med? jakarta-tomcat-5.0.19 ?
22. marts 2004 - 21:33
#71
4.1.29 og 5.0.18 prøv lige at: start menu programs accessories command prompt i.s.f. start run.
22. marts 2004 - 21:35
#72
der sker det samme
22. marts 2004 - 21:38
#73
er j2skd1.4.2_01 et program man skal hente... ?
22. marts 2004 - 21:40
#74
Det er Java SDK. Det skal man have. Men det er jeg sikker på at du har et eller andet sted. Fordi JDeveloper bruger den også. Men den ligger muligvis et andet sted. Men det er da nemt at checke om det directory eksisterer.
22. marts 2004 - 21:41
#75
troede den var installeret sammen med jdeveloper
22. marts 2004 - 21:43
#76
jdeveloper henter man som zipfil, så kan være den ikke er indedraget... Søger lige
22. marts 2004 - 21:44
#77
I min JDeveloper 9 er den med og ligger som: C:\JDeveloper\jdk
22. marts 2004 - 21:44
#78
kan være det er derfor jeg har så mange underlige problemer
22. marts 2004 - 21:46
#79
det bibliotek har jeg også... skal jeg så lave path'en til den?
22. marts 2004 - 21:48
#80
er igang med at installere j2skd1.4.2_01
22. marts 2004 - 21:52
#81
Du kunne prøve at lade JAVA_HOME pege på det.
22. marts 2004 - 21:52
#82
Men ellers er j2skd1.4.2_01 ihvertfald OK
22. marts 2004 - 22:00
#83
Er der andre pakker man skal installere ved siden af når man har pakket jdeveloper ud? Har haft en del problemer, som du heller ikke rigtig forstod
22. marts 2004 - 22:03
#84
nu virker det... efter jeg har lavet path'en om... er der ikke en installationsfil til jdeveloper...? Virker somom at det ikke er alle tingene der er sat op
22. marts 2004 - 22:04
#85
Men det virker ikke i Jdeveloper...
22. marts 2004 - 22:08
#86
Som sagt er den JDeveloper jo kun en Preview, så ...
22. marts 2004 - 22:10
#87
... Hvor skal pakkerne(packages)ligge?
22. marts 2004 - 22:13
#88
Du mener for beans ? webapps\test\WEB-INF\classes\dinpakke\DinBean.class
22. marts 2004 - 22:18
#89
Mange tak, nu virker det :)
22. marts 2004 - 22:21
#90
har du fået point?
22. marts 2004 - 22:23
#91
Jep
Kurser inden for grundlæggende programmering