JSP-EL-JSTL使用全解

JSP的注释

HTML的注释

写法:<!–HTML的注释 -->
存在时机:
存在JSP的源码中,翻译成Servlet后这个注释存在,在生成HTML响应到页面的时候这个注释也会存在。

Java代码的注释

写法:
<%
// 单行注释
/* 多行注释 */
/*文档注释/
%>
存在时机:
存在JSP的源码中,翻译成Servlet后Java代码的注释也会存在,但是生成HTML响应到页面后,这种注释就消失了。

JSP注释

写法:<%-- JSP的注释 --%>
存在时机:
存在JSP的源码中,翻译Servlet后注释就没有了。
注意:Java代码注释的话不要使用HTML的注释!!!

  <!-- html的注释 -->
  
  <%
    //java单行注释
    //java多行注释
    //java文档注释
  %>
  
  <%--  jsp的注释--%>

JSP的指令元素的概述

JSP的指令元素的概述

JSP指令元素作用

  • 用于指示JSP执行的某些步骤
  • 用于指示JSP变现特定行为

JSP指令元素的语法

语法:<%@ 指令名称 属性名称=属性的值 属性名称=属性的值 %>

JSP指令元素的分类

  • page指令:指示JSP的页面设置属性和行为
  • include指令:指示JSP包含哪些其他页面
  • taglib指令:指示JSP页面包含哪些标签库

JSP的指令-page指令

Page指令简介

写法:<%@ page 属性名=属性值 %>
Page指令用来定义JSP文件的全局属性。
这些属性可以单独使用,也可以几个或多个同时使用。
在JSP页面中,只有import属性可以出现多次,其他属性都只能出现一次。

Page指令属性

  • language属性: 声明使用脚本的语言。只能是java。
  • extends属性: 标明JSP编译成Servlet的时候继承的类。默认值:HttpJspBase。
  • session属性: 标明JSP中是否可以直接使用session对象。默认值是true。
  • buffer属性: 标明JSP对客户端输出缓冲区大小。默认值8kb。
  • autoFlush属性: 如果缓冲区大小溢出,是否自动刷出。默认true。
  • import属性: 用于导入Java包或类。
  • contentType属性:标明JSP被浏览器解析和打开的时候采用的默认的字符集。
  • pageEncoding属性:JSP文件及JSP翻译后的Servlet保存到硬盘上采用字符集。
  • isErrorPage属性: 处理JSP页面异常。
  • errorPage属性: 处理JSP页面异常。
  • isELIgnored属性: 通知JSP是否忽略EL表达式。

JSP的指令-include指令

写法:<%@ include 属性名=属性值%>
作用:在JSP页面中静态包含一个文件,同时由该JSP解析包含的文件内容。

Include指令属性

  • file属性: 指示JSP页面包含页面路径。
  • 注意地方:
    应该将被包含的页面的结构去掉。
    在被包含的页面中定义变量,在包含的页面中还可以使用。

JSP的指令-taglib指令

写法:<%@ taglib 属性名=属性值%>
作用:用于在JSP页面中引入标签库。

Taglib指令属性

  • uri属性: 引入的标签库的路径
  • prefix属性: 引入标签库的别名

JSP的内置对象

什么是JSP的内置对象

JSP的内置对象:指的是可以直接在JSP页面中使用的对象。

JSP的内置对象有哪些

JSP当中有9大内置对象:

  • request :从客户端向服务器发送的请求对象
  • response :从服务器端向客户端作出响应对象
  • session :服务器为客户端创建会话对象
  • application :代表应用。获得的ServletContext对象。
  • out :向输出流写入内容的对象。
  • page :当前的JSP翻译成Servlet后的对象的引用。
  • pageContext :本JSP的页面的上下文对象。
  • config :本JSP的ServletConfig对象。
  • exception :表示JSP页面运行时产生的异常对象。

JSP的内置对象具体类型

  • request = HttpServletRequest
  • response = HttpServletResponse
  • session = HttpSession
  • application = ServletContext
  • config = ServletConfig
  • page = Object
  • pageContext = PageContext
  • out = JspWriter
  • exception = Throwable

pageContext对象的概述

pageContext对象直接翻译为“页面上下文”对象,代表的是当前页面运行的一些属性。
它是javax.servlet.jsp.PageContext类的实例对象。

pageContext对象作用

提供了page范围的数据存取的方法:

  • 向page范围中存入数据:
    setAttribute(String name, Object value);
  • 从page范围获取数据
    getAttrbiute(String name, Object value);
  • 从page范围移除数据
    removeAttribute(String name, Object value);

查找属性的方法:
通过这个对象获得其他的8个内置对象:
获得其他8个内置对象的方法

  • JspWriter getOut():获取out内置对象;
  • ServletConfig getServletConfig():获取config内置对象;
  • Object getPage():获取page内置对象;
  • ServletRequest getRequest():获取request内置对象;
  • ServletResponse getResponse():获取response内置对象;
  • HttpSession getSession():获取session内置对象;
  • ServletContext getServletContext():获取application内置对象;
  • Exception getException():获取exception内置对象;

JSP的四个作用范围

  • request
    request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域:仅在当前请求中有效。
    应用场景 : 常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递。

  • session
    服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。
    应用场景 : 常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对)。

  • Application(ServletContext)
    ServletContext在服务器启动时创建,在服务器关闭时销毁。
    所有的用户都可以取得此信息,此信息在整个服务器上被保留。Application属性范围值,全局变量,只要设置一次,则所有的网页窗口都可以取得数据。
    应用场景 : 一般用于在多个客户端间共享数据时使用。

  • page
    page对象即this,代表JSP本身,更准确的说它代表JSP被翻译后的Servlet,因此他可以调用Servlet类所定义的方法。page对象的类型为javax.servlet.jsp.HttpJspPage。
    应用场景 : 在实际应用中,page对象很少在JSP中使用

名称作用域
application在所有应用程序中有效
session在当前会话中有效
request在当前请求中有效
page在当前页面有效

findAttribute方法:

查找属性方法:先根据小范围的名称进行查找,如果找到了就返回,如果没有找到就会去比其大一个域的范围进行查找。

JSP的动作标签

什么是JSP的动作标签

JSP的动作标签用于在JSP页面中提供业务逻辑功能,避免在JSP页面中直接编写Java代码,造成jsp页面难以维护。

常用的动作标签

  • <jsp:forward/> :请求转发。
  • <jsp:include/>:包含(动态包含)。
  • <jsp:param/>:传递参数。

EL的概述

什么是EL

EL:Expression Language表达式语言。

EL作用(为什么要学习EL)

EL和JSTL一起使用取代JSP页面中嵌入Java代码写法。

EL功能

  • EL获取数据
  • EL执行运算
  • EL获取web开发常用的对象
  • EL调用Java方法

EL语法

语法:${ EL表达式 }

EL获取数据

EL表达式语句在执行的时候,会调用pageContext.findAttribute()方法。分别从page、request、session、application范围查找相应对象,找到就会返回相应对象,找不到返回””(不是null,是空的字符串)。EL所获取的数据需要在四个作用范围中。

  <%
    pageContext.setAttribute("name","张三");
    request.setAttribute("name","李四");
    session.setAttribute("name","王五");
    application.setAttribute("name","赵六");
  %>

<%--  使用jsp获取数据--%>
  <%= pageContext.getAttribute("name")%>
  <%= request.getAttribute("name")%>
  <%= session.getAttribute("name")%>
  <%= application.getAttribute("name")%>
  <hr>
<%--  使用EL获取数据--%>
  ${ pageScope.name }
  ${ requestScope.name }
  ${ sessionScope.name }
  ${ applicationScope.name }
  <hr>
<%--  EL的简写,从最小与对象开始获取--%>
  ${ name }

在这里插入图片描述

    <h3>获取数组的数据</h3>
    <%
      String[] arrs = {"aa","bb","cc"};
      pageContext.setAttribute("arrs",arrs);
    %>
    ${ arrs[0] }
    ${ arrs[1] }
    ${ arrs[2] }
    <h3>获取List集合的数据</h3>
    <%
      List<String> list = new ArrayList<>();
      list.add("11");
      list.add("22");
      list.add("33");
      pageContext.setAttribute("list",list);
    %>
    ${ list[0] }
    ${ list[1] }
    ${ list[2] }
    <h3>获取Map集合的数据</h3>
    <%
      Map<String,Integer> map = new HashMap<>();
      map.put("aaa",111);
      map.put("bbb",222);
      map.put("ccc.ddd",333);
      pageContext.setAttribute("map",map);
    %>
    ${ map.aaa }
    ${ map.bbb }
<%--    如果map的key中包含了特殊字符,不能使用.必须使用[]。--%>
<%--    .用来获取对象的属性的。--%>
<%--    []用来获得下标--%>
    ${ map["ccc.ddd"] }

在这里插入图片描述

EL执行运算

执行算数运算

在这里插入图片描述

执行关系运算

在这里插入图片描述

执行逻辑运算

在这里插入图片描述

执行三元运算

在这里插入图片描述

empty运算符

在这里插入图片描述

EL获取web开发常用对象

EL表达式定义了11个web开发常用对象。使用这些对象可以很方便获取web开发冲的一些常见对象,并可以读取这些对象中的数据。

  • pageContext :相当于JSP内置对象中pageContext
  • pageScope :获取指定域下的名称的数据
  • requestScope :获取指定域下的名称的数据
  • sessionScope :获取指定域下的名称的数据
  • applicationScope :获取指定域下的名称的数据
  • param :在页面中接收请求参数(接收一个名称对应一个值参数)。
  • paramValues :在页面中接收请求参数(接收一个名称对应多个值参数)。
  • header :在页面上获取请求头(获取一个key对应一个value 头)
  • headerValues :在页面上获取请求头(获取一个key对应多个value 头)
  • cookie :访问cookie的名称和值(${cookie.key.name} ${cookie.key.value})
  • initParam :获取全局初始化参数的值

JSTL的概述

JSTL的概述

JSTL:JSP的标准标签库。

为什么学习JSTL

主要和EL来取代传统页面上直接嵌入Java代码写法。提升程序可读性、维护性和方便性。

JSTL的版本

JSTL1.0、JSTL1.1和JSTL1.2版本

  • 1.0版本不支持EL表达式。
  • 1.1和1.2支持了EL表达式。

JSTL的标签库

  • c标签(core标签库)
  • fmt标签(国际化标签库)
  • xml标签
  • sql标签
  • jstl函数库(EL函数)

JSTL的入门

引入JSTL的jar包

在这里插入图片描述

新建JSP页面

在这里插入图片描述

引入标签库

在这里插入图片描述

使用JSTL

在这里插入图片描述

JSTL的if标签

if的标签使用

在这里插入图片描述

if标签的属性

  • test属性 :条件,条件为true在页面中显示,条件为false页面中不显示
  • var属性 :将test中的条件的值赋给一个变量,在var中定义变量
  • scope属性:作用范围

JSTL的foreach标签

foreach标签的使用

在这里插入图片描述

  • 11
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值