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 fra Bluecircle
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