JSP中EL表达式和JSTL标签库的使用

1.JSP基本概念

**JSP(JavaServer Pages)**是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。
JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。
JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。

JSP,指Java服务器端页面。
可以理解为:一个特殊的页面,其中可以指定HTML便签,又可以定义Java代码。很大程度上简化了代码书写。
在这里插入图片描述

2.JSP原理

在这里插入图片描述
① 服务器解析客户端的请求消息,寻找index.jsp资源。
② index.jsp资源会转换为index_jsp.java文件,该index_jsp.java文件实际是一个Servlet。所以JSP本质上是一个Servlet。
③ 编译index_jsp.java文件,生成index_jsp.class字节码文件。
④ 由index_jsp.class字节码文件提供访问,将资源返回给浏览器。

3.JSP的脚本

JSP的脚本:JSP定义Java代码的方式。
<% 代码内容 %>:定义的Java代码,在service()方法中。
<%! 代码内容 %>:定义的Java代码,在Jsp转换后的Java类的成员变量位置。
<%= 代码内容 %>:定义的Java代码,会输出到页面上。
在这里插入图片描述

4.JSP的9个内置对象

JSP的内置对象指在JSP页面中不需要获取和创建,可以直接使用的对象。
pageContext、request 、session、application为域对象。

内置对象(即可使用的变量) 真实类型 描述
pageContext PageContext 当前页面共享数据,还可以获取其他8个内置对象
request HttpServletRequest 一次请求访问的多个资源(转发)
session HttpSession 一次会话的多个请求间
application ServletContext Servlet上下文对象,多个用户间共享数据
response HttpServletResponse 响应对象
page Object 当前页面(Servlet)的对象
out JspWriter 字符输出流对象,将数据输出到页面上
config ServletConfig Servlet的配置对象
exception Throwable 异常对象,只有在page指令中isErrorPage属性值为true才能使用

5.JSP的指令

JSP的指令主要作用适用于配置JSP页面,导入资源文件。
<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>

指令名称 描述
page 配置JSP页面
include 导入页面的资源文件, <%@include file=" xxx.jsp "%>
taglib 导入资源

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

page指令的常见属性 描述
contentType 等同于response.setContentType(),设置响应体的MIME类型以及字符集
import 导入java的jar包
errorPage 当前页面发生异常后,会自动跳转到指定的错误页面
isErrorPage 标识当前页面是否是错误页面,true值可以使用内置对象Exception

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

taglib指令的常见属性 描述
prefix 自定义的前缀名,推荐默认c
uri 标签库的uri路径

6.JSP页面中的注释

(1)HTML注释:<!-- -->:只能注释HTML代码片段。
(2)JSP注释:<%-- -->:可以注释所有代码片段,推荐使用该注释。

7.EL表达式

EL表达式:Expression Language表达式语言, 可以替换和简化JSP页面中java代码的编码。
语法:${表达式}

注意:JSP是默认支持EL表达式。要想忽略EL表达式,则可以再page指令中isELIgnored属性值为true即可。但这种方式会忽略整个页面的EL表达式,因此还有一种方法时忽略单个EL表达式,就是在EL表达式之前加\即可,例\${ 3 > 4 }

7.1.EL表达式的使用

运算符使用
算数运算符 + - * /(div) %(mod)
比较运算符 > < >= <= == !=
逻辑运算符 &&(and) ||(or) !(not)
空运算符 empty

注意:empty空运算符符用于判断字符串、集合、数组对象等是否为null且长度是否为0。
${empty list},判断域对象中list键的值是否为null且长度为0。
${not empty str},判断字符串、集合、数组对象是否不为null,且长度大于0。
在这里插入图片描述

获取域对象中的值
域对象 域对象名称
pageContext pageScope
request requestScope
session sessionScope
application(ServletContext) applicationScope

使用规则:
(1)从指定域中获取指定键的值,${域对象名称.键名}

举例,在request域中存储了name=Atlantis,那么可以通过${requestScope.name}
获取到值。

(2)依次从最小的域对象中查找是否有该键对应的值,${键名}
查找顺序(从小到大):pageContext -> request -> session -> application

举例,在request域中存储了name=Atlantis,那么${name}会依次从最小的域对象开始查找name键的值,直到找到位置。

(3)获取对象,${域对象名称.键名.属性名}
通过对象的属性来获取值,其本质是调用对象的set和get方法来获取到的值,而不是根据成员变量。
${requestScope.user.name},指在requestScope域中查找是否存在user键,若存在该键,则调用name属性值的get方法,即JavaBean中User类的getName()方法。

package com.atlantis.entity;

public class User {
   
    private String name;
    private int age;
	
	// 省略构造器和set、get方法
	// ...
}
<%@ page import="com.atlantis.entity.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>EL表达式获取对象的值</title>
</head>
<body>
  <%
    User user = new User(
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值