jsp的九大内置对象和三种指令
一、jsp技术简介
1.什么是JSP
- Java服务器端页面
- 创建动态网页的技术标准
JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
一个JSP页面可以被分为以下几部份:静态数据、JSP指令、JSP脚本元素和变量、JSP动作、用户自定义标签。
菜鸟教程解读JSP
百度百科解读JSP
提到JSP,就必须说一下JavaWeb
Java Web,是用Java技术来解决相关web互联网领域的技术栈。
web包括:web服务端和web客户端两部分。
Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。
Internet上供外界访问的Web资源分为:
静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。
动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
静态web资源开发技术:HTML、CSS。
动态web资源开发技术:JavaScript、JSP/Servlet、ASP、PHP等。在Java中,动态web资源开发技术统称为Java Web。
换句话来说JavaWeb与jsp的关系就是jsp是JavaWeb的一个重要的组成部分!
测试区(硬核代码才是真理):
- 准备工作:
在idea下创建一个javaWeb项目,在webapp下新建一个test1.jsp文件用于测试
为了在jsp文件下能够使用el表达式,将web.xml文件改为这个
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
</web-app>
- 开始干货
包结构
接下来使用tomcat直接在webapps文件夹下创建一个testJsp的文件夹,然后创建一个test1.jsp的jsp文件
test1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>test1</title>
</head>
<body>
test1
</body>
</html>
直接将这个jsp文件以路径访问发现显示的源码,浏览器并不能解析jsp文件
但是html网页就可以直接访问解析
然后通过tomcat端口访问,才能看到
说明,浏览器并不具备解析jsp文件的能力,tomcat会解析jsp文件,并发布
修改test1.jsp文件为:
<%@ page contentType="text/html;charset=UTF-8" import="java.util.Date" language="java" %>
<html>
<head>
<title>test1</title>
</head>
<body>
<%
Date d=new Date();
out.println(d);
%>
</body>
</html>
因为tomcat依赖jdk,所以可以引用jdk的类,显示为:
Thu May 27 17:16:32 CST 2021
网页源码:
<html>
<head>
<title>test1</title>
</head>
<body>
Thu May 27 17:16:32 CST 2021
</body>
</html>
2.JSP的特点
- 降低了程序设计的难度
- 可以使用可视化工具,降低了开发工作量
- 不需要手动编译
包含相关的内置对象,指令元素(编译指令)与动作元素(动作指令),简化了编写servlet程序的过程 - 可以运用Java所提供的的各类包
3.JSP运行环境要求
- Web服务器
- JDK
4.JSP的执行过程
- 请求(Request)
- 翻译
- 编译
- 执行
- 响应(Response)
Web容器处理JSP文件请求需要经过三个阶段
- 翻译阶段
- 编译阶段
- 执行阶段
第一次请求之后,Web容器可以重用已经编译好的字节码文件,如下图
注意:
如果对JSP文件进行了修改,Web容器会重新对JSP文件进行翻译和编译!
实例:
- ①首次加载页面
- ②首次翻译编译(jsp翻译->java->class->反馈到浏览器页面)
- ③再次加载
- ④发现没有重新翻译编译
- ⑤更改jsp文件
- ⑥发现没有翻译编译
- ⑦重新加载页面
- ⑧重新翻译编译
在jsp文件不修改的情况下,刷新网页,虽然显示的网页信息有所改变,但是不会重新翻译编译!
但是如果你修改jsp文件之后,它还是不会翻译编译,直到你刷新网页请求时,再次翻译编译
二、JSP基本元素
1.注释
1.第一种注释形式
- 格式:
<%--JSP注释的第一种形式--%>
- 示例
- 作用
对jsp片段做说明 - 在哪里显示
仅jsp文件
第二种注释形式
-
格式
<% //JSP注释的第二种形式- 单行注释%>
-
示例:
-
作用
单行注释 -
在哪里显示
jsp文件,.java文件
第三种注释形式
- 格式:
<% /* 第三种注释形式——多行注释 */ %>
- 示例:
- 作用
多行注释 - 在哪里显示
jsp文件,.java文件
顺便一提:
html注释:
- 格式:
- 示例:
- 作用:
注释html - 在哪里显示
jsp文件,浏览器显示网页源代码
2.声明
声明局部变量
- 格式:<% 声明局部变量 %>
- 示例
声明全局变量
- 格式:<%! 声明全局变量 %>
- 示例
声明方法
- 格式:<%! 声明方法%>
- 示例
3.表达式
表达式:
- 格式:
<%=表达式%>
- 示例:
4.代码块
代码块:
- 格式:
<%符合java语法的代码块%>
JSP代码块可以包含任意合法的Java语句,可以包含多个JSP语句、方法、变量和表达式等,该代码块在服务器处理请求时被执行
一个面试题:
第一次运行
多次运行
由此可知,每次刷新会进入代码块,局部变量会被重置,但是全局变量不会被重置, 那么全局变量什么时候会被重置呢?
当然是重新翻译编译(也就是说修改jsp文件,哪怕是添加一个空格,然后请求网页)
三、JSP指令元素
什么是JSP指令
指能够对JSP网页相关信息、属性进行存取与设定的代码
JSP指令包含哪些
- page指令
- include指令
- taglib指令
JSP指令格式
- 包含在"<% @ %>"卷标中
详细介绍page指令
语法:
- 通过设置内部的多个属性定义整个页面的属性
常用属性:
属性 | 描述 | 示例 |
---|---|---|
language | 指定JSP页面使用的脚本语言 | <%@page language=”java” %> |
import | 通过该属性来引用脚本语言中使用到的类文件 | <%@ import=“java.util.,java.text.”%> |
contentType | 用来指定JSP页面所采用的编码格式 | contentType=“text/html;charset=UTF-8” |
pageEncoding | 页面所用编码格式 | <@pageEncoding=“UTF-8”%> |
page指令的作用
page指令的语法格式
page的属性
详细介绍include指令
- include指令的作用
在jsp编译时,插入一个包含文本或代码的文件,这个包含的过程是静态
的。静态包含指被包含的文件将会被插入到JSP文件中,可以包含JSP、HTML、文本文件等。
- include指令的语法格式
<%@include file=“绝对路径|相对路径”%>
- include指令的定义
include指令用来在该指令处静态插入一个文件,在解析当前页面时,这个文件中的代码会被复制到当前页面中
意思就是说翻译编译所生成的只有一个文件,如下
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>include</title>
</head>
<body>
<%@ include file="include1.jsp" %>
<%@ include file="1.txt" %>
<%@ include file="html1.html" %>
</body>
</html>
示例:
九大内置对象持续更新中。。。。