jsp的九大内置对象和三种指令

一、jsp技术简介

1.什么是JSP

  • Java服务器端页面
  • 创建动态网页的技术标准
    jsp是什么

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>

在这里插入图片描述


示例:

在这里插入图片描述


四、九大内置对象

1.什么是JSP内置对象

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域定义的值


Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐