JSP介绍

JSP是一种用于创建动态Web页面的Java技术,允许在HTML中嵌入Java代码。文章介绍了JSP的由来、元素(如指令、脚本、表达式)、内置对象,以及EL表达式和自定义标签库(如JSTL)的使用,强调了它们在简化Web开发中的作用。
摘要由CSDN通过智能技术生成

1. jsp: java server page

    1. jsp: java server page
    1. JSP的由来:
    1. JSP元素包括:
    1. JSP内置对象
    1. 问题:为什么第一次访问某个jsp资源,速度比较慢?
    1. EL 表达式
    1. 自定义标签库

JSP(Java Server Pages)是一种用于创建动态Web页面的Java技术。它允许开发人员将Java代码嵌入到HTML页面中,从而动态生成内容,而不必编写大量的Java代码。JSP具有易于学习和使用、易于维护、高度可定制化、安全可靠等优点,因此被广泛用于Web开发领域。

2. JSP的由来:

早期的Web开发主要采用CGI(Common Gateway Interface)技术,这种技术需要将请求发送给服务器,服务器执行程序并返回结果。由于CGI技术的效率较低,而JSP技术可以通过将动态内容嵌入HTML页面来避免重复生成页面,因此JSP技术应运而生。

  1. 在java代码中,编写html非常困难!易错!引号!
    因为需要把html的内容,一句一句地,调用writer.println()方法,放到参数中!
    最后输出给浏览器,浏览器解析Html的字符串,渲染得到页面!
  2. 思路是,如果结果中,大部分都是Html,只有少量的java代码,按照java代码中输出html的方式很困难。
  3. jsp的设计思路:“与其在java中写html,不如在html中写java”.
  4. 延伸出jsp的解析的语法规则。jsp元素
  5. tomcat,根据jsp的语法规则,把jsp“翻译”成java,再进行编译成“servlet”,再调用service方法!

3. JSP元素包括:

  1. 指令(Directive):指令用于设置页面属性,如引入其他页面、设置页面语言等。指令以“<%@”开头,“%>”结束,如下所示:
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
  1. 脚本(Scriptlet):脚本是JSP中嵌入的Java代码块,用于动态生成HTML页面。脚本以“<%”开头,“%>”结束,如下所示:
<% for (int i = 0; i < 10; i++) { %>
    <p>Hello World</p>
<% } %>
  1. 表达式(Expression):表达式用于在HTML页面中嵌入Java表达式的结果。表达式以“<%=”开头,“%>”结束,如下所示:
<p>当前时间是:<%= new java.util.Date() %></p>
  1. 声明(Declaration):声明用于定义Java方法和变量。声明以“<%!”开头,“%>”结束,如下所示:
<%!
    public void sayHello() {
        System.out.println("Hello World");
    }
%>
  1. 注释(Comment):注释用于在JSP页面中添加注释信息,不会在页面中显示。注释以“<%–”开头,“–%>”结束,如下所示:
<%-- 这是一个注释 --%>

4. JSP内置对象

  1. request:用于表示HTTP请求对象,包括请求的头部、请求参数等信息。

  2. response:用于表示HTTP响应对象,包括响应头、响应状态等信息。

  3. session:用于表示HTTP会话对象,可以存储和检索与会话相关的信息。

  4. application:用于表示Servlet上下文对象,可以在整个Web应用程序范围内存储和检索信息。

  5. out:用于向客户端发送输出,常用于输出HTML代码或动态生成的内容。

  6. pageContext:用于表示JSP页面上下文对象,可以访问其他内置对象。

  7. config:用于表示Servlet配置对象,包括Servlet初始化参数等信息。

  8. exception:用于表示Servlet异常对象,可以访问异常信息和栈轨迹等信息。

除了上述内置对象外,JSP还提供了一些隐式对象,这些对象不需要明确声明即可使用,包括:

  1. page:用于表示当前JSP页面对象。

  2. requestScope、sessionScope、applicationScope:用于访问不同作用域的对象。

  3. param、paramValues:用于获取请求参数的值。

  4. header、headerValues:用于获取请求头部信息的值。

  5. cookie:用于获取Cookie信息。

  6. initParam:用于获取Servlet初始化参数。

5. 问题:为什么第一次访问某个jsp资源,速度比较慢?

  1. tomcat识别访问
  2. 把jsp源文件“翻译”成java
  3. 把java文件编译成class
  4. 调用class文件中的service()方法。

第二次:
只要执行第4步!

6. EL 表达式

EL 表达式(Expression Language)是一种在 JSP 页面中使用的表达式语言,用于简化对数据的访问和处理。EL 表达式可以用来访问和操作 JSP 页面中的各种对象,如请求参数、会话属性、应用程序属性等。

在 JSP 页面中,EL 表达式通常使用 ${} 进行包含,例如${user.name},表示获取名为 user 的对象中的 name 属性。以下是一些 EL 表达式的示例:

${param.name} // 获取请求参数 name 的值
${sessionScope.user.name} // 获取会话对象中名为 user 的对象的 name 属性值
${applicationScope.data} // 获取应用程序对象中名为 data 的属性值
${empty users} // 判断名为 users 的对象是否为空
${fn:length(names)} // 获取名为 names 的对象的长度

EL 表达式支持的操作符包括算术运算符、比较运算符、逻辑运算符、条件运算符等。以下是一些操作符的示例:

${2 + 3} // 加法运算
${10 > 5} // 大于运算
${true && false} // 逻辑与运算
${empty users ? 'No users' : 'Has users'} // 条件运算

除了基本的表达式语言之外,EL 还支持访问 JavaBean 属性、调用 Java 方法、访问数组和列表等操作。以下是一些示例:

${user.name} // 获取名为 user 的对象的 name 属性
${utils.formatDate(date)} // 调用名为 utils 的对象的 formatDate 方法
${array[0]} // 获取数组的第一个元素
${list[1]} // 获取列表的第二个元素

总的来说,EL 表达式是一种非常方便的表达式语言,可以用于在 JSP 页面中获取和操作各种对象,简化了 JSP 页面的编写过程。

7. 自定义标签库

JSTL(JavaServer Pages Standard Tag Library)是一组自定义标签库,用于简化在 JSP 页面中的常见操作。其中,c 标签库是 JSTL 标签库中的一个,用于处理 JSP 页面中的控制结构,如条件语句、循环语句等。
以下是一些 c 标签的示例:

  1. if 标签
    if 标签用于实现条件判断,以下是一个示例:
<c:if test="${user.age >= 18}">
  Welcome, ${user.name}!
</c:if>

上述代码中,如果名为 user 的对象中的 age 属性大于等于 18,则输出欢迎消息。
2. choose 标签
choose 标签用于实现多路分支,以下是一个示例:

<c:choose>
  <c:when test="${user.gender == 'male'}">
    Hello, Mr. ${user.name}!
  </c:when>
  <c:when test="${user.gender == 'female'}">
    Hello, Ms. ${user.name}!
  </c:when>
  <c:otherwise>
    Hello, ${user.name}!
  </c:otherwise>
</c:choose>

上述代码中,根据名为 user 的对象中的 gender 属性,分别输出不同的欢迎消息。

  1. forEach 标签
    forEach 标签用于实现循环遍历,以下是一个示例:
<c:forEach items="${users}" var="user">
  ${user.name}, ${user.age}
</c:forEach>

上述代码中,遍历名为 users 的对象(可以是数组、列表等),将每个元素赋值给变量 user,并输出用户的姓名和年龄。

  1. set 标签
    set 标签用于设置变量的值,以下是一个示例:
<c:set var="result" value="${2 + 3}" />

上述代码中,将表达式 2 + 3 的结果赋值给名为 result 的变量。

总的来说,c 标签库是 JSTL 标签库中的一个常用标签库,用于简化在 JSP 页面中的控制结构的处理,提高了 JSP 页面的开发效率。

class Outer{
  private String name = "外部类";
  public void run(){
    System.out.println("外部类奔跑");
  }
  class Inner{
    public void say(){
      System.out.println(name);
      run();
    }
  }  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奕の辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值