文章说明:黑色字体-已知,蓝色字体-所见即所得,红色字体-还需要再找资料弄明白的,黄色背景-提炼关键信息
参考资料:很多参考资料,段落下有原文链接到原作者
声明:JSP简介和JSP发展史写的太过复杂,都是废话,JSP就是一个可以写HTTP标签和JAVA代码的JSP文件,由servlet进化而来,底层是servlet,然后看JSP具体除了HTTP代码和JAVA代码还写什么就行了,最多在看JSP之前看下sevlet。EL和JSTL是为了简化JSP的JAVA代码。
JSP简介
-
HTTP:静态页面。
固定不变的页面。(直接从服务器发送给用户写好的页面。)
用来描述网页,是标记语言,而非编程语言。
直接运行。可直接打开。 -
JSP(Java Server Pages):动态页面。与ASP(微软的动态页面技术)类似。
显示内容因人而异。(通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。)
是网页编程语言。
运行时转换成servlet。需要发布到服务器。需要JDK编译。
表头<%@ page language=”java” import=”java.util.*” pageEncoding=”gbk”%>在表头中有编码格式和倒入包等。 -
JSP使用
servlet也是动态页面实现技术,JSP解决了servlet的缺陷(需要配置,向网页输出HTML页面内容困难),本质也是一个servlet。
在标签<%和%>之间插入java代码。
JSP在后台通过服务器解析为相应的html,然后在供浏览器识别显示。
JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
JSP发展史
- JSP的出现为了解决Servlet在响应时不适合向外输出页面的问题
Servlet适合处理逻辑,处理的结果太适合由Servlet向外输出(不适合输出完整的html页面)。
Html展示数据。本质是一个文档(静态资源),无法展示动态的数据。
jsp适合编写html代码、作为响应页面向外输出,同时可以写java代码、展示动态的数据。
jsp在第一次访问时,被翻译成Servlet,访问jsp后看到的页面,是翻译后的Servlet在向外输出。 - JSP的第1代开发技术:纯JSP技术
- JSP的第2代开发技术:JSP+EJB
- JSP的第3.1代开发技术(MVC):JSP+servlet+EJB(Model1)
- JSP的第3.2代开发技术(MVC):JSP+servlet+JavaBean+service(Model2)
- 各版本详细实现代码:https://blog.csdn.net/qq_34928644/article/details/82556284
JSP应用
JSP指令
作用:用于配置JSP页面,导入资源文件。
格式:<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 … %>
分类:
page:配置JSP页面。
contenType:等同于response.setContentType()。
- 设置响应体的mime类型以及字符集
- 设置当前JSP页面的编码(高级IDE,如果是低级编译器,需要设置 pageEncoding 属性来设置字符集)
import:导包。
errorPage:当前页面发生异常后,会自动跳转到指定的错误提示页面。
isErrorPage:标识当前页面是否为错误页面。
- true:是,可以使用内置对象 exception
- false:否,默认值,不可以使用内置对象 exception
include:导入页面资源文件。
<%@include file=“top.jsp”%>
taglib:导入资源。
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>
JSP注释
<!-- -->:只能注释HTML代码片段
<%-- --%>:可以注释所有代码片段
JSP九大内置对象
在JSP页面中不需要创建,可以直接使用的JSP九大内置对象。
变量名——真实类型——作用
pageContext——PageContext——当前页面共享数据,可以获取其他 8 个对象
request——HttpServletRequest——一次请求访问的多个资源(转发)
session——HttpSession——一次会话的多个请求
application——ServletContext——所有用户间数据共享
response——HttpServletResponse——响应对象
page——Object——当前页面(Servlet)对象
out——JspWrite——输出对象,输出数据到页面上
config——ServletConfig——Servlet的配置对象
exception——Throwable——异常对象
EL表达式
定义:Expression Language(表达式语言),主要替换和简化JSP页面中的java代码。
语法:${表达式}
忽略JSP中所有EL表达式的指令:isElignored=“true”
忽略当前的EL表达式:\${表达式}
EL使用:
1、运算符
- 算数运算符:+ - * /(div) %(mod)
- 比较运算符:> < >= <= == !=
- 逻辑运算符:&&(and)||(or)!(not)
- 空运算符:empty
${empty str}:判断字符串,集合数组对象是否为null或者长度是否为 0
${not empty str}:判断字符串、集合、数组对象是否不为null且长度大于 0
2、获取值
- EL 表达式只能从域对象中获取值。
- 格式:
${域名称.键名}<!--从指定的域中获取指定的键值。-->
域——对应的域名称
pageContext——pageScope
request——requestScope
session——sessionScope
application——applicationScope
${键名}<!--表示依次从最小的域中查找是否有该键对应的值-->
- 获取对象:${域名称.键名.属性名}
本质上是调用Javabean中的getter方法 - 获取 List 集合:${域名称.键名[索引]}
获取 Map 集合
${域名称.键名.key名称}
${域名称.键名[“key名称”]}
3、隐式对想
EL表达式中有11个隐式对象,主要说pageContext。
pageContext主要功能有:
获取 JSP 其他八个内置对象
JSTL标签
JSTL 标签(JavaServer Pages Tag Library),即JSP标准标签库,是由 Apache 组织提供的开源免费的JSP标签,主要是用来简化和替换JSP页面上的Java代码,具体使用步骤如下:
导入jstl相关jar包
引入标签库:taglib指令引入:<%@ taglib %>
使用标签
1、if 标签
属性:test 属性,为必须属性,接受 boolean 表达式
一般情况下,test属性值会结合 EL 表达式一起使用
if 标签没有else情况,如果想要else效果,可以定义多个 if 标签
2、choose 标签
choose 标签就相当于switch 语句,switch 需要配合 case、default 来使用,而choose则需要配合when、otherwise 来使用
使用choose标签声明:相当于 switch 声明
使用 when 标签做判断:相当于 case
使用 otherwise 标签做其他情况的声明:相当于default
3、 foreach 标签
【1】完成重复操作
属性
begin:开始值
end:结束值
var:临时变量
step:步长
varStatus:循环状态对象
index:容器中元素的索引,从 0 开始
count:循环次数,从 1 开始
【2】遍历容器
属性
items:容器对象
var:容器中元素的临时变量
varStatus:循环状态对象
index:容器中元素的索引,从 0 开始、
count:循环次数,从 1 开始
原文链接:https://blog.csdn.net/yangdan1025/article/details/82153426
原文链接:https://blog.csdn.net/weixin_41704733/article/details/79980487
原文链接:https://blog.csdn.net/One_L_Star/article/details/100520438