servlet中如何保留session???

03-12-15 blue

客户端访问如下:

URL url = new URL("http://localhost/manager/commservlet");

con = url.openConnection();

serverOut = new DataOutputStream(con.getOutputStream());

serverOut.writeUTF(命令值);

serverOut.flush();

serverOut.close();

serverIn = new DataInputStream(con.getInputStream());

String nextLine = serverIn.readUTF();

serverIn.close();

服务器端:

doget()方法:

DataInputStream dis = new DataInputStream(request.getInputStream());

String msg=dis.readUTF();

dis.close();

DataOutputStream dos = new DataOutputStream(response.getOutputStream());

result=处理结果;

dos.writeUTF(result);

dos.flush();dos。close();

安上述方式,客户端每发送一个命令,都要与服务器端servlet建立一次连接,并且输入输出流重新获得,这样上次命令执行后有用的信息不能被保留在session中,但是如果不关闭输入输出流的话,再次输入命令时不能正确写入。怎么才能保留session信息??

xfzhu2003
2003-12-16 09:45

session.setAttibute(String attName, Object o)

blue
2003-12-16 12:25

我试过了,是这样实现的:

(客户端通过一下方式和servlet取得连接

URL url = new URL("http://localhost/manager/commservlet");

con = url.openConnection();

服务器端servlet中有以下语句用来获得同一个客户的session:

HttpSession session= request.getSession(true);

if(session.isNew()){

System.out.println("session is new!!");

}

else{

GridGui gridOldGui=(GridGui)session.getAttribute("gridGui");

if(gridOldGui!=null){

gridGui=gridOldGui;

System.out.println("session is old and is hold!!");

}

}

session.setAttribute("gridGui",gridGui);

第二次客户端调用时,还是提示:session is new!!。

另外:我需要保留的session信息是服务器端的一个自定义类GridGui的对象!!