JSP简明教程(四):EL表达式语言、JavaBean、Cookie、Session

EL表达式语言

EL这是Expression Language。的目的是为了简化JSP句法。来看几个例子来清除。

${test} 它会被翻译成<%=test%>
${test.name} 会翻译成 <%=test.getName()%>
${sessionScope.username}} 会翻译成 <%=session.getAttribute("username")%>

仅仅有sessionScope、requestScope等才会翻译成getAttribute("xxx"),而其它的对象,会翻译成getXXX()。

EL中还支持四则运算、逻辑运算,语法和Java中的一样。EL中有隐含对象:pageContext、pageScope、requestScope、sessionScope、applicationScope、param、paramValues、header、headerValues、cookie、initParam。

param等价于request.getParameter,paramValues等价于request.getParameterValues,返回的是字符串数组。

Java Bean

JavaBean仅仅是一种成熟的约定,非常多框架依靠这个约定简化了非常多数据。JavaBean和普通的类相比没什么特别之处。本质事实上就是普通的Java类,也不须要特定的父类。仅仅要符合下列规则的类就是JavaBean:
  • 有默认构造函数
  • 成员变量都是私有的,仅仅能通过getXX和setXX来訪问
  • 可序列化(implements Serializable。可选。在分布式系统中才有意义)

Cookie


Cookies就是保存在浏览器上的一小段文本。是一组键值对。

Cookies中包括三个属性,过期时间、路径、域名。所以在HTTP应答中Cookie的样子例如以下:

Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; path=/; domain=example.com
当client兴许发送请求的时候就会加上Cookie: name=xyz。



Servlet中的Cookie类有下面方法:

JSP简明教程(四):EL表达式语言、JavaBean、Cookie、Session





JSP中能够向应答中加入多个Cookie,每一个Cookie对象是一个键值对,能够往HTTP应答中写入多个Cookie。下面是一个演示样例:
Cookie cookie = new Cookie("key", "value");
cookie.setMaxAge(86400);
response.addCookie(cookie);

读取Cookie能够通过request.getCookies获取一个Cookie数组。因为可能存在多个Cookie名字同样的情况,因此不能直接通过名称直接获得对应的Cookie。

删除Cookie能够将maxAge设为0,然后调用response.addCookie增加到应答中。


Session

会话管理。

HTTP是一个无状态的协议,所以server和浏览器须要一个方式来区分用户的身份。

首先。浏览器向server发送一个请求,server检測Cookie中是否有会话ID。假设server“不认识”这个会话ID(或者找不到会话ID),那么server会创建一个新的唯一编号,放在Map中,Key就是这个新的会话ID。Value就是空的Session对象。浏览器记下Cookie。在兴许的请求中都使用这个Cookie。假设server认识这个会话ID,那么server就会从Map中获取对应的Session对象。

sessionid能够放在Cookie中。也能够放在post表单中。也能够放在url中,比方http://example.com/page;JSESSIONID=45678943。



Session对象经常使用的方法例如以下:

JSP简明教程(四):EL表达式语言、JavaBean、Cookie、Session



Session的过期时间能够在web.xml文件里配置,单位为分钟。Tomcat中默认的超时时间是30分钟。

<session-config>
<session-timeout>15</session-timeout>
</session-config>

Session和Cookie的差别。分析差别之前还是先弄清楚是什么导致了它们的不同。在HTTP刚发明的时候。还没有Session的概念,因此开发人员仅仅能将重要的数据保存在Cookie中。可是Cookie的数据是保存在浏览器中的,用户能够随意改动,很不安全。因此有人提出了Session的概念,在Cookie中仅仅保存一串随机生成的SessionID,server依据SessionID查找相应的数据,这样。重要的数据就保存这里server上,用户不能随意改变,因此更安全。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

上一篇:Error on SVN checkout:SSL handshake failed


下一篇:第二次作业 APP分析