文章目录
前言
JSP 的基本语法还包括 JSP 注释和动作标识。本文会详细讲解一下这两个东西。
一、JSP 注释
由于 JSP 页面由 HTML、JSP、Java 脚本等组成,所以 JSP 的注释格式有很多种。
1.HTML中的注释
HTML 语言的注释不会被显示在网页中,但是在浏览器中选择查看页面的源代码时,可以被看到,具体语法格式如下:
<!-- 注释内容 -->
为 HTML 添加注释信息后,其他开发人员可以直接从注释中了解代码用途。
2.带有 JSP 表达式的注释
在 JSP 页面中可以嵌入代码片段,在代码片段中也可以加入注释。在代码片段加入注释的过程中和 Java 的注释是相同的。
(1)单行注释
单行注释以" // "开头,后面接注释内容,语法格式如下:
// 注释内容
实操:
<%
String name=""; //定义一个保存用户名
%>
以上注释解释了name的含义。
(2)多行注释
多行注释以" /* "开头,以" */ "结尾。在这个表示中间的内容称为注释内容,并且可以换行。语法格式如下:
/*
注释内容
*/
实操:
<%
/*
function:显示用户信息
author:MGSS
time:2024-9-24
*/
%>
以上就是在代码片段中加入了多行注释。服务器不会对多行注释中的内容进行处理,包括 JSP 表达式或其他的脚本程序。并且多行注释的开始标记与结束标记可以不在同一个脚本程序中同时出现。
(3)提示文档注释
提示文档注释会被 Javadoc 文档工具生成文档时读取,文档是对代码结构和功能的描述。具体语法如下:
/**
文档注释信息
*/
提示文档注释方法与多行注释很相似,/** 和 /* 符合注释的内容服务器都不会做任何处理。
3.隐藏注释
通过在文档中添加的 HTML 注释虽然在浏览器中不显示,但是可以通过查看源代码的方式看到这些注释。理论上说,这是不安全的。这时 JSP 提供了一种隐藏注释,既在浏览器中看不到,而且在查看 HTML 源代码时也看不到,这种注释安全性比较高。具体语法如下:
<%-- 注释内容 --%>
实操:写一段隐藏注释 "显示出当前打开页面的时间"。
<!DOCTYPE html>
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<%@ page import="java.util.Date"%>
<%@ page import="java.text.SimpleDateFormat"%>
<html lang="zh">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>test</title>
</head>
<body>
<%-- 显示出当前打开页面的时间 --%>
<h1>Current Time:</h1>
<div id="timeDisplay">
<%
// Initial time display
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = df.format(date);
out.print(time);
%>
</div>
</body>
</html>
运行结果:
用户在浏览器中检查我们的网页代码时,他们是看不见<%-- 显示出当前打开页面的时间 --%> 隐藏注释的。可以提高用户解析页面代码、恶意攻击网页的壁垒。
4.动态注释
由于 HTML 注释对 JSP 嵌入的代码不起作用,因此可以利用它将暂时不用的代码注释掉,需要的时候再对注释语法进行删除,使用对应的代码。这样就形成了一种动态注释,需要时使用,不需要时注释掉。
实操:
<!-- <%=new JFrame()%>-->
以上将我们不需要的代码暂时注释掉了,不去影响整体代码。
二、动作标识
1.包含文件标识<jsp:include>
JSP 的动作标识 <jsp:include> 用于向当前页面中包含其他的页面,引入的页面可以是动态或静态的。语法格式如下:
<jsp:include page="url" flush="false|true"/> <!-- 第一种 -->
<jsp:include page="url" flush="false|true"> <!-- 第二种-->
子动作标识<jsp:param>
</jsp:include>
参数说明:
page:用于指定被包含文件的相对路径。所填 url 的 JSP 页面将会显示在主页面里。
flush:可选属性,用于设置是否刷新缓冲区。默认值为 false,如果设置为 true,在当前页面输出使用了缓存区的情况下,先刷新缓冲区,然后执行包含工作。
指令标识<%@ include%>和动作标识<jsp:include>是不同的。指令标识<include>是在编译时静态地引入其他页面,而动作标识<jsp:include>是在运行时动态地引入其他页面,并且支持命名空间。
在应用<jsp:include>标识进行文件包含时,为了使整个页面的层次结构不发生冲突,建议在被包含页面中将<html>、<body>等标记删除。
如果要在 JSP 页面中显示大量纯文本,可以将这些文本文字写入静态文件中(如 txt 文件),然后通过 include 指令或动作标识包含到该 JSP 页面,这样就会使 JSP 页面更加简洁。
至于实操方面,动作标识<jsp:include>和指令标识<%@ include%>的使用方法是相同的
实操:将一个 txt 文件包含到主页面 index.jsp。
<!DOCTYPE html>
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<%@ page import="java.util.Date"%>
<%@ page import="java.text.SimpleDateFormat"%>
<html lang="zh">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>test</title>
</head>
<body>
<%-- 显示出当前打开页面的时间 --%>
<h1>Current Time:</h1>
<div id="timeDisplay">
<%
// Initial time display
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = df.format(date);
out.print(time);
%>
</div>
<jsp:include page="content.txt" />
</body>
</html>
运行结果:
首先展示一下 txt 文件的内容:
再展示 index.jsp 主页面的效果:
有上图可见,通过 <jsp:include> 标识,将 txt 文件插入到了 index.jsp 中,并正常显示了出来。
2.请求转发标识<jsp:forward>
<jsp:forward> 动作标识可以将请求转发到其他的 Web 资源。例如,另一个 JSP 页面、HTML页面、Servlet 等。执行请求转发后,当前页面将不再被执行,而是去执行该标识指定的目标页面,顾名思义就是,跳转页面。语法格式如下:
<jsp:forward page="url"/> <!-- 第一种 -->
<jsp:forward page="url"> <!-- 第二种 -->
子动作标识<jsp:param>
</jsp:forward>
参数说明:
page:用于指定请求转发的目标页面。该属性值可以是一个指定文件路径的字符串,也可以是表达文件路径的 JSP 表达式。但是请求跳转的目标文件必须是内部资源,即应用内的资源。
实操展示:创建两个文件,一个为 index.jsp,另一个为 content,txt。利用<jsp:forward>标签从 index.jsp界面跳转到 content.txt界面。
index.jsp文件:
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<jsp:forward page="content.txt" /> <!--此处使用了 jsp:forward 标识-->
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>test</title>
</head>
<body>
<p>jsp主页面</p>
</body>
</html>
content.txt文件:
运行结果:
由上图所示,直接从JSP链接跳转到了 content.txt 页面,这之间几乎没有间隔,这适合页面间的数据共享、处理逻辑和权限管理。如果想要实现用户来精准控制页面的跳转,UI交互,这还是 JavaScript 语言更加合适。
3.传递参数标识<jsp:param>
JSP 的动作标识<jsp:param>可以作为其他标识的子标识,用于为其他标识传递参数。具体语法格式如下:
<jsp:param name="参数名" value="参数值"/>
参数说明:
name:用于指定参数名称。
value:用于设置对应的参数值。
实操:创建两个jsp页面,通过<jsp:param>来将test1.jsp的userId属性的值传递到,另一个test2.jsp页面。
test1.jsp页面的部分代码:
<jsp:forward page="test2.jsp">
<jsp:param name="userId" value="101">
</jsp:forward>
test2.jsp页面的部分代码:
<!-- test2.jsp -->
<%
String name = request.getParameter("name");
String age = request.getParameter("age");
%>
通过<jsp:param>动作标识指定的参数,将以“参数名=值”的形式加入请求中。简而言之,<jsp:param>标签可以用于实现两个页面之间的数据传递和交互。被包含或者被转发的页面必须直接或者间接地访问到 request 对象,才能够通过 request.getParameter() 方法获取参数值。
总结
以上就是 JSP 的基本语法,本文简单介绍了 JSP注释和动作标识的使用,更多开发网页的技巧还需要我们在实际开发过程中不断地实践获得,有补充或指正的内容,欢迎在评论区中留言。