How to keep a Servlet session? -
i have written simple servlet want test old session kept when refresh browser. doesn't instead creating new session every time refresh page. isn't supposed create new session when close browser? i'm using servletrunner instead of running on tomcat, can problem?
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class sessionplay extends httpservlet { public void doget (httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { resp.setcontenttype("text/html"); //get session object httpsession session = req.getsession(true); string id = session.getid(); printwriter out; string title = "session play"; // write data of response out = resp.getwriter(); out.println("<html><head><title>"); out.println(title); out.println(id); out.println("</title></head><body>"); out.println("<h1>" + title + "</h1>"); if(session.isnew()) { out.println("<p>welcome new comer</p>"); out.println("<p>" + id + "</p>"); } else { out.println("<p>welcome back</p>"); out.println("<p>" + id + "</p>"); } out.println("<form action=sessionplay method=get>"); out.println("<input type=input name=param1>"); out.println("<input type=submit>"); out.println("</form>"); out.println("</body></html>"); out.close(); } }
sessions maintained cookies. when new session created in server, add cookie response client supposed send in subsequent requests in same session.
however, you're apparently refreshing initial request pressing f5 or refresh button in browser. initial request doesn't contain session cookie. if add link in html points page or page on same site , click it, you'll see session maintained.
one of ways go around creating filter redirect when session been created.
update: cookies disableable , host , context dependent. need ensure cookies enabled in both webserver (e.g. tomcat <context>
doesn't have cookies="false"
) , webbrowser (somewhere in settings) , hostname not intranet domain (some browsers disallow cookies on naked hostnames) , submitting same context (the webapp context name). hints how debug cookies, see this answer.
unrelated problem, emitting html in servlet not best practice. job done jsp file. use requestdispatcher#forward()
forward request jsp file after doing necessary java code actions.
Comments
Post a Comment