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
- 有默认构造函数
- 成员变量都是私有的,仅仅能通过getXX和setXX来訪问
- 可序列化(implements Serializable。可选。在分布式系统中才有意义)
Cookie
Cookies中包括三个属性,过期时间、路径、域名。所以在HTTP应答中Cookie的样子例如以下:
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; path=/; domain=example.com
Servlet中的Cookie类有下面方法:
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对象经常使用的方法例如以下:
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上,用户不能随意改变,因此更安全。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
JSP简明教程(四):EL表达式语言、JavaBean、Cookie、Session的更多相关文章
- JSP简明教程:汇总
原创JSP教程,简洁明了,不含废话. JSP简明教程(一):JSP简单介绍 JSP简明教程(二):JSP基本的语法 JSP简明教程(三):JSP隐含对象 JSP简明教程(四):EL表达式语言.Java ...
- Java EE JSP内置对象及表达式语言
一.JSP内置对象 JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象. JSP提供了9种内置对象: (一).request 简述: JSP编程中 ...
- 实战1--应用EL表达式访问JavaBean的属性
(1)编写index.jsp页面,用来收集用户的注册信息 <%@ page language="java" pageEncoding="GBK"%> ...
- EL表达式语言
EL (Expression Language) 目的:为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法. ...
- 在jsp中怎么使用Cookie?el表达式中获取cookie的问题
初学jsp,不清楚cookie的使用方法,希望高手指点一下! 一般来说有两种办法,在JSP中使用Java的嵌入脚本. 例如: 写入Cookie <html> <head>. ...
- JSP页面无法识别EL表达式
昨天一直纠结一个问题,JSP页面无法获取${user}的值,一直显示的是${user},今天解决了,原来是JSP页面无法识别EL表达式. 我的web.xml的声明如下: <!DOCTYPE we ...
- JSP页面不支持EL表达式的解决方法
JSP页面不支持EL表达式的问题就出在新建项目时web.xml的声明上. web.xml声明部分一般分为如下版本的xsd: web-app_2_2.xsd web-app_2_3.xsd web-ap ...
- jsp页面无法解析EL表达式问题
Servlet版本的问题.原来Servlet中可以设定是否解析EL表达式,只有2.4版本的Servlet默认是解析EL表达式的,而其他版本是默认不解析EL表达式.于是把web.xml中使用的2.5版本 ...
- JSP的EL表达式语言
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/expression-language.html: JSP表达式语言(EL)可以方便地访问存储在JavaB ...
随机推荐
- zTree实现地市县三级级联Service接口測试
zTree实现地市县三级级联Service接口測试 ProvinceServiceTest.java: /** * @Title:ProvinceServiceTest.java * @Package ...
- XAML基础(一)
1.0 XAML是啥? XAML(eXtensible Application Markup Language,可 扩展应用 程序标记语言) 是一种声明性的XML语法 ,像WPF,WF或者Silver ...
- Windows phone 8 学习笔记(9) 集成
原文:Windows phone 8 学习笔记(9) 集成 本节整理了之前并没有提到的Windows phone 8 系统相关集成支持,包括选择器.锁定屏幕的.联系人的访问等.选择器列举了若干内置应用 ...
- 【OC加强】NSDate的使用方法——日期时间在实际开发中比較有用
(1)日期的最主要知识点就是日期转换成字符串格式化输出,相反就是依照某个格式把字符串转换成日期. (2)一般关于时区的设置非常少用到,仅仅要了解就可以. #import <Foundation/ ...
- phpcms v9框架的目录结构分析
phpcms v9框架的目录结构分析: 了解v9框架的目录结构,有助于帮助我们快速建立起对v9框架的一个整体认识 打开"mycms"项目,有如下文件和目录 使用 ...
- BestCoder Round#11div2 1003
----- 有时候如果枚举起点超时,那么试试枚举终点. 枚举每一个i为终点(0<= i < n),且维护起点下标startPos 对于终点i,cnt[str[i]] ++, 如果小于等 ...
- HTTP请求WebTool
/// <summary> /// 执行HTTP POST请求. /// </summary> /// <param name="url">请求 ...
- HDU 4828 (卡特兰数+逆)
HDU 4828 Grids 思路:能够转化为卡特兰数,先把前n个人标为0.后n个人标为1.然后去全排列,全排列的数列.假设每一个1的前面相应的0大于等于1,那么就是满足的序列,假设把0看成入栈,1看 ...
- unity3d插入Daikon Forge GUI 中国课程-7-高级控制slider采用
(游戏开始的牛市)大家好我是孙广东.官方网站提供的是专业的视频教程http://www.daikonforge.com/dfgui/tutorials/,只是是在youtube上,要观看是须要FQ的. ...
- basename, dirname 在C语言中的使用
basename作用是得到特定的路径中的最后一个'/',后面的内容 如/usr/bin,得到的内容就是bin 如果/sdcard/miui_recovery/backup 得到的内容就是backup ...