Servlet及JSP学习(四)


注:图片来自书本Head First Servlets & JSP

1. JSP代码在容器中的处理流程

在这里插入图片描述

2. JSP元素

(1) Scriptlet

<% out.println(foo.Counter.getCount()); %> 直接在<%%>中写Java代码

(2) 表达式代码

<%= Counter.getCount() %> 注意和Scriptlet的区别:等号及其位置,以及没有分号,等号后面的内容相当于Scriptlet中println内部中的内容

(3) 指令

常用的指令有三个:page,include,taglib
<%@ page import=“foo.*” %>page后面可以跟的属性有13个,包括buffer,session,errorPage,isErrorPage等
<%@ include file=“URL”%>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>

(4) 声明

<%! int count=0;%>类似于Java中定义全局变量,多个Scriptlet可用。注意百分号后有叹号,语句后有分号

3. 为JSP配置Servlet初始化参数

在这里插入图片描述

4. JSP标准动作

(1) < jsp:include >

与include指令的区别如下:
在这里插入图片描述

1) include指令的原理:

在这里插入图片描述在这里插入图片描述

2) < jsp:include >标准动作的原理

在这里插入图片描述
在这里插入图片描述
总结:include指令是将两个页面合并生成一个Servlet进行请求处理,而< include:jsp >是进行转发机制,分别生成两个Servlet进行请求处理。如果是静态页面,使用include指令,如果被包含的页面包含动态的内容,只能使用< jsp:include >。

(2) < jsp:param >

< jsp:param >和< jsp:include >结合使用,用于定制被包含的内容
在这里插入图片描述
在这里插入图片描述

(3) < jsp:forward >

在这里插入图片描述
注意:发生转发时,请求转发到的目标资源首先会清空响应缓冲区,即转发前写到响应的所有内容都会清掉。

5. 无脚本的JSP

(1) 使用bean来实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
前端提交的请求可以不通过servlet,直接到JSP,此时JSP中如何获取变量名?
在这里插入图片描述
使用bean的具体演变过程如下
在这里插入图片描述

(2) 使用EL表达式

1) 基本用法

在这里插入图片描述
或者:
在这里插入图片描述
方括号左边可以为数组列表等且可以嵌套表达式,点号左边不允许
在这里插入图片描述

2) EL函数定义

分三步走
在这里插入图片描述

6. JSTL

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

(1) 部分常用的JSTL介绍:

< c:foreach >:类似于Java语言中list等的foreach,用于集合、数组等的循环遍历。可设置遍历的起始点、遍历的步长、计数器等
在这里插入图片描述
< c:if >:判断是否满足某一条件时执行的语句
在这里插入图片描述
注意:单引号的使用,而不是双引号。
< c:choose >:类似于Java语言中的if else的用法,结合< c:when >与< c:otherwise >一起使用
在这里插入图片描述在这里插入图片描述
< c:set >:与< jsp:setProperty >作用类似,但是后者只能设置bean的性质,而前者既可以设置bean性质,同时还可以设置map的值,同时可以设置属性的值。设置属性的值时使用var,设置bean性质或者map的值时使用target
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:target用来值定具体的对象,而不是对象名。
< c:remove >:删除属性,scope可选
在这里插入图片描述
< c:import >:作用类似与include指令与< jsp:include >标准动作,不同于后面两种,< c:import >包含的页面可以来自web容器之外
在这里插入图片描述
< c:param >:和< jsp:param >功能相同,可完成页面内容的定制
在这里插入图片描述
< c:url >:可以满足所有超链接需求,包括在JSP中进行url重写
在这里插入图片描述
在这里插入图片描述
< c:catch >:在JSP页面中捕获异常,其下面的代码会执行
在这里插入图片描述

(2) 常用的JSTL标记总结

在这里插入图片描述
在这里插入图片描述