Avatar billede noerdar-dilling Nybegynder
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?
Avatar billede arne_v Ekspert
24. november 2004 - 22:55 #1
Mener du A HREF links ?
Avatar billede arne_v Ekspert
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.
Avatar billede noerdar-dilling Nybegynder
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>

---------------------------------------------------
Avatar billede arne_v Ekspert
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
Avatar billede arne_v Ekspert
24. november 2004 - 23:10 #5
altså at det er et URL rewrite problem
Avatar billede noerdar-dilling Nybegynder
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.
Avatar billede arne_v Ekspert
24. november 2004 - 23:24 #7
Jeg har glemt en parentes !

<a href="<%=response.encodeURL("genreListe")%>">Køb mere</a> Her er linket
Avatar billede noerdar-dilling Nybegynder
24. november 2004 - 23:29 #8
Ok prøver, vender tilabage imorgen vil smutte i seng nu. Reporterer tilbage imorgen
Avatar billede noerdar-dilling Nybegynder
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);
    }
   
   
   
}

--------------------------------------------------------
Avatar billede noerdar-dilling Nybegynder
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
Avatar billede noerdar-dilling Nybegynder
25. november 2004 - 01:12 #11
Kan compileres nu
Avatar billede arne_v Ekspert
25. november 2004 - 08:06 #12
:-)
Avatar billede arne_v Ekspert
25. november 2004 - 20:35 #13
så lig selv et svar og accepter
Avatar billede noerdar-dilling Nybegynder
26. november 2004 - 11:44 #14
Svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester