Java Web 开发 第二章 Jsp语法

目录

1.Jsp页面的基本结构

2.变量的声明和方法的定义

一.变量的声明

二.方法的定义

3 .Java 程序片

 4.Java表达式

表达式的属性及运作方式

 5.JSP中的注释

 JSP 注释:

HTML注释:

6.JSP指令标记

page 指令标记

contentType属性

pageEncoding属性

language属性

import 属性

session属性

buffer属性

autoFlush属性

isThreadSafe 属性

info 属性

include 指令标记

7.JSP动作标记

include 动作标记

param动作标记

forward 动作标记


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的属性值可以是truefalsesession属性默认的属性值是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 动作标记

  1. 关于 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()方法获取之前设置的请求属性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值