当前位置: 首页 > news >正文

JSP 指令标识和脚本标识的使用

文章目录

  • 前言
  • 一、JSP 页面是什么?
  • 二、JSP 基本语法
    • 1.指令标识
      • (1)page 指令
      • (2)include 指令
      • (3)taglib 指令
    • 2.脚本标识
  • 总结

前言

        在进行Java Web 应用开发的过程中,JSP 是必不可少的。因此,我们应该熟练掌握 JSP 的语法。在学习 Java-EE 的过程中,建议选择 idea 进行开发,而不是 Vscode。因为  idea 会自动搭建 maven 并配置好 tomcat。但是在 Vscode 中这些都需要我们亲自动手配置。


一、JSP 页面是什么?

        JSP(Java Server Pages)是一种动态网页技术,可以将Java代码嵌入到HTML页面中,在服务器端生成动态的HTML页面。 

        JSP 页面是指拓展名为 .jsp 的文件。一个 jsp 文件可以包括指令标识、HTML 代码、JavaScript 代码、嵌入的 Java 代码、注释和 JSP 动作标识等内容。

        下面就来列举一个 JSP 页面:

<%@  page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat"%>
<!--以上是指令标识--><html>
<head>
<title>时钟显示网站</title>
</head>
<body>
<%Date date=new Date();SimpleDateFormat df =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = df.format(date);//以上获取到了当地时间
%>当前时间:<%=time%>
</body>
</html>
<!-- 以上是 HTML代码、嵌入的 Java代码、JSP注释-->

        以上就是一个简单的JSP页面代码,有指令标识、HTML代码、嵌入的 Java代码还有 JSP 注解。可以的话还能添加上 JavaScript 代码。

        运行结果:

        

二、JSP 基础语法 

1.指令标识

        指令标识用于设定整个 JSP 页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何输出到网页中。指令标识对于客户端服务器是不可见的。指令标识就相当于给页面添加了id信息,指令标识通常写在JSP文件的开头部分JSP 指令标识的语法如下:

<%@ 指令名 属性1="属性值1" 属性2="属性值2" ...... %>

        指令名:用于指定名称,在 JSP 中包含 page、include 和 taglib 3条指令。

        属性:用于指定属性名称,不同的指令包含不同的属性。在一条指令中,可以设置多个属性,各个属性之间用逗号或者空格分隔。

        属性值:用于指定属性值。

        注意,指令标识的 <@% 和 %> 两个标记是一体的,中间不能用空格分开,指令名和属性是有空格的。

        举一个指令标识的例子:

<%@ page pageEncoding="UTF-8" %>

(1)page 指令

        page 是 JSP 页面中最常用的指令,用于定义整个 JSP 页面的相关属性,这些属性在 JSP 被服务器解析成 Servlet 时会转换成相应的 Java 程序代码。page 指令的语法如下:

<%@ page attr1="value1" attr2="value2" ...... %>

         page 指令包含着 15 个属性,也就是 attr 可填的值。下面对常见的属性进行介绍:

        1. language 属性

        该属性用于设置 JSP 页面嵌入的语言,当前支持嵌入 Java、JavaScript、Groovy 语言。如果在指令标识中忽略该属性,默认可嵌入语言为 Java。

        实操:

<%@ page language="java" %>

        2. import 属性

        该属性用于设置 JSP 导入的类包。JSP 页面可以嵌入 Java 代码片段,当这些 Java 代码需要时,可以调用 API 时需要导入相应的类包。

        实操:

<%@ page import="java.util.*"%>

        3. pageEncoding 属性

        该属性用于定义 JSP 页面的编码格式,也就是指定文件编码。JSP 页面中的所有代码都使用该属性指定的字符集。

        实操:

<%@ page pageEncoding="UTF-8"%>

        4. contentType 属性

        该属性用于设置 JSP 页面的 MIME 类型和字符编码,浏览器会据此显示网页内容。如果你的页面出现了中文乱码,那么八成你没有在指令标识中定义该属性,定义值为 UTF-8 基本就解决了。

        实操:

<%@ page contentType="text/html;charset=UTF-8"%>

        JSP 页面的默认编码格式为 ISO-8859-1,该编码格式 不支持中文,会出现中文乱码,必须手动更改该属性为 UTF-8 或者是 GBK 的形式。

        5. session 属性

        该属性指定 JSP 页面是否使用 HTTP 的 session 会话对象。其属性值是 boolean 类型,可选值为 true 和 false。默认值为 true,可以使用 session 会话对象;如果设置为 false,则当前 JSP 页面将无法使用 session 会话对象,那么任何对 session 对象的引用都会发生错误。

        实操:

<%@ page session="false"%>

         session 是 JSP 的内置对象之一。

        6. buffer 属性

        该属性用于设置 JSP 的 out 输出对象使用的缓冲区大小,默认大小为 8KB,且单位只能使用 KB。推荐要使用时设置为 8*n,(n为正整数)作为该属性的属性值。

        实操:

<%@ page buffer="128kb"%>

         out 对象是 JSP 的内置对象之一。

        7. autoFlush 属性

        该属性用于设置 JSP 页面缓存满时,是否自动刷新缓存。默认值为 true;如果设置为 false,则会在缓存满时抛出异常。

        实操:

<%@ page autoFlush="false"%>

        8. isErrorPage 属性

        该属性可以将当前 JSP 页面设置成错误处理页面来处理其他 JSP 页面的错误,称为异常处理。

        实操:

<%@ page isErrorPage="true"%>

        9. errorPage 属性

        该属性用于指定处理当前 JSP 页面异常错误的另一个 JSP 页面,指定的 JSP 错误处理页面必须设置 isErrorPage 属性为 true。errorPage 属性的属性值是一个 url 字符串。

        实操:

<%@ page errorPage="error/loginErrorPage.jsp"%>

        如果设置该属性,那么在 web.xml 文件中定义的任何错误页面都将被忽略,而优先使用该属性定义的错误处理页面。

(2)include 指令

        include 文件包含指令,是 JSP 的另一条指令标识。通过指令可以在一个 JSP 页面中包含另一个 JSP 页面。不过该指令是静态包含,也就是说被包含文件中所有内容会被原样包含到 JSP 页面中,即使被包含文件中有 JSP 代码,在包含时也不会被编译执行。使用 include 指令,最终形成的 JSP 文件,还不能有相同名称的变量。

        include 指令的语法如下:

<%@ include file="path"%>

        不同于 page 指令,include 指令只有一个 file 属性,用于指定要包含文件的路径。路径可以是相对路径,也可以是绝对路径。但是不可以用 <%=%> 表达式所代表的文件。

        使用 include 指令包含文件可以大大提高代码的重用性,而且也便于之后的维护和升级。

实操:创建三个 JSP 文件,一个作为主页面,显示博客内容,另外两个作为主页面的页眉和页码。

        主页面 JSP 代码:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat"%>
<!--以上是指令标识--><html>
<head>
<meta http-equiv="Content-Type" Content="text/html;charset=UTF-8">
<title>展示使用include指令</title>
</head>
<body>
<center>
<%@ include file="start.jsp"%><br>  <!--使用include指令,将start.jsp放置于该jsp文件中-->
<img src="mid.png">
<%@ include file ="end.jsp"%> <>
</center>
</body>
</html>

        页眉 JSP 代码:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<img src="start.png">

        页码 JSP 代码:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%String copyright="版权所有 ©:2024 喵果森森";
%>
<table width="778" height="61" border="0" cellpadding="0"
cellpadding="0"><tr><td><%= copyright%></td><br></tr>
</table>
<img src="end.png">

 运行结果:

        不使用 include 指令标识引入页眉和页码:      

        使用 include 指令标识引入页眉和页码:

         在使用 include 指令进行文件包含时,为了整个页面的层次结构不发生冲突,通常将被包含的子页面中的 <html>、<body>等标记进行删除。因为主页面已经有了这些标签。

(3)taglib 指令

        在 JSP 文件中,可以通过 taglib 指令标识声明页面中所使用的的标签库,同时引用标签库,并指出标签的前缀, 并指定标签的前缀。在页面中引用标签库后,可以通过前缀来引用标签库的标签。taglib 的语法格式如下:

<%@ taglib prefix="tagPrefix" url="tagURL"%>

参数说明:

        prefix:用于指定标签的前缀。该前缀不能命名为 jsp、jspx、java、javax、sun、servlet 和 sunw。

        url:用于指定标签库文件的存放位置。

        实操:

<%@ taglib prefix="c" url="http://java.sun.com/jsp/jstl/core"%>

        该实例引用了 JSTL 中的核心标签库,以及使用 JSTL 核心标签库的标签的相关内容。 

2.脚本标识

        在 JSP 页面中,脚本标识最为常用。脚本标识可以灵活地生成页面中的动态内容。JSP 脚本标识包括 3 部分,即 JSP 表达式(Expression)、声明标识(Declaration)和脚本程序(Scriptlet)。通过脚本标识,就在 JSP 页面中编写或嵌入 Java 程序了。 

(1)JSP 表达式

        JSP 表达式用于向页面输出信息语法格式如下:

<%= 表达式%>

参数说明:

        <%和=之间不可以有空格,但是=和表达式之间可以有空格。

        实操:使用 JSP 表达式,向 HTML 中输出内容。

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<html>
<head><title>test</title>
</head>
<body><% String manager = "mr"; %>管理员:<%= manager %><br><% boolean power = true; %>是否具有管理器:<%= power ? "是" : "否" %>
</body>
</html>

        运行结果:

        JSP 表达式不仅可以插入页面的文本中,用于输出文本内容,也可以插入 HTML 标记中,用于动态设置属性值。 相当于 java 的 system.out 。

(2)声明标识

                声明标识用于 JSP 页面中定义全局的变量或方法。通过声明标识定义的变量和方法可以被整个 JSP 页面访问,通常使用该标识定义整个 JSP 页面需要引用的变量和方法(通常是 Java 语言)。声明标识的语法如下:

<%! 声明变量或方法的代码%>

        <%与!之间不可以有空格,但是!和后面的代码之间可以有空格。另外,<%!与%>可以不在同一行,如下方代码所示:        

实操: 

<%!int number=0;    //声明全局变量int count(){     //声明全局方法number++;return number;}
%> <%= count()%>    //每次页面刷新,输出值都会+1 

        服务器执行 JSP 页面时,会将 JSP 页面转换为 Servlet 类,在该类中会把使用 JSP 声明标识定义的变量和方法转换为 java 类的成员变量和方法。

(3)代码片段

        代码片段就是在 JSP 页面中嵌入的 Java 代码或者是其他的脚本代码。代码片段将在页面请求的处理期间被执行。通过脚本代码可以应用 JSP 的内置对象在页面输出内容、处理请求和响应、访问 session 会话。语法格式如下:

<% Java代码或者是其他脚本代码 %>

        JSP 表达式负责输出内容到页面上,代码片段负责编写 java或其他脚本代码。

        实操:通过 JSP 页面,显示当前打开页面时的时间。

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<%@ page import="java.util.Date"%>
<%@ page import="java.text.SimpleDateFormat"%>
<html>
<head><title>test</title>
</head>
<body><h1>Current Time:</h1><div id="timeDisplay"><%// Initial time displayDate date = new Date();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = df.format(date);out.print(time);%></div>
</body>
</html>

        代码片段与声明标识的区别是:通过声明标识创建的是全局的变量和方法,在当前 JSP 页面中有效,它的生命周期是从创建到服务器关闭结束的;而代码片段创建的变量和方法,也是在当前 JSP 页面中有效,但它的生命周期是关闭页面后自动销毁。

        运行结果:       

         由此看出,嵌入 java 代码和直接使用 javaScript 脚本语言之间还有有差别的,需要手动刷新来更新时间。而javaScript 脚本可以轻而易举地显示出实时的时间。在开发网站时,不要死板地使用一个语言进行开发。


总结

        以上就是 JSP 基本语法的部分讲解,本文简单介绍了指令标识和脚本标识的使用,它们的功能还需要我们在实际项目中练习出来。有补充或指正的内容,欢迎在评论区中留言。


http://www.mrgr.cn/news/34163.html

相关文章:

  • MongoDB-索引的使用和索引类型
  • 图片和文本的一些处理方案——图片等比例缩放、背景图片调节、文本溢出
  • 【数据结构】Java的HashMap 和 HashSet 大全笔记,写算法用到的时候翻一下,百度都省了!(实践篇)
  • 【micro】糖果配色
  • nginx反向代理tomcat多实例
  • 云盘还安全么?阿里云盘出现BUG,惊现大量陌生人照片
  • FreeRTOS下UART的封装
  • 基于DeepFace深度学习模型的离线版人脸识别API接口实现(类似百度在线API接口)
  • 3dmax选择全解:高效建模的关键技巧
  • Dockerfile全面指南:从基础到进阶,掌握容器化构建的核心工具
  • PyCharm远程源代码缓存与代码补全功能
  • PMP考试考前需要做什么才能提高上岸率?
  • 来!一起探索 2024 年数据和 AI 的奇妙世界
  • 策略模式与工厂模式的区别
  • Axios 封装网络请求
  • 【教学类-52-11】20240919动物数独(4宫格)1图、2图、6图、有答案、无答案 组合版18套
  • 外包干了4年,技术退步太明显了。。。。。
  • 防火墙详解(一) 网络防火墙简介
  • 导致mfc140u.dll,无法继续执行代码的原因分析及解决方法
  • 数据安全治理