24. november 2004 - 22:52
Der er
13 kommentarer og 1 løsning
Session bliver ikke gemt ved spring mellem sider
Jeg har lavet en webshop. Sessionen bliver kun gemt hvis man bruger back knappen i browseren, hvis denne sætning er indsat i de dokumenter der skal bibeholde sessionen. Koden for dette er <%@ page session="true"%> Men foreksempel hvis jeg springer til en helt anden side via et link, så glemmer den hvad der var i sessionen. Hvordan kan det være?
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
24. november 2004 - 22:55
#1
Mener du A HREF links ?
24. november 2004 - 22:58
#2
Session kan implementeres enten via cookies eller via URL rewriting. For at URL rewriting virker så skal links laves som med: response.encodeURL(link) Mne cookies er default så det er kun relevant hvis browseren ikke vil acceptere cookies.
24. november 2004 - 23:08
#3
ok men hvordan gør jeg så det i f.eks. CheckOut.jsp hvis man gerne vil købe mere og skal over på en anden side som egentlig er en servlet genreListe der skriver til showGenre.jsp Koden for Checkout er her ------------------------------------------------------------------ <%@ page session="true" import="java.util.*, test.Book" %> <html> <head> <title>CheckOut</title> </head> <center> <table border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> <tr> <td><b>Forfatter</b></td> <td><b>Titel</b></td> <td><b>Isbn</b></td> <td><b>Pris</b></td> <td><b>Antal</b></td> <td></td> </tr> <% Vector buylist = (Vector) session.getValue("test.shoppingcart"); String amount = (String) request.getAttribute("amount"); for (int i=0; i < buylist.size();i++) { Book anOrder = (Book) buylist.elementAt(i); %> <tr> <td><b><%= anOrder.getForfatter() %></b></td> <td><b><%= anOrder.getTitel() %></b></td> <td><b><%= anOrder.getIsbn() %></b></td> <td><b><%= anOrder.getPris() %></b></td> <td><b><%= anOrder.getAntal() %></b></td> </tr> <% } session.invalidate(); %> <tr> <td> </td> <td> </td> <td><b>Total pris</b></td> <td><b>Kr.<%= amount %></b></td> <td> </td> </tr> </table> <p> <a href="genreListe">Køb mere</a> Her er linket </center> </body> </html> ---------------------------------------------------
24. november 2004 - 23:09
#4
<a href="<%=response.encodeURL("genreListe"%>">Køb mere</a> Her er linket men det er kun et gæt
24. november 2004 - 23:10
#5
altså at det er et URL rewrite problem
24. november 2004 - 23:15
#6
Får følgende fejl i tomcat ________________________________ type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Unable to compile class for JSP An error occurred at line: 44 in the jsp file: /jsp/shopping/Checkout.jsp Generated servlet error: C:\www\Tomcat5\work\Catalina\localhost\minApp\org\apache\jsp\jsp\shopping\Checkout_jsp.java:102: ')' expected out.print(response.encodeURL("genreListe"); ^ 1 error org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332) org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412) org.apache.jasper.compiler.Compiler.compile(Compiler.java:472) org.apache.jasper.compiler.Compiler.compile(Compiler.java:451) org.apache.jasper.compiler.Compiler.compile(Compiler.java:439) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) ShoppingServlet.doPost(ShoppingServlet.java:96) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
24. november 2004 - 23:24
#7
Jeg har glemt en parentes ! <a href="<%=response.encodeURL("genreListe")%>">Køb mere</a> Her er linket
24. november 2004 - 23:29
#8
Ok prøver, vender tilabage imorgen vil smutte i seng nu. Reporterer tilbage imorgen
24. november 2004 - 23:47
#9
Hej Arne prøvede alligevel. Detvirker ikke den glemmer hvad jeg tilføjede fra før. Her er den servlet man retunerer til. ------------------------------------------------------ package test; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.net.*; import java.sql.*; import java.util.ArrayList; public class genreListe extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { dbConnect dbc = new dbConnect(); Connection con = dbc.getConnection(); Statement stmt = con.createStatement(); int counter = 0; ResultSet rs = stmt.executeQuery("SELECT id, navn FROM genre"); ArrayList genreListe = new ArrayList(); while(rs.next()) { genreListe.add(new genre(rs.getInt(1), rs.getString(2))); } request.setAttribute("search", "done"); request.setAttribute("genreListe", genreListe); rs.close(); stmt.close(); counter ++; if(counter ==0) { request.setAttribute("searchnone", "none"); } con.close(); } catch (Exception e) { } getServletConfig().getServletContext().getRequestDispatcher("/showGenre.jsp").forward(request, response); } } --------------------------------------------------------
25. november 2004 - 00:26
#10
Har fundet fejlen det er fordi der i CheckOut.jsp står session.invalidate();, men hvis jeg fjerner dette kan filen ikke compiles
25. november 2004 - 01:12
#11
Kan compileres nu
25. november 2004 - 08:06
#12
:-)
25. november 2004 - 20:35
#13
så lig selv et svar og accepter
26. november 2004 - 11:44
#14
Svar
Kurser inden for grundlæggende programmering