webForumDet fria alternativet

Hålla koll på användare som är "online"

Java

8 svar · 318 visningar · startad av Mc Fetto

Medlem sedan nov. 20022 355 inlägg
Frågan#1

Jag har en databas där jag registrerar användaren som "online" när denne loggar in och vill att när användaren inte är online längre ska registreras som "offline". Har förstått genom en del googlande att man kan sköta detta med sessioner och en servlet som känner av när sessionerna blir "gamla" :) .

Men jag har inte hittat någon vettig sida som går igenom detta tillräckligt för att jag ska hajja! Kan någon hjälpa mig komma igång? :q

Medlem sedan aug. 20021 752 inlägg
#2

Jag kan tyvärr inte prova denna kod men jag tror nog att det ska fungera :)

Skapa en klass med följande kod,

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionActivationListener;

public class SessionEventTest implements HttpSessionActivationListener
{
	public void sessionWillPassivate(HttpSessionEvent se)
	{
		System.out.println("Session "+se.getSession().getId()+" will now be passivated.");
	}

	public void sessionDidActivate(HttpSessionEvent se)
	{
		System.out.println("Session "+se.getSession().getId()+" hasl now been activated.");
	}
}

och sedan i din web.xml skriver du följande rader

<listener>
	<listener-class>SessionEventTest</listener-class>
</listener>

När du startar din web applikation så kommer listener klassen att laddas och ligga aktiv under hela applikationens liv och borde, enligt mina teorier :), skriva ut medelanden när en session skapas och när en försvinner.
Hoppas det fungerar :)

/Viktor

Medlem sedan maj 20012 237 inlägg
#3

Vart ser man vad en servlet skriver ut i System.out?

Medlem sedan aug. 20021 752 inlägg
#4

När man kör Tomcat i Linux ser man det i logg filen catalina.out, när man (jag) kör Windows i DOS fönstret :)

/Viktor

Medlem sedan nov. 20022 355 inlägg
#5

Skumt, när jag lägger in koden i web.xml så verkar det som servern inte kör igång (sidorna visas inte) tar jag bort det och startar om så fungerar det.
Filen är kompilerad och lagd i en mapp i web-inf kallad servlets (även utanför servlets för att testa! Vad kan detta bero på?
web.xml ser ut såhär:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!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>
<listener> 
<listener-class>SessionEventTest</listener-class> 
</listener> 

</web-app

sökvägen till web-inf är:

C:\jwsdp-1.3\webapps\ROOT\WEB-INF

Medlem sedan apr. 200357 inlägg
#6

Under WEB-INF mappen ska du skapa en mapp som heter classes och i den mappen så lägger du klassfilen

Medlem sedan nov. 20022 355 inlägg
#7

har även lagt den i classes, är det ngt jag beskriver fel i web.xml eller?

r/ nevermind, tog istället för att klipp och klistra och skrev in det för hand! Slank väl med någon osynlig krumelur på något sätt ;)

Får väl ta och testa Viktors servlet nu då :)

Medlem sedan nov. 20022 355 inlägg
#8

Om jag har förstått det rätt så ska det automatiskt skapas sessions när man går in på en .jsp sida?
Om så är fallet så händer det nada med SessionEventTest, ska classen automatiskt bara skriva ut i dosfönstret eller? Något annat man behöver?

Medlem sedan nov. 20022 355 inlägg
#9

Mc Fetto skrev:

Om jag har förstått det rätt så ska det automatiskt skapas sessions när man går in på en .jsp sida?
Om så är fallet så händer det nada med SessionEventTest, ska classen automatiskt bara skriva ut i dosfönstret eller? Något annat man behöver?

Ingen?

256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)