目录
1.Jsp页面的基本结构
Jsp页面的基本结构为:
(1) 普通的HTML标记和JavaScript标记。
(2) JSP标记,如指令标记、动作标记。
(3) 变量和方法的声明。
(4) Java 程序片。
(5) Java 表达式。
以下是一个示例:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>My JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
//其中,<%@ page %> 指令用于设置页面的属性,例如语言、编码等。
//<!DOCTYPE html> 和 <html> 标签用于定义文档类型和页面结构。
//<head> 标签定义文档头部,包括标题和元数据。<body> 标签定义文档主体,包括页面内容。
一个JSP页面的原理:
★一个JSP页面被第一次请求执行时,Tomcat服务器首先将JSP页面文件转译成一个Java文件,再将这个Java文件编译生成字节码文件,然后通过执行字节码文件响应用户的请求。
★当多个用户请求一个JSP页面时,Tomcat服务器为每个用户启动一个线程,该线程负责执行常驻内存的字节码文件来响应相应用户的请求。这些线程由Tomcat服务器来管理,将CPU的使用权在各个线程之间快速切换,以保证每个线程都有机会执行字节码文件。
2.变量的声明和方法的定义
在<%!和%>标记符号之间声明变量,定义方法以及定义类。
<%!和%>标记符号的内容习惯上放在JSP 页面指令之后,<HTML>之前,也可以写在<HTML>与</HTML>之间。
一.变量的声明
<%!和%>之间声明的变量在整个JSP页面内都有效,与标记符在JSP页面中所在的书写位置无关,但习惯上把<%!、%> 标记符写在JSP页面的前面。
二.方法的定义
对于在“<%!”和“%>”标记符号之间定义方法,可以在Java程序片中调用该方法。方法内声明的变量只在该方法内有效,当方法被调用时,方法内声明的变量被分配内存,方法被调用完毕即可释放这些变量所占的内存。 对于在“<%!”和“%>”标记符号之间定义类,可以在Java程序片中使用该类创建对象。
以下是一个示例:
JSP变量的声明:
<%! int num = 10; String name = "John"; %>
JSP方法的定义:
<%! public int sum(int a, int b) { return a + b; } %>
3 .Java 程序片
Java程序片通常指的是一小段Java代码,可以独立运行或嵌入到其他Java程序中。Java程序片可以用于实现某些特定功能或解决某些问题,也可以用于学习Java编程。
一。Java程序片的定义
可以在<%和%>之间插入Java 程序片。
●一个JSP页面可以有许多程序片,这些程序片将被Tomcat服务器按顺序执行。
●在程序片中声明的变量称作JSP页面的局部变量。局部变量的有效范围与其声明的位置有关,即局部变量在JSP页面后继的所有程序片以及表达式部分内都有效。
■当多个用户请求一个JSP页面时,Tomcat服务器为每个用户启动一个线程,该线程负责执行字节码文件响应用户的请求。Tomcat服务器使用多线程来处理程序片.
4.Java表达式
可以在<%=和%>之间插入一个可求值的表达式(注意:不可插入语句,
<%=是一个完整的符号,“<%”和“=”之间不要有空格)。
表达式的属性及运作方式
★表达式的值由服务器负责计算,并将计算结果用字符串形式发送到用户端显示。
★Java表达式可以写在<HTML>之前,也可以写在<HTML>和</HTML>之间或</HTML>之后
●在JSP页面中,表达式的值被表示成一个字符串的形式,即Tomcat服务器将表达式的结果转换成字符串,然后发送给用户的浏览器。因此,在编写JSP页面时,要把Java表达式按普通的文本来使用。
例:
int a = 10; int b = 20; int c = a + b; //算术表达式,求和
boolean flag = (a > b) && (b < c); //逻辑表达式,与运算
String str = (a == b) ? "相等" : "不相等"; //条件表达式,三目运算符
5.JSP中的注释
JSP 注释:
在标记符号“<%--”和“--%>”之间加入注释内容:
<%-- 注释内容 --%>
Tomcat服务器忽略JSP注释,即在编译JSP页面时忽略JSP注释。
HTML注释:
在标记符号“<!--”和“-->”之间加入注释内容:
<!-- 注释内容 -->
JSP引擎把HTML注释交给用户,因此用户通过浏览器查看JSP页面的源文件时,能够看到HTML注释。
6.JSP指令标记
JSP指令标记是用于指定JSP页面的特定属性和配置的标记。以下是一些关于JSP指令标记的信息:
1. JSP指令标记通常放置在JSP页面的顶部,以指定页面的属性和配置。
2. JSP指令标记以“<%@”开头,以“%>”结尾。
3. 有三种类型的JSP指令标记:page指令、include指令和taglib指令。
4. page指令用于指定页面的属性,如语言、缓存设置和错误页面。
5. include指令用于包含其他JSP页面或HTML文件。
6. taglib指令用于指定JSP页面中使用的自定义标签库。
以下是一个使用page指令标记的示例代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
page 指令标记
page 指令用来定义整个JSP页面的一些属性和这些属性的值。
<%@ page 属性1="属性1的值" %>
<%@ page 属性2="属性2的值" %>
… …
<%@ page 属性n="属性n的值" %>
也可以用一个page指令指定多个属性的值,如:
<%@ page 属性1="属性1的值" 属性2= "属性2的值" ……%>
page指令的作用对整个JSP页面有效,与其书写的位置无关。习惯上把page指令写在JSP页面的最前面。
page 指令标记可以指定属性:
contentType、import、language、session、buffer、
auotFlush 、isThreadSafe、pageEncoding 、inform
contentType属性
contentType属性是用于指定发送请求时所发送的数据类型的属性。它通常用于设置HTTP请求头中的Content-Type字段,告诉服务器请求中所携带的数据的格式。
常见的contentType属性值包括:
- text/plain:纯文本格式
- text/html:HTML格式
- application/json:JSON格式
- application/xml:XML格式
- multipart/form-data:表单数据格式
设置contentType属性的方法如下:
<%@ page contentType="text/html;charset=UTF-8" %>
这个例子中,我们将contentType设置为text/html,并指定字符集为UTF-8
pageEncoding属性
pageEncoding属性指定了JSP页面的字符编码格式。它必须放置在JSP页面的第一行,例如:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
其中,pageEncoding="UTF-8"指定了页面使用UTF-8编码格式。
如果没有指定pageEncoding属性,JSP页面将使用默认编码格式,这取决于服务器的配置和操作系统的语言环境
language属性
language属性是JSP页面的指令,用于指定JSP页面中使用的脚本语言。常见的取值有Java和JavaScript。
以下是使用Java作为脚本语言的JSP页面指令示例:
<%@ page language="java" %>
以下是使用JavaScript作为脚本语言的JSP页面指令示例:
<%@ page language="javascript" %>
import 属性
import 属性是 JSP 中用来引入其他 Java 类的关键字。它可以用来导入 Java 类和包,以便在 JSP 页面中使用它们。
在 JSP 页面中,可以使用以下语法来导入 Java 类或包:
<%@ page import="com.example.MyClass" %>
<%@ page import="com.example.*" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.*" %>
在上面的示例中,第一个 import 语句导入了 com.example 包中的 MyClass 类,第二个 import 语句导入了 com.example 包中的所有类,第三个 import 语句导入了 java.util 包中的 List 类,第四个 import 语句导入了 java.util 包中的所有类。
下面是一个示例代码,演示如何在 JSP 页面中使用 import 属性:
<%@ page import="java.util.Date" %>
<%
Date now = new Date();
out.println("Current date and time: " + now.toString());
%>
JSP页面默认import属性已经有如下的值:
" java.lang.*"、 "javax.servlet.*"、"javax.servlet.jsp.*"、"javax.servlet.http.*"。
session属性
Session属性是一种在JSP中存储和访问用户特定数据的方法。它允许您在用户浏览多个页面时保留用户数据。Session属性可以存储在服务器上,并且可以在整个应用程序中使用。
session 属性用于设置是否需要使用内置的session对象。session的属性值可以是true或false。session属性默认的属性值是true。
buffer属性
Buffer属性是用于控制JSP页面的输出缓冲的属性。在JSP页面中,所有的输出语句都被缓冲到一个缓冲区中,然后一次性输出。Buffer属性有两种取值:auto和none。
当Buffer属性被设置为auto时,JSP引擎会自动设置缓冲区的大小。这个大小通常是根据JSP页面中的内容和输出的大小来自动计算的。
当Buffer属性被设置为none时,JSP引擎不会使用缓冲区,而是直接输出内容。这种情况下,如果在JSP页面中有错误或异常,输出可能会被截断或者不完整。
以下是在JSP页面中使用Buffer属性的示例代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" buffer="none"%>
autoFlush属性
autoFlush属性是用于控制JSP页面是否在缓冲区满时自动刷新的属性。当autoFlush属性设置为true时,JSP页面在写入缓冲区时会自动刷新。当autoFlush属性设置为false时,JSP页面会在缓冲区满时才会刷新。
以下是一个简单的示例代码:
<%@ page language="java" autoFlush="false" %>
<% response.getWriter().print("Hello World!"); %>
在这个示例中,autoFlush属性被设置为false,因此JSP页面不会自动刷新。当缓冲区满时,页面才会刷新。
isThreadSafe 属性
isThreadSafe 是 JSP 页面的一个属性,用于指定该页面是否是线程安全的。如果设置为 true,则表示该页面是线程安全的,可以被多个线程同时访问;如果设置为 false,则表示该页面是非线程安全的,只能被一个线程访问。
在 JSP 页面中,可以使用
<%@ page isThreadSafe="true/false" %>
来设置 isThreadSafe 属性。默认情况下,isThreadSafe 属性的值为 true。
info 属性
info属性是JSP的一个指令,用于在JSP页面中包含对页面的描述信息。它通常用于文档类型声明或页面标题等。
info属性的属性值是一个字符串,其目的是为JSP页面准备一个常用但可能要经常修改的字符串。例如,
<%@ page info= "we are students" %>
可以在JSP页面中使用方法:
getServletInfo();
获取info属性的属性值。
下面是一个简单的例子:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
info="这是一个示例页面" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>示例页面</title>
</head>
<body>
<h1>这是一个示例页面</h1>
<p>欢迎来到我的示例页面!</p>
</body>
</html>
在这个例子中,info属性被设置为“这是一个示例页面”,这个信息将被包含在生成的HTML文档中的头部。
include 指令标记
关于 include 指令标记 jsp:
1. include 指令用于将一个 jsp 页面包含到另一个 jsp 页面中。
2. include 指令的语法为:<%@ include file="filename.jsp" %>
3. include 指令可以在 jsp 页面的任何位置使用,包括在 HTML 标签中。
4. include 指令可以帮助我们实现代码的重用,减少代码冗余。
5. include 指令的文件路径可以是相对路径或绝对路径。
7.JSP动作标记
include 动作标记
- 关于 include 动作标记 jsp:
- include 动作标记可以在 JSP 页面中插入其他 JSP 页面或 HTML 页面的内容。
- include 动作标记可以使用相对路径或绝对路径引用其他页面。
- include 动作标记可以在编译时或运行时包含页面内容。
include动作标记告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入。与静态嵌入文件的include指令标记不同,当Tomcat服务器根据JSP页面产生成Java文件时,不把JSP页面中动作指令include所包含的文件与原JSP页面合并为一个新的JSP页面,而是告诉Java解释器,这个文件在JSP运行(Java文件的字节码文件被加载执行)时才包含进来。如果包含的文件是普通的文本文件,就将文件的内容发送到用户端,由用户端的浏览器负责显示;如果包含的文件是JSP文件,Tomcat服务器就执行这个文件,然后将执行的结果发送到用户端,并由用户端的浏览器负责显示这些结果。
param动作标记
参数动作标记(param action tag)是 JSP 中的一个标记,用于向 JSP 页面传递参数。它的语法如下:
<jsp:param name="parameterName" value="parameterValue" />
其中,name 属性用于指定参数的名称,value 属性用于指定参数的值。
在 JSP 页面中,可以使用以下方式获取参数:
<%= request.getParameter("parameterName") %>
forward 动作标记
该指令的作用是:从该指令处停止当前页面的执行,而转向执行page属性指定的JSP页面。需要注意的是,当前页面使用forward动作标记转向后,尽管用户看到了转向后的页面的效果,但浏览器地址栏中显示的仍然是转向前的JSP页面的URL地址,因此,如果刷新浏览器的显示,将再次执行当前浏览器地址栏中显示的JSP页面。
以下是一个简单的示例,演示如何使用JSP中的Forward动作标记:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Forward Example</title>
</head>
<body>
<%-- 设置请求属性 --%>
<%
request.setAttribute("message", "Hello, World!");
%>
<%-- 转发到另一个JSP页面 --%>
<jsp:forward page="/target.jsp" />
</body>
</html>
在上面的示例中,我们使用request.setAttribute()
方法设置了一个请求属性,然后使用<jsp:forward>
标记将请求转发到/target.jsp
页面。在目标页面中,我们可以使用request.getAttribute()
方法获取之前设置的请求属性。