Session - jsp et applet = différente session?
Bonjour, j'ai une web application qui est construite comme suit:
Accueil.jsp: contient des infos + un applet de connexion.
AppletConnexion: permet de se connecter sur le site et communique avec une servlet vérifiant le nom d'utilisateur et le mot de passe.
ServletVérification: elle vérifie si l'utilisateur est déja connecté ou alors vérifie les paramètres de login venant de l'applet et si c'est correct => Session.setAttribute("Connexion","OK").
Mon problème est que j'aimerai au démarrage de page Accueil faire la vérification si l'user est loggé. Mais l'applet me retourne bien que l'user est loggé mais lorsque je fait dans la jsp : session.getAttribute("Connexion") celui-)ci est à null???
Voici les codes
Accueil.jsp:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <div id="appletConnexion">
<applet code="appletconnection.ConnexionApplet" archive="MovieCityApplet.jar,Protocol.jar" height="69" width="268" />
</div>
<p id="spacer"></p>
</div>
<% if(session.getAttribute("connexion")!=null)
{
%>
<div id="caddy">
<h1>Caddy</h1>
</div>
<% } %> |
ConnexionApplet.java:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| String linkServlet = "http://localhost:8084/MovieCityServlet/FormAuthorizeServlet";
URL URLServlet = new URL(linkServlet);
URLConnection connect = URLServlet.openConnection();
connect.setUseCaches(false);
connect.setDefaultUseCaches(false);
connect.setRequestProperty("Content-Type", "application/octet-stream");
connect.setDoOutput(true);
connect.setDoInput(true);
OutputStream os = connect.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(object);
oos.flush();
InputStream is = connect.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
ACK ack = (ACK) ois.readObject();
System.out.println("ack: "+ack.getCode()+" - "+ack.getMessage());
switch(ack.getCode())
{
case 0:
getAppletContext().showDocument(new URL("http://localhost:8084/MovieCityWS/IncorrectPwd.html"), "_parent");
break;
case 1:
getAppletContext().showDocument(new URL("http://localhost:8084/MovieCityWS/"), "_parent");
break;
case 20:
drawConnected(ack.getMessage());
break;
/*case 21:
jLabel1.setText("notAlreadyConnected");
break;*/
case 22:
getAppletContext().showDocument(new URL("http://localhost:8084/MovieCityWS/"), "_parent");
break;
}
oos.close();
os.close();
ois.close();
is.close(); |
Servlet de vérification:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| response.setContentType("application/octet-stream");
OutputStream os = response.getOutputStream();
ObjectInputStream ois = new ObjectInputStream(request.getInputStream());
ObjectOutputStream oos = new ObjectOutputStream(os);
try
{
Object received = ois.readObject();
if(received.getClass().getSimpleName().equals("Login"))
{
Login login = (Login) received;
switch(checkLogin(login))
{
case 0:
oos.writeObject(new ACK(0, "Not Connected"));
oos.flush();
break;
case 1:
ACK ack = new ACK(1, "Connected");
HttpSession session = request.getSession(true);
session.setAttribute("connexion", ack);
session.setAttribute("username", login.getUser());
Calendar currentDate = Calendar.getInstance();
SimpleDateFormat formatter= new SimpleDateFormat("dd/MMM/yyyy HH:mm:ss");
String dateNow = formatter.format(currentDate.getTime());
session.setAttribute("derSess", dateNow);
oos.writeObject(ack);
oos.flush();
break;
}
oos.close();
ois.close();
return;
}
if(received.getClass().getSimpleName().equals("String"))
{
if(((String)received).equals("checkConnected"))
{
HttpSession session = request.getSession(true);
if(session.getAttribute("connexion")==null)
{
oos.writeObject(new ACK(21, "NotAlreadyConnected"));
oos.flush();
oos.close();
ois.close();
}
else
{
oos.writeObject(new ACK(20, (String)session.getAttribute("username")+"-"+(String)session.getAttribute("derSess")));
oos.flush();
oos.close();
ois.close();
}
return;
}
if(((String)received).equals("disconnect"))
{
HttpSession session = request.getSession(false);
session.invalidate();
oos.writeObject(new ACK(22, "Disconnected"));
oos.flush();
oos.close();
ois.close();
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public int checkLogin(Login login) throws SQLException
{
connectionMySQL conn = new connectionMySQL("InpresDB", "mysqlAdmin", "password");
ResultSet rs = conn.select("SELECT * FROM LOGIN WHERE Login='" + login.getUser() + "' AND Password='" + login.getPwd()+"'");
if(rs.next())
{
rs.close();
conn.close();
return 1;
}
else
{
rs.close();
conn.close();
return 0;
}
} |
merci d'avance
Julien