Eclipse13:JSP&EL&JSTL

这篇博客详细介绍了JSP的起源、运行原理、脚本元素、指令元素、注释等内容,包括JSP的四个作用范围、内置对象及其页面上下文对象的作用。接着,讲解了EL表达式的概念、作用和功能,如获取数据和执行运算。最后,简要介绍了JSTL的基本概念、版本和常用标签库,如if和foreach标签,以及综合案例的应用步骤。
摘要由CSDN通过智能技术生成

一、JSP

1.1 概述

JSP:Java Server Pages :Java服务器端页面。

JSP 就是 HTML + Java代码 + JSP自身东西

1.2 JSP由来

Servlet技术生成动态网页的时候很麻烦,需要通过response获得输出流,调用print方法进行打印的。这种编程方式很麻烦,而且美工也不容易处理。SUN公司为了简化动态网页开发,推出JSP

1.3 JSP的运行原理

JSP在执行时,会被服务器翻译为Servlet编译执行,JSP就是一个Servlet

1.4 JSP的脚本元素

<%!  %>   :JSP声明 翻译成 Servlet成员部分的内容。声明变量,方法,内部类。

<%= %>    :翻译out.print(),在service方法内部。用于生成HTML页面源码。

<%   %>   :嵌入Java代码 翻译成service方法内部的代码块。声明变量,内部类

1.5 JSP的模板修改

1.5.1 修改JSP的字符集编码。

                Winodws-preference

1.6 JSP的注释

1.6.1 HTML的注释

<!--HTML注释-->

存在时机:存在JSP的源码中,翻译成Servlet后这个注释也存在,在生成HTML响应到页面的时候这个注释也会存在

1.6.2 JAVA代码的注释

<% // 单行注释 
/* 多行注释 */ 
/**文档注释*/
 %>

存在时机:存在JSP的源码中,翻译成Servlet后Java代码的注释也会存在,但是生成HTML响应到页面后,这种注释就消失了

1.6.3 JSP注释

<%-- JSP的注释 --%>

存在时机:存在JSP的源码中,翻译Servlet后注释就没有了

注意:Java代码注释的话不要使用HTML的注释!!

1.7 JSP的指令元素

1.7.1 JSP指令元素的作用

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

1.7.2 JSP指令元素的语法

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

1.7.3 JSP指令的分类

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

1.7.4 JSP的指令-page指令

 (1)指令介绍:

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

(2)Page指令属性

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

 

 1.7.5 JSP的指令-include指令

(1)指令介绍

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

(2)指令属性

        file属性:指示JSP页面包含页面路径

(3)指令原理(静态包含原理)

注意地方:(1)应该将被包含的页面的结构去掉。

                  (2)在被包含的页面中定义变量,在包含的页面中还可以使用

1.7.6 Taglib指令

1.写法:<%@ taglib 属性名=属性值%>

2.作用:用于在JSP页面中引入标签库

3.Taglib指令属性

  1. uri属性:        引入的标签库的路径
  2. prefix属性:   引入标签库的别名

1.8 JSP内置对象

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

(2)JSP当中有9大内置对象:

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

(3)JSP的内置对象具体类型

  1. request              HttpServletRequest
  2. response           HttpServletResponse
  3. session              HttpSession
  4. application       ServletContext
  5. config                ServletConfig
  6. page                  Object
  7. pageContext     PageContext
  8. out                     JspWriter
  9. exception          Throwable

1.9 pageContext对象的概述

1.9.1 概述

pageContext对象直接翻译为“页面上下文”对象,代表的是当前页面运行的一些属性。

它是javax.servlet.jsp.PageContext类的实例对象

1.9.2 pageContext对象作用

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

(1)向page范围内存入数据 

(2) 向page范围内获取数据

(3) 向page范围内移除数据

 (4)查找属性的方法

1.9.2.2 通过这个对象获得其他的8个内置对象

 1.10 JSP的四个作用范围

  1. PageScope :页面范围。页面范围指的是在当前的页面内有效,出了这个页面,用pageContext保存的数据就无效了。
  2. RequestScope :请求范围。从客户端向服务器发送一次请求,服务器对这次请求作出了响应之后,用request保存的数据就无效了。
  3. SessionScope:会话范围。每个浏览器向服务器发送请求(多次请求)。将该会话结束。
  4. ApplicationScope :应用范围。在整个应用中任意的地方都可以获取

代码演示:(pageContext对象向四个域范围存取数据)

 findAttribute方法

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

1.11 JSP的动作标签

1.11.1 概述

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

1.11.2 常用的动作标签

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

1.11.3 演示

1.11.4 静态包含和动态包含的区别

二、EL表达式

2.1 概念

EL:Expression Language表达式语言 

2.2 EL的作用

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

2.3 EL的功能

  1. EL获取数据
  2. EL执行运算
  3. EL获取web开发常用的对象
  4. EL调用Java方法

2.4 EL语法

${ EL表达式}

2.5 EL功能1:获取数据

2.5.1 获取简单数据

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

代码演示:(EL表达式中查询不到的话返回空)

 2.5.2 EL获取数组和集合中的数据

 (1)获取数组的数据

 (2)获取List集合的数据

(3)获取Map的数据

 注意:

  1. 如果map的key中包含了特殊字符,不能使用.必须使用[]。
  2. 点(.)用来获取对象的属性的。[]用来获得下标

 2.6 EL 功能2:执行运算

2.6.1 算数运算

2.6.2 关系运算

 2.6.3 逻辑运算

 2.6.4 三元运算

 2.6.5 empty运算符

 2.7 EL功能3:获取web开发常用对象

常用对象有哪些

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

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

 

 

 三、JSTL

3.1 概述

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

3.2 JSTL的版本

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

  1. 1.0版本不支持EL表达式。
  2. 1.11.2支持了EL表达式。

 3.3 JSTL的标签库

  1. c标签(core标签库)
  2. fmt标签(国际化标签库)
  3. xml标签
  4. sql标签
  5. jstl函数库(EL函数)

3.4 JSTL的入门

步骤一:引入JSTL的jar包 

步骤二:引入标签库(jsp文件中)

步骤三:使用JSTL(对应关系如下图)

 3.5 JSTL的if标签

if标签的属性

  1. test属性  :条件
  2. var属性   :将test中的条件的值赋给一个变量,在var中定义变量
  3. scope属性:作用范围

  3.6 JSTL的foreach标签

 四、综合案例

步骤1:创建web项目

步骤2:引入相关的jar包


步骤3:创建包结构,引入工具类

数据库配置文件


步骤4:创建数据库和表

 

  1. 
    create database web04_student;
    
    use web04_student;
    
    create table student(
    
        sid int primary key auto_increment,
    
        sname varchar(20),
    
        sex varchar(10),
    
        age int
    
    );
    
    insert into student values (null,'张三','男',20);
    
    insert into student values (null,'李四','女',23);
    
    insert into student values (null,'王五','女',18);
    
    insert into student values (null,'赵六','男',25);
    
    insert into student values (null,'孙七','男',21);

    步骤5:创建实体类

  1. 步骤6:创建Servlet

 步骤7:创建Model的对象

 步骤8:编写list.jsp

 步骤9:执行

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值