阅读更多
jsp servlet 中 session 以及 cookie 如何正确使用呢?
上班都是ssh 这样的框架做项目。 感觉自己越来越不会了? 除了ssh 真的不会什么了。 集成各种框架, compass,连接池,poi,报表, freemaker或者volecity。
实现是无聊的狠。业余时间自己也从基础 想一想,学一学。
基础一直很弱的,本来不知道http协议的,后来慢慢学习,了解基础知识、
现在感觉 jsp,servlet 我都没掌握,也是了解一点点、感觉很悲剧。
jsp servlet 项目,不用任何框架,除了 数据库驱动jar包。
那么session 最好在哪创建?
我认真思考了,并且写了点测试代码。
jsp 中 session =true /false
如果是true 这个 session的 创建 是tomcat 编译jsp为servlet 中创建的,也就是 request.getsession()了。 这个不是个人控制创建,而是tomcat 负责的。
如果是false 就没什么了。
当然:这是在 cookie 没有禁用的情况下。 随意,但是最好jsp 中session都是false(页面中如果想取值可以留着)
假如cookie 禁用,并且 jsp 中的 session =true,那么 每次访问jsp 都会创建一个新、的session 这也是tomcat创建的。 因此我觉得,最好不要让tomcat 编译的时候创建session,自己在代码中负责创建, 关闭 jsp中的所有 session=false。
不知道我这样的理解是否正确。
如果 jsp 中 session =fasle 那么jsp页面中 使用EL表达式 取session 中值是无效的, ${xxx.xxx} ${sessionScope.xxx.xxx} .
但是使用request.getSession(true/false).getAtrrbute("xxx");可以取出值。
el表达式,在被编译之后为什么获取不到session呢?
这是 jsp 编译之后,el表达式的代码out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${sessionScope.employee.realname}", java.lang.String.class, (PageContext)_jspx_page_context, null, false));
out.write("<%=request.getSession(true/false).getAtrrbute("employee")%>");
感觉就是jsp中的这些代码 直接就输出了,没做什么事。request却可以得到session
el表达式 估计就是得不到吧。
谁能给点解释。或者 意见什么的也好啊。