jsp的基本元素、三大指令和九大内置对象详解
jsp的九大内置对象和三种指令一、jsp技术简介1.什么是JSPJava服务器端页面创建动态网页的技术标准JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.
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,就必须说一下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>
示例:
四、九大内置对象
1.什么是JSP内置对象
- JSP内置对象是Web容器创建的一组对象
JSP的内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显式声明即可使用。
在JSP页面中,可以通过存取JSP内置对象实现与JSP页面和Servlet环境的相互访问。每个内部对象均有对应所属的ServletAPI类型。
2.JSP内置对象组成
JSP内置对象包括request对象、response对象、session对象、out对象、application对象、page对象、exception对象、pageContext对象、config对象。这些对象在客户端和服务器端交互的过程中分别完成不同的功能。
3.JSP内置对象的特点
JSP的内置对象主要有以下特点:
- 1、由JSP规范提供,不用编写者实例化;
- 2、通过Web容器实现和管理;
- 3、所有JSP页面均可使用;
- 4、只有在脚本元素的表达式或代码段中才可使用(
<%=使用内置对象%>
或<%使用内置对象%>
)
4.JSP内置对象的分类
按照内置对象的功能来划分,可以分为以下四类:
- 1、输出输入对象:request对象、response对象、out对象;
- 2、通信控制对象:pageContext对象、session对象、application对象;
- 3、Servlet对象:page对象、config对象;
- 4、错误处理对象:exception对象。 [3]
详解out内置对象
Out对象
Out对象是javax.servlet.jsp.JspWriter类的实例。主要用于向客户端浏览器输出数据。
out对象的作用
如何在JSP页面中输出信息?
- <%=信息内容%>
- out.println(信息内容);或out.print(信息内容);
示例:
效果:
out对象的常用方法
out对象是向客户端输出内容常用的对象
注意:
但是,浏览器目前不识别println()写入的换行符,如果希望浏览器显示换行,应当向浏览器写入 < br>来实现换行
out对象的实例
out对象各种方法的使用
out对象缓冲区自动刷新设置
详解request内置对象
request对象的作用
如何将页面上的动态信息提交给服务器?
- 动态信息包括:用户名、密码
- 页面提交后,显示输出的数据
request对象的常用方法
request对象主要用于封装客户端的请求信息
常用方法:
方法名 | 描述 |
---|---|
object getAttribute() | 返回指定属性的属性值 |
Enumeration getAttributeNames() | 返回所有可用属性名的枚举 |
String getParameter() | 返回指定参数的参数值 |
Enumeration getParameterNames() | 返回所有可用参数名的枚举 |
String [] getParameterValues() | 返回包含参数的所有值的数组 |
void setAttribute() | 设置属性的属性值 |
String getMethod() | 返回提交方式 |
request对象的实例
页面显示:
取得请求信息:
页面显示:
请求转发
地址栏地址不改变,是服务器内部的一次改变
实例:
页面显示:
中文乱码处理:
get方式:
post方式:
tomcat设置
详解response内置对象
response对象的作用
- response对象用于响应客户请求并向客户端返回信息
response对象的常用方法
response对象的示例
response对象的小结
重定向
获取不到上一个request域定义的值
更多推荐
所有评论(0)