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 ...
随机推荐
- Thinkphp常用标签
告:在使用下列所说的任何标签库都需要 HTML第一行加入 <tarlib name=”cx,html” /> 如果想单独引入cx标签库就直接写成<tarlib name=”cx” / ...
- String,StringBuffer以及StringBuilder的差别
1.定义: String:String 类代表字符串. Java 程序中的全部字符串字面值(如"abc" )都作为此类的实例实现. 字符串是常量:它们的值在创建之后不能更改. 字符 ...
- mysql-定时调用存储过程
mysql定时调用存储过程,对表数据集表结构进行备份 存储过程实例: BEGIN DECLARE tname varchar(64); set @tname = CONCAT('RENAME TABL ...
- HDU 1661 Assigments 贪心法题解
Problem Description In a factory, there are N workers to finish two types of tasks (A and B). Each t ...
- windows phone 加速计(5)
原文:windows phone 加速计(5) 在windows phone 中存在着加速计,我们可以利用加速计获得用户手机的状态,根据手机状态调整我们的程序,这样会更人性化:windows phon ...
- SecureCRT 6.7.1 注冊机 和谐 破解 补丁 方法
之前一直在用SecureCRT 6.5.3 版本号,和谐补丁也好找,甚至中文版本号也可找到(眼下仅仅找到了SecureCRT.6.2.0) 可是换为 6.7.1 后就怎么也注冊不了了.. 没办法试了各 ...
- postgresql数据库配置csv格式的日志输出
postgresql数据库配置csv格风格日志输出 以下介绍postgresql数据库中关于csv格式日志(pg中一种比較具体的日志输出方式)的设置方法. 1.进入$PGDATA文件夹(pg的安装文件 ...
- 基于KMP与Levenshtein模糊匹配算法的银行联行号查询(转)
在人民银行那里,每个银行的每一个营业网点都有自己唯一的银行联行号,根据这个号码能快速定位一间银行具体的分支行,就像根据一个身份证号码能快速确定一个人一样.例如汇款时,汇款单上要求填写收款人开户行,然后 ...
- Unity--关于优化方面的那些事儿(一)
近期做一个小项目,要求包的大小不能超过30M. 晚上做了个小实验,方法的确非常本,只是曾经非常多没懂的地方如今清晰了很多,我是菜鸟!希望本文章对大家有帮助,谢谢! 实验结果: 实验结果: 1.场景中仅 ...
- Python多线程的threading Event
Python threading模块提供Event对象用于线程间通信.它提供了一组.拆除.等待用于线程间通信的其他方法. event它是沟通中最简单的一个过程之中,一个线程产生一个信号,号.Pytho ...