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中能够向应答中加入多个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的更多相关文章

  1. JSP简明教程:汇总

    原创JSP教程,简洁明了,不含废话. JSP简明教程(一):JSP简单介绍 JSP简明教程(二):JSP基本的语法 JSP简明教程(三):JSP隐含对象 JSP简明教程(四):EL表达式语言.Java ...

  2. Java EE JSP内置对象及表达式语言

    一.JSP内置对象 JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象. JSP提供了9种内置对象: (一).request 简述: JSP编程中 ...

  3. 实战1--应用EL表达式访问JavaBean的属性

    (1)编写index.jsp页面,用来收集用户的注册信息 <%@ page language="java" pageEncoding="GBK"%> ...

  4. EL表达式语言

    EL (Expression Language) 目的:为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法. ...

  5. 在jsp中怎么使用Cookie?el表达式中获取cookie的问题

    初学jsp,不清楚cookie的使用方法,希望高手指点一下!   一般来说有两种办法,在JSP中使用Java的嵌入脚本. 例如: 写入Cookie <html> <head>. ...

  6. JSP页面无法识别EL表达式

    昨天一直纠结一个问题,JSP页面无法获取${user}的值,一直显示的是${user},今天解决了,原来是JSP页面无法识别EL表达式. 我的web.xml的声明如下: <!DOCTYPE we ...

  7. JSP页面不支持EL表达式的解决方法

    JSP页面不支持EL表达式的问题就出在新建项目时web.xml的声明上. web.xml声明部分一般分为如下版本的xsd: web-app_2_2.xsd web-app_2_3.xsd web-ap ...

  8. jsp页面无法解析EL表达式问题

    Servlet版本的问题.原来Servlet中可以设定是否解析EL表达式,只有2.4版本的Servlet默认是解析EL表达式的,而其他版本是默认不解析EL表达式.于是把web.xml中使用的2.5版本 ...

  9. JSP的EL表达式语言

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/expression-language.html: JSP表达式语言(EL)可以方便地访问存储在JavaB ...

随机推荐

  1. httpcomponents-client-4.3.x DOC

    Chapter 1. Fundamentals Prev     Next Chapter 1. Fundamentals 1.1. Request execution The most essent ...

  2. vi 按了ctrl+s之后

    再windows不管是写程序.还是用Word写文件.已经习惯了按ctrl+s 保存代码. 在用vi的时候.常常无意中按了ctrl+s,结果就是如同终端死掉了一样. 这是由于ctrl+s 终止屏幕输出( ...

  3. iOS7 文本转语音 AVSpeechSynthesizer

    OS7 的这个功能确实不错.我刚试了下,用官方提供的API ,简单的几句代码就能实现文本转语音! Xcode 5.0 工程建好后首先把AVFoundation.framework 加入到工程 AVSp ...

  4. Linux渗透+SSH内网转发

    http://www.jb51.net/hack/58514.html http://blog.chinaunix.net/uid-756931-id-353243.html http://blog. ...

  5. java基础---->Zip压缩的使用(转)

    java中提供了对压缩格式的数据流的读写.它们封装到现成的IO 类中,以提供压缩功能.下面我们开始java中压缩文件的使用. 目录导航: 关于压缩的简要说明 GZIP压缩文件的使用 ZIP压缩文件的使 ...

  6. 泛泰A870L/K/S第三版官方4.4.2原来的系统卡刷机包 (愿自己主动ROOT)

    采用suky大神ota具,来自官方的拍摄OTA包裹,未做任何改动, 使用官方recovery,还是我的头发中国TWRP 2.7.1.1 for A870 (己主动ROOT. 自己主动ROOT完后就自己 ...

  7. VMware vSphere 服务器虚拟化之十七 桌面虚拟化之安装View链接服务器

    VMware vSphere 服务器虚拟化之十七 桌面虚拟化之安装View链接服务器 View链接服务器(View Connection Server)是Vmware Horizon View桌面虚拟 ...

  8. HTML5_文本元素

    <!DOCTYPE html> <hmtl> <html  lang="zh-en"> <head> <meta  chars ...

  9. basename, dirname 在C语言中的使用

    basename作用是得到特定的路径中的最后一个'/',后面的内容 如/usr/bin,得到的内容就是bin 如果/sdcard/miui_recovery/backup 得到的内容就是backup ...

  10. redmine使用汇总redmine软件工程过程

    1.强制性当一个新的问题:轨道.议题.叙述性说明.状态.优先.分配给.父任务(假设没有可以不填,假设有请务必填写).开始日期.预计时间.党羽,请注意,这时候一定不要填写完成时间 2.如果你想在实时登记 ...