JSP EL

JSP

JSP脚本元素

jsp脚本元素就是嵌套在<%和%>中的一条或多条java程序代码

  • JSP 脚本

    代码段,<% java 代码(变量,语句等)%>

    声明的Java代码将会编译到jspService方法中,声明的变量为_jspService方法的局部变量,调用JSP 脚本时,会为局部变量分配内存空间,调用结束后,释放局部变量占用的内存空间。

  • JSP 声明语句

    声明变量和方法作为类的属性或方法,<%! 定义的变量或方法等%>

    在上述语法格式中,声明的Java代码将会编译到Servlet的_jspService()方法之外,即在JSP声明语句中定义的都是成员方法,成员变量,静态方法,静态变量,静态代码块等,在JSP声明语句中声明的方法在整个JSP页面有效。在一个JSP页面中可以有多个JSP声明语句,单个声明的java语句可以是不完整的,但是多个声明组合后的结果必须是完整的Java语句

  • JSP表达式

    用于将程序数据输出到客户端<%= expression %>

    JSP表达式中的表达式结果直接输出到客户端,插入的为表达式,不是语句,JSP表达式中的变量或表达式之后不能为;

JSP注释

  • Html注释

    ``

    可见范围 jsp源码、翻译后的servlet页面、显示html源码

  • java注释

    //单行注释

    /*多行注释*/

    可见范围 jsp源码,翻译后的servlet

  • jsp注释:

    <%--注释内容--%>

    可见范围 jsp源码可见

JSP指令

page指令

页面特性进行描述,对整个页面都有效

<%@ page 属性名1=“属性值1” 属性名2=“属性值2” ...%>

include指令

静态包含一个文件

<%@ include file="被包含的文件地址" %>

  • 被引入的文件必须遵守JSP语法,其中的内容可以包含静态HTML,JSP脚本元素,JSP指令等普通JSP页面所具有的一切内容。
  • 除了指令元素之外,被引入的文件的其他元素都被转换成相应的java源代码,然后插入进当前JSP页面翻译成的Servlet源文件中,插入的位置与include指令在当前JSP页面中的位置保持一致。

taglib指令

用于页面中引入标签库的。

JSP9个内置对象

out,request,response,config,session,application,page,pageContext,exception

  • out对象(javax.servlet.jsp.JspWriter)

    向客户端发送文本形式的实体内容,与ServletResponse.getWriter方法返回的对象PrintWriter不同的是它相当于一种带缓存功能的PrintWriter,调用ServletResponse.getWriter()方法缓冲区的对象才能真正写入Servlet引擎所提供的缓冲区中。

    输入:

    out.println("first line");
    response.getWriter().println("second line<br>");
    

    输出:

    second line
    first line
    
  • pageContext

    • 获取其他8个内置对象

    • 存储数据功能(可设置存储范围)

      void setAttribute(String name,Object value,int scope);设置pageContext对象属性

      Object getAttribute(String name,int scope);获取pageContext对象的属性

      void removeAttribute(String name,int scope);删除指定范围内名称为name的属性

      void removeAttribute(String name);删除所有范围内名称为name的属性

      Object findAttribute(String name);从4个域对象中查找名称为name的属性,会按照page,request,session,application的顺序依次进行查找,找到返回属性值,否则返回为null

    • 域范围

      PageScope(PageContext):当前页面有效

      RequestScope(HttpServletRequest):一次请求范围

      SessionScope(HttpSession):一次会话范围

      ApplicationScope(ServletContext):应用范围

JSP动作元素

  • < jsp:include >动作元素

<jsp:include page="relativeUrl" flush="true|false" />

page属性用于指定被引入资源的相对路径,flush属性用于指定是否将当前页面的输出内容刷新到客户端,默认flush为false,服务器会等待读到底端,才输出到客户端。而当把 flush 属性赋为真值时,在缓存累积了一定数据时,服务器会先提供一部分数据给浏览器,并等待后续内容。

  • include指令与< jsp:include >动作元素区别
    • < jsp:include >标签中要引的资源和当前JSP页面是两个彼此独立的执行实体,即被动态引用的资源必须能被Web容器独立执行。而include指令只能引入遵循JSP格式的文件,被引入文件与当前JSP文件需要共同合并才能翻译成一个Servlet源文件
    • < jsp:include >标签中是在运行时才包含的,且只包含运行结果。而include指令引入的资源是在编译时期包含的,包含的为源代码
    • < jsp:include >标签运行原理与RequestDispatcher.include()方法类似,即被包含的页面不能改变响应状态码或者设置响应头,而include指令没有这方面显示

EL表达式

简化jsp写法${表达式}

  • 获取指定作用域的数据

    ${pageScope.name}

    ${requestScope.name}

    ${sessionScope.name}

    ${applicationScope.name}

    ${name}依次从page,request,session,application获取获取数据,如果都没有返回null

  • 获取请求参数

    ${param.username}

    ${param.hobby} 获得第一个参数

    ${paramValues.hobby}获取一组数据,使用数组

    ${paramValues.hobby[1]}如果是数组可以使用下标获得

  • 请求头

    ${header.accept}

    ${header[accept-Encoding]}

    ${headerValues[accept-Encoding][0]}

  • pageContext

    ${pageContext.request.contextPath}

  • 全局初始化参数

    ${initParam.name}

  • Cookie

    ${cookie}使用map存储所有Cookie,Map<名称,对象>

    ${cookie.company}根据key获取响应value

    ${cookie.company.name}通过javaBean属性获取属性

    ${cookie.company.value}

  • EL自定义数据获取必须存储在作用域中

  • EL支持算术运算符,逻辑运算符,关系运算符,三元运算符,empty运算符

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 1.学习内容 JSP技术入门和常用指令 JSP的内置对象&标签介绍 EL表达式&EL的内置对象 2.JSP技术入门...
    WendyVIV阅读 2,116评论 1 18
  • 一、JSP基础 1.1什么是JSP JSP(Java ServerPage)是Java服务器端动态页面技术。是su...
    晨星资源阅读 1,137评论 0 6
  • 1.什么是JSP (1)jsp全称是Java Server Pages,它和Servlet技术一样都是sun公司定...
    yjaal阅读 3,628评论 5 99
  • 前面讲了servlet入门实践现在开始介绍jsp入门实践,开发环境的搭建请参考我前面的tomcat的文章,jsp入...
    伊豚wall阅读 3,358评论 2 56
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,559评论 18 399