目录
(一)、启动tomcat,浏览器输入localhost:8080,出现tomcat页面原因
编辑3、 代码块:<% Java codes in servicemethod%>
1、Page 可以在jsp页面导入类、也可以设置页面的编码格式
1、pageContext:表示只能在当前页面对象,只能在当前页面使用
2、request 与 Servlet中 request对象没有任何区别,是同一个对象
3、session 与 Servlet中 session对象没有任何区别,是同一个对象
4、 application 与 Servlet中 ServletContext对象没有任何区别,是同一个对象
1. 向网页中输出,等价于 <%= expression %>
2. 定义 EL变量,变量可以存放在 page、request、session或application 范围内
3. 删除 EL变量,如果不指定范围,那么将删除所有范围内的属性
1. 迭代标签,可以多次执行标签体的内容,迭代 items 属性指定的集合,迭代时,它将当前元素保存到 var 属性指定的 EL 变量中并执行标签体的内容
一、Tomcat运行了解
我们知道启动tomcat,浏览器访问 localhost:8080会出现tomcat页面
(一)、启动tomcat,浏览器输入localhost:8080,出现tomcat页面原因
- bin:命令目录
- conf:配置目录
- lib:jar包目录
- logs:日志目录
- temp:临时数据目录
- webapps:部署目录 开发的项目需要部署在该目录下,才能被服务器运行
tomcat服务器启动的时候,会读取 conf 下配置文件 以及 webapps下各个项目的web.xml文件!,如果没有指定站点名称会默认打开ROOT文件下的index.jsp文件。
(二)、验证
1、新建一个web项目,web项目下编辑jsp文件
2、将web文件夹负责到tomcat,webapp目录下
3、启动tomcat
3.1、我们先访问localhost:8080,发现访问的是ROOT文件的下的jsp.index文件
3.2、我们访问我们的index.jsp,需要加上站点名称,localhost:8080/web,或者我们直接localhost:8080/web/index.jsp。也是访问该页面
(三)index.jsp页面的代码展示在页面的原理
1、tomcat会将webapp下的jsp文件编译到,apache-tomcat-9.0.62\work\Catalina\localhost\web\org\apache\jsp文件下,生成对应的java文件和class文件
2、jsp的java文件内容
2.1、我们jsp文件中 <%! %>里面写的是定义变量和方法的内容,对应我们编译的jsp_java文件中属性和方法
2.2 、我们可以看出<% %>里面写的代码块,对应我们jsp_java文件中就是执行代码,而不是将执行的数据写到页面中
2.3、我们jsp文件中<%= %>里面写的表达式,对应java_jsp文件中的写入到浏览器页面
经过这样是不是就可以知道,jsp 文件为什么可以写java代码,怎么将java代码的信息展示页面了
二、JSP
(一)、JSP概念
Java Server Pages (java服务器页面),本质就是一个简化的Servlet设计,Servlet不擅长于页面展现不能动态展示数据,JSP就很好的解决动态展示数据的情况。
(二)、JSP 脚本元素
1、声明:<%! 成员声明%>
主要声明变量、声明方法的地方
2、表达式:<%= Java Expression%>
主要是加载页面执行的内容,不展示在页面;
3、 代码块:<% Java codes in servicemethod%>
主要是展示调用方法和变量,将其展示在页面上;
(三)、JSP 指令
不直接产生任何可视的输出,但是会指导页面如何展现
JSP 规定了三种指令:
- 页面指令:page
- 包含指令:include
- 导入标签库指令:taglib
1、Page 可以在jsp页面导入类、也可以设置页面的编码格式
2、include插入指定的jsp页面
3、taglib JSP页面中导入一个标签库的定义文件
(四)、JSP 规范常用的动作
- useBean,setProperty, getProperty
- include
- forward param
(五)、内置对象
1、pageContext:表示只能在当前页面对象,只能在当前页面使用
2、request 与 Servlet中 request对象没有任何区别,是同一个对象
其他的jsp文件访问展示null
3、session 与 Servlet中 session对象没有任何区别,是同一个对象
在同一个浏览器中访问其他路径,依然可以获取到数据;
4、 application 与 Servlet中 ServletContext对象没有任何区别,是同一个对象
(六) 、EL 表达式
1.算术运算符
2.关系运算符
3.逻辑运算符
4.empty 运算符
我们要注意,如果我们在servlet设置了数据共享的范围,在EL表达式中,不需要使用getAtribute这些方法来获取共享范围的数据。我们直接通过servlet设置共享范围数据的key直接进行使用;
因为stu1在共享范围内存在,因此返回false;
5.其它运算符
- 条件运算符
类似于java的三目运算符
- 括号运算符
三、JSTL 标签库
JSTL标签库:
使用标签库之前,需要引入标签库 :
(一)、表达式操作
1.<c:out> 向网页中输出,等价于 <%= expression %>
将value的值展现在浏览器页面上,default默认值,有就展示值,没有展示默认值
2.<c:set> 定义 EL变量,变量可以存放在 page、request、session或application 范围内
3.<c:remove> 删除 EL变量,如果不指定范围,那么将删除所有范围内的属性
(二)、流程控制表达式
1.if条件判断
2. <c:choose> ,<c:when> , <c:otherwise> 复合条件标签
(三)迭代标签
1. <c:forEach> 迭代标签,可以多次执行标签体的内容,<c:forEach>迭代 items 属性指定的集合,迭代时,它将当前元素保存到 var 属性指定的 EL 变量中并执行标签体的内容
1.1 多个共享范围都设置相同的key,jsp页面EL获取共享范围最小的数据
(四)、URL 标签
- 我们发现 import 就是将其他页面内容导入到当前页面
- c:url代表 value 对应的url路径,前台展示会自动拼接站点名称
- c:url 结合 c:param可以将param里面的数据拼接在url后面