jsp基础语法

1.1了解jsp页面

1.1.1jsp页面的基本构成

JSP(JavaServer Pages)是一种用于创建动态Web页面的技术,它允许开发者通过在HTML中嵌入Java代码来生成动态内容。以下是一个基本的JSP页面示例和构成:


<!DOCTYPE html>

<html>

<head>

 <title>My First JSP Page</title>

</head>

<body>

 <h1>Hello, <%= request.getParameter("name") %>!</h1>

 <p>Today is <%= new java.util.Date() %>.</p>

</body>

</html>

该页面由HTML标签和JSP脚本构成。其中,<%= ... %>表示输出表达式的结果,而<% ... %>则表示执行一段Java代码。

页面各部分的含义如下:

  • <!DOCTYPE html>:定义文档类型为HTML。

  • <html><head><title>:常规HTML标签,用于定义页面的结构和标题。

  • <body>:包含了页面的主要内容。

  • <h1><p>:用于定义标题和段落的HTML标签。

  • <%= request.getParameter("name") %>:使用JSP表达式输出HTTP请求参数中名为"name"的值。

  • <%= new java.util.Date() %>:使用JSP表达式输出当前时间。

1.1.2jsp程序的运行原理

JSP(JavaServer Pages)是一种基于Java技术的Web开发技术,它提供了一种简单的方式来创建动态Web页面。JSP程序的运行原理可以概括为以下几个步骤:

  1. 客户端发送HTTP请求到Web服务器。请求可能包含一些参数,例如查询字符串或表单数据。

  2. Web服务器接收到请求后,会把它交给Servlet容器进行处理。

  3. Servlet容器根据URL中的扩展名判断该请求是否需要被JSP引擎处理。如果需要,就将请求交给JSP引擎处理。

  4. JSP引擎首先解析JSP文件并生成相应的Java源代码,然后编译并加载该Java源代码。这个过程只在第一次访问JSP页面时进行,之后就会直接使用已编译的类。

  5. 当有新请求到达时,JSP引擎会实例化一个新的Servlet,并且向其中插入处理该请求的Java代码。这些代码包括静态内容和动态内容,动态内容通常由JSP表达式、脚本和自定义标签组成。

  6. 最终,Servlet生成响应并将其返回给客户端浏览器。响应可能包含HTML、CSS、JavaScript等各种类型的内容,以及动态生成的内容。

总的来说,JSP程序的运行原理是:当客户端请求JSP页面时,JSP引擎将JSP文件翻译成Java代码并编译运行,最终生成HTML等内容返回给客户端。这个过程中,JSP引擎和Servlet容器协同工作,共同实现了Web应用程序的动态生成和处理。

1.2脚本标识

1.2.1jsp表达式

JSP (JavaServer Pages) 表达式是一种在 JSP 页面中使用的简单语法,它允许开发人员在 HTML 页面中插入动态值。JSP 表达式通常用于将 Java 对象中的数据显示到网页上。

JSP 表达式的语法如下:


<%= expression %>

其中 expression 是要求值并输出到页面的 Java 表达式。JSP 引擎会计算表达式的值,并将其转换为字符串,然后将其插入到生成的 HTML 中。

例如,下面的 JSP 代码示例将会在网页上显示当前时间:


<html>

  <head>

    <title>Current Time</title>

  </head>

  <body>

    The current time is <%= new java.util.Date() %>.

  </body>

</html>

在这个例子中,new java.util.Date() 是一个 Java 表达式,它将会被计算并输出当前时间。

1.2.2声明标识

在 JSP 页面中,声明标识用于定义一个方法或变量,该方法或变量可以在页面的其他部分中使用。

JSP 声明标识的语法如下:


<%! declaration; %>

其中 declaration 是 Java 代码片段,可以是类、接口、方法或变量的声明。

例如,下面的 JSP 代码示例定义了一个名为 greeting 的变量,并将其设置为字符串 “Hello, world!”:


<%@ page language="java" %>

<html>

  <head>

    <title>Declaration Example</title>

  </head>

  <body>

    <%!

      String greeting = "Hello, world!";

    %>

    <h1><%= greeting %></h1>

  </body>

</html>

在这个例子中,第 7 行的声明标识定义了一个名为 greeting 的字符串变量。然后,在第 10 行的表达式中,使用 <%= %> 标识符输出该变量的值。

JSP 声明标识通常用于定义在整个页面中需要使用的共享变量或方法,以避免在每个代码段中重复定义它们。声明标识也可以用于定义自己的 Java 类或接口。

1.2.3脚本程序

在 JSP 页面中,脚本程序块用于编写 Java 代码,可以包括任意的 Java 语句、变量声明和表达式。脚本程序块的语法如下:


<% java code %>

其中 java code 是要执行的 Java 代码片段。

例如,下面的 JSP 代码示例使用脚本程序块计算并输出两个整数的和:


<html>

  <head>

    <title>Scriptlet Example</title>

  </head>

  <body>

    <% 

      int num1 = 5;

      int num2 = 10;

      int sum = num1 + num2;

    %>

    The sum of <%= num1 %> and <%= num2 %> is <%= sum %>.

  </body>

</html>

在这个例子中,第 7-9 行的脚本程序块定义了三个整数变量,并将它们相加并赋值给 sum 变量。然后,在第 11 行的表达式中,使用 <%= %> 标识符输出每个变量的值。

脚本程序块也可以嵌套在其他标记中,例如循环、条件语句或函数调用中,以实现更复杂的逻辑。需要注意的是,脚本程序块中的代码会在页面被处理时执行,因此应该避免在其中包含过多的复杂逻辑和长时间运行的操作。

1.3page指令

在 JSP 页面中,<%@ page %> 指令用于定义页面的属性和配置信息。该指令通常放置在页面的顶部,并包含各种属性及其值。

以下是一些常见的 <%@ page %> 属性:

  • language:指定页面使用的编程语言,默认为 Java。

  • contentType:指定页面内容类型,如文本、HTML 等。

  • pageEncoding:指定页面编码方式,默认为 ISO-8859-1。

  • import:导入其他 Java 类或包。

  • session:指定是否启用会话跟踪。

  • errorPage:指定错误处理页面,用于捕获和处理页面发生的异常。

  • isErrorPage:指定当前页是否为错误处理页面。

  • buffer:指定页面缓冲区大小。

  • autoFlush:指定是否自动刷新缓冲区。

  • isThreadSafe:指定当前页是否线程安全。

例如,下面的 JSP 代码示例使用 <%@ page %> 指令指定了页面的编程语言、内容类型和编码方式:


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

<html>

  <head>

    <title>Page Directive Example</title>

  </head>

  <body>

    <!-- 页面内容 -->

  </body>

</html>

在这个例子中,第 1 行的 <%@ page %> 指令指定了页面的编程语言为 Java,内容类型为 HTML(使用 UTF-8 编码方式)。这些属性可以确保页面内容正确显示,并允许在页面中使用 Java 代码。

需要注意的是,<%@ page %> 指令只能出现一次,并且必须放置在 JSP 页面的顶部。指令的各个属性之间用空格分隔。

1.4包含指令

在 JSP 页面中,<%@ include %> 指令可以使用静态包含和动态包含两种方式。

静态包含指的是在编译时将指定的文件内容插入到当前页面中,即使被包含的文件发生了变化,也不会影响已经编译好的页面。这种方式可以提高页面的性能和可维护性,适用于一些稳定的、不常变化的文件。

以下是静态包含的示例:


<%@ include file="header.jsp" %>

<html>

  <head>

    <title>Static Include Example</title>

  </head>

  <body>

    <!-- 页面内容 -->

  </body>

</html>

<%@ include file="footer.jsp" %>

动态包含指的是在运行时根据需要将指定的文件内容包含到当前页面中,即每次请求都会重新加载被包含的文件。这种方式可以实现页面之间的动态交互,但同时也会降低页面的性能和可维护性。

以下是动态包含的示例:


<html>

  <head>

    <title>Dynamic Include Example</title>

  </head>

  <body>

    <!-- 动态包含导航栏 -->

    <jsp:include page="navbar.jsp" />



    <!-- 页面内容 -->



    <!-- 动态包含页脚 -->

    <jsp:include page="footer.jsp" />

  </body>

</html>

在这个例子中,<jsp:include> 标签会在请求页面时动态地加载指定的文件,并将其内容插入到当前页面中。因此,每次请求都会重新加载 navbar.jspfooter.jsp 文件。

需要注意的是,静态包含和动态包含的使用场景不同,在实际开发中应该根据具体情况选择适当的方式。

1.5跳转指令

在 JSP 页面中,<jsp:forward><jsp:include> 标签用于实现页面之间的跳转和包含。

<jsp:forward> 标签用于将当前请求转发到另一个资源(JSP 页面或 Servlet),使得客户端浏览器重新请求该资源。该标签通常用于实现页面之间的流程控制和重定向。

以下是 <jsp:forward> 标签的语法:


<jsp:forward page="url" />

其中 page 属性指定要转发到的资源的 URL。这个 URL 可以是相对路径或绝对路径。例如:


<jsp:forward page="/login.jsp" />

该标签可以放置在任何位置,但是必须位于 <body></body> 标记之间。

<jsp:include> 标签用于将另一个 JSP 页面或 Servlet 的输出包含到当前页面中。该标签通常用于实现页面之间的模块化和代码重用。

以下是 <jsp:include> 标签的语法:


<jsp:include page="url" />

其中 page 属性指定要包含的资源的 URL。这个 URL 可以是相对路径或绝对路径。例如:


<jsp:include page="/navbar.jsp" />

该标签会在当前页面被处理时动态地执行指定资源,并将其内容嵌入到当前页面中。

需要注意的是,<jsp:forward><jsp:include> 标签都是由 JSP 引擎处理的。因此,在使用这些标签时,应该确保目标资源存在,并且不会出现无限循环等问题。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,下面是用中文回复: 要创建一个vehicle类并将它声明为抽象类,可以按照以下步骤进行: 1. 首先,在代码中创建一个名为vehicle的类。 2. 在类的声明前面加上abstract关键字,将它声明为抽象类。 3. 在抽象类中定义一些抽象方法,这些方法没有具体的实现,只是声明了方法名和参数列表。 4. 抽象类中也可以定义一些具体的方法,这些方法有具体的实现。 5. 抽象类不能被实例化,只能被继承。子类必须实现抽象类中的所有抽象方法,否则子类也必须声明为抽象类。 6. 抽象类可以有构造方法,但不能被直接调用,只能在子类中被调用。 下面是一个示例代码: abstract class vehicle { public void start() { System.out.println("启动车辆"); } public abstract void run(); public abstract void stop(); } 在这个示例中,vehicle类被声明为抽象类,其中定义了一个具体方法start()和两个抽象方法run()和stop()。子类必须实现这两个抽象方法,否则子类也必须声明为抽象类。 ### 回答2: 在面向对象编程中,抽象类是一种不能被直接实例化的类,它只能用来继承和派生出其他类。创建一个Vehicle类并将它声明为抽象类,可以为我们设计出更加灵活、可扩展、易维护的程序提供便利。下面我们就来具体了解一下如何创建一个Vehicle抽象类。 首先,我们需要定义一个Vehicle类来描述车辆的属性与行为。车辆的属性可以包括颜色、品牌、型号等,行为可以包括驾驶、加速、制动等。由于车辆的属性和行为的种类非常多,我们无法在Vehicle中定义所有的属性和行为,因此,我们需要将Vehicle声明为抽象类。在Java中,我们可以使用abstract关键字来声明抽象类。例如: ```java abstract class Vehicle { //Vehicle类的成员变量和方法 } ``` 在声明为抽象类之后,Vehicle类不能直接实例化,而只能用作其他类的父类。我们可以创建一些子类来继承Vehicle类,并在子类中实现抽象方法和属性。例如,我们可以创建一个Car类来描述汽车,一个Bicycle类来描述自行车,一个Motorcycle类来描述摩托车等等。假设我们需要在Vehicle类中定义一个抽象方法start(),子类必须实现这个方法来启动车辆。那么,我们可以在Vehicle类中声明这个方法为抽象方法。例如: ```java abstract class Vehicle { //Vehicle类的成员变量和非抽象方法 //抽象方法定义 public abstract void start(); } ``` 这样,所有的子类都必须实现start()方法,否则编译器会报错。 在创建Vehicle抽象类时,还可以为它添加抽象属性、抽象静态方法,以及一些非抽象方法。抽象属性和抽象静态方法的定义类似于抽象方法。例如: ```java abstract class Vehicle { //抽象属性定义 public abstract String getColor(); //抽象静态方法定义 public static abstract double getTopSpeed(); //非抽象方法定义 public void stop() { //车辆的制动行为 } } ``` 抽象类是一种非常重要的编程抽象工具,它可以帮助我们构建更加灵活和可扩展的程序。当我们使用抽象类时,需要注意抽象方法和属性的定义,以及子类的实现。同时,抽象类还需要与其他面向对象的概念(例如接口、继承、多态等)结合使用,才能发挥出其最大的作用。 ### 回答3: 创建一个Vehicle类并将其声明为抽象类是一种良好的编程实践。Vehicle类可以作为一个父类,用于表示所有车辆的共同属性和行为。因为车辆有很多种,如汽车、卡车、火车、飞机等,它们虽然有很多共同点,但有一些属性和行为是不同的。 将Vehicle类声明为抽象类的原因是,我们在定义Vehicle类时,并不知道要实现哪些具体的属性和行为。但我们知道,所有车辆都有一些共同的属性和行为,比如车轮数量、最大速度、加速度、制动力等等。这些属性和方法可以作为抽象方法或抽象属性来定义。这些抽象方法或抽象属性需要在子类中实现或者覆盖。 例子来说,我们可以定义一个名为Vehicle的抽象类,它有车轮数量、最大速度、加速度、制动力等属性。同时,我们可以定义一些抽象方法,例如加速、制动、转向等。每个子类必须覆盖这些抽象方法以实现各自不同的行为。例如,汽车子类的加速方法可能需要考虑引擎转速和油门踏板的位置,而卡车子类的加速方法可能需要考虑载重和路况等因素。 通过创建Vehicle类并将其声明为抽象类,我们可以呈现车辆的基本属性和行为,并向子类强制执行这些属性和行为。这种抽象设计有助于提高代码的平稳性和可维护性,简化代码的编写和管理,使代码更易于扩展和修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值