JavaWeb 17 JSP 基础语法和指令

6.3 JSP 基础语法


  1. 导入 相关的 jar 包依赖

tomcat 9.0 导入下面的:

<dependencies>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2.1-b03</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jsp-2.1</artifactId>
            <version>6.1.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api -->
        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/taglibs/standard -->
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
    </dependencies>

tomcat 10.0 导入下面的:

<dependencies>
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>5.0.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.servlet.jsp</groupId>
            <artifactId>jakarta.servlet.jsp-api</artifactId>
            <version>3.0.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jsp-2.1</artifactId>
            <version>6.1.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api -->
        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>jakarta.servlet.jsp.jstl</artifactId>
            <version>2.0.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/taglibs/standard -->
        <dependency>
            <groupId>org.apache.taglibs</groupId>
            <artifactId>taglibs-standard-impl</artifactId>
            <version>1.2.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taglibs</groupId>
            <artifactId>taglibs-standard-spec</artifactId>
            <version>1.2.5</version>
        </dependency>
    </dependencies>

然后 我们 运行一下;

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  $END$
  </body>
</html>

在这里插入图片描述
如果我们 现在 更改 里面的内容,如何 实现 实时更新呢?不需要 重启 项目。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  $END$
  <%= new java.util.Date()%>
  </body>
</html>

Ctrl + F10 会有以下的 提示。选择 第二个 单选框然后 点击 OK 即可 热更新!
在这里插入图片描述在这里插入图片描述

  1. JSP 表达式

<%=变量或表达式%>

  1. JSP 脚本片段

<% Java 的代码 %>

  1. JSP 声明(我们知道 JSP 最后是会被 翻译成 java 文件的,而这个 <%!%> 是 把内容 翻译在 类里。放在 类里面。而不是把变量或方法 写在 这个类 的 service 方法里!像是 什么 JSP 表达式,JSP 脚本片段 都是 写在 翻译后的 service 方法里的,这个 是把 内容 直接 写在 类里,也就是 属于 这个类。这样我们就可以 写 类变量 写一个新的方法 代码块

<%! static {System.out.println("Loading Servlet!")}%>

  1. JSP 脚本 和 HTML 语句 是 可以嵌套的,甚至 JSP 脚本自己也可以做 嵌套。
<%--
  Created by IntelliJ IDEA.
  User: muqua
  Date: 2021/8/13
  Time: 9:19
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  $END$
<%= new java.util.Date()%><br>
  <%
    int sum = 0;
    for(int i = 0;i <= 100;++i)
    {
  %><h1><%=i%></h1><%sum+=i;}%>
  <h1><%=sum%></h1>

  </body>
</html>

在这里插入图片描述


6.4 JSP 指令

JSP 指令 就是 做一些 核心的配置。比如说 我们的 Servlet 程序是否 需要 继承 其它 类,或者 要导入 什么 包。亦或者 编码是什么,内容类型是什么。等等等。

<%@ page 关键配置 %>

比如说:<%@ page contentType="text/html;charset=UTF-8" language="java" %>

在这里插入图片描述
在这里插入图片描述

  • 自定义 500 错误界面
<%--
  Created by IntelliJ IDEA.
  User: muqua
  Date: 2021/8/13
  Time: 9:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<img src="img/500.png">
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: muqua
  Date: 2021/8/13
  Time: 9:19
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page import="java.util.Date" %>
<%@page errorPage="500.jsp" %>
html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  $END$
<%= new Date()%><br>
  <%
    int sum = 0;
    int num = 1/0;
    for(int i = 0;i <= 100;++i)
    {
  %><h1><%=i%></h1><%sum+=i;}%>
  <h1><%=sum%></h1>

  </body>
</html>

在这里插入图片描述
采用 web.xml 来 进行 errorPage 的自定义设置。

<error-page>
        <error-code>500</error-code>
        <location>/500.jsp</location>
</error-page>

在这里插入图片描述


6.5 JSP 实现网页共同头尾 && JSP标签

网页共同头尾:就是 每个网页 都有 共同的 部分,也就是 共同的头部 和 共同的 尾部。。

<%@include file="common/header.jsp"%>
<%@include file="common/footer.jsp"%>

  • 主体
<html>
<head>
    <title>Title</title>
</head>
<body>

<%@include file="common/header.jsp"%>
<h1>我是主体</h1>
<%@include file="common/footer.jsp"%>

</body>
</html>

在这里插入图片描述
这种方式 其实 不太好!因为 它 最终 只是 写在 了一个 网页里面!也就是说 根本 不是 三个jsp 文件。是 从 三个 jsp 文件中提取 代码,进行的 合并。没准 还会出现 变量的 命名冲突问题。
在这里插入图片描述

在这里插入图片描述

所以 此时此刻 我们 需要 用到 jsp 标签!
这个是 三个网页 之间的 合并显示,而不是 合并拼接!!一定要注意。

<%--<%@include file="common/header.jsp"%>--%>
<jsp:include page="common/header.jsp"></jsp:include>
<h1>我是主体</h1>
<% int i = 10;%>
<jsp:include page="common/footer.jsp"></jsp:include>
<%--<%@include file="common/footer.jsp"%>--%>

在这里插入图片描述
原理在于,从三个 文件中 取 显示的部分进行渲染,然后 合并显示。而不是 从三个文件中 取 代码,合并拼接为 一个 jsp 文件!这就 证明了 jsp 标签 在 这一方面 更加的 强大和灵活!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值