JSP——JSP原理、基本语法、三大指令

目录

  • Java中的动态网页
  • JSP的原理
  • JSP的基本语法
  • JSP三大指令
    • page指令
    • include指令
    • taglib指令

Java中的动态网页

跳转到目录
一、 Servlet动态网页 = Java代码(主) + html代码(辅): (在Servlet中编写html代码)

Servlet擅长的事情:

  1. 接受请求参数,封装成对象.
  2. 调用业务方法,来处理请求.
  3. 控制界面跳转,跳转到某一个JSP负责做界面的输出操作.

二、 JSP动态网页 = Java代码(辅) + html代码(主): (在html中编写java代码)

Servlet不擅长做页面输出,JSP最擅长做页面输出!
责任分离思想:各自做各自最擅长的事情.


JSP的原理

跳转到目录
JSP(Java Server Page): Java的服务页面,Java动态网页.
JSP的本质就是Servlet.
JSP——JSP原理、基本语法、三大指令_第1张图片

  • hello.jsp代码:
<%--
  Created by IntelliJ IDEA.
  User: Sunny
  Date: 2020/1/28
  Time: 17:41
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>The first JSP application</title>
</head>
<body>
    北京时间:<%=new java.util.Date().toLocaleString()%>
</body>
</html>

JSP——JSP原理、基本语法、三大指令_第2张图片
JSP——JSP原理、基本语法、三大指令_第3张图片
IDEA将hello.jsp文件编译好后存在C:\Users\Sunny\.IntelliJIdea2019.3\system\tomcat\_coderZYGui\work\Catalina\localhost\ROOT\org\apache\jsp\jspdemo\hello目录下

  • hello.jsp编译后生成hello_jsp.java文件
// hello_jsp.java 文件中 _jspService方法
response.setContentType("text/html;charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
      			null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;
	  
	  // 在Servlet代码中输出静态网页内容
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("    The first JSP application\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("    北京时间:");
      out.print(new java.util.Date().toLocaleString());
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");

从上面可以看到:JSP的本质就是一个Servlet.


JSP的基本语法

跳转到目录
JSP语法:

  • JSP的注释:
    作用:注释Java脚本代码
    语法:<%–这是注释–%>
  • JSP的Java脚本表达式:
    作用:输出数据到页面上
    语法:<%=表达式%>(实际上就是调用输出流打印到页面上) out.print(表达式);
  • JSP中的Java脚本片段:(实际开发中,应做到JSP中不能出现一行Java脚本片段)
    作用:书写Java代码逻辑
    语法:
    <%
    语句1;
    语句2;
    %>
    原理:其中的语句会原封不动的被服务器翻译到对应的Servlet的_jspService方法中。
  • JSP的声明:
    作用:定义类的成员
    语法:
    <%!
    Java代码
    %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>The first JSP application</title>
</head>
<body>
    北京时间:<%=new java.util.Date().toLocaleString()%>

    <%-- JSP注释: 不会翻译到Servlet中 --%>

    <%--JSP的Java脚本表达式--%>
    <%
        // Java代码
        String name = "ZYGui";
        boolean flag = true;
    %>

    <%--JSP中的Java脚本片段--%>
    <%=name%>

    <%--JSP的声明--%>
    <%!
        private String user;

        public void doWork() {
        }
    %>

    <%--很麻烦--%>
    <%
        int num = 10;
        if (num > 5){
    %>
        num大于5
    <%
        }else if(num < 5){
    %>
        num小于5
    <%
        } else {
    %>
        num等于5
    <%
        }
    %>
</body>
</html>

JSP——JSP原理、基本语法、三大指令_第4张图片


JSP三大指令

跳转到目录
标准指令: 设定JSP网页的整体配置信息
特点:

  1. 并不向客户端产生任何输出,
  2. 指令在JSP整个文件范围内有效
  3. 为翻译阶段提供了全局信息

指令的语法格式:
<%@ 指令名称 属性名=“属性值” 属性名=“属性值” …%>

page指令

跳转到目录
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
page指令: 表示JSP页面相关的配置信息
常用属性:

  • language: 表示在JSP中编写的脚本的语言.(只能是java)
  • contentType: 表示JSP输出的MIME类型和编码.等价于 response.setContentType(“text/html;charset=utf-8”);
  • pageEncoding: 表示JSP输出的编码;等价于response.setCharacterEncoding(“utf-8”);
  • import: 用于导入JSP脚本中使用到的类,等价于Java代码中的: import 类的全限定名;
    注意:一个import属性可以导入多个包,用逗号分隔。
  • errorPage: 指示当前页面出错后转向(转发)的页面。目标页面如果以"/"(当前应用)就是绝对路径。
    JSP——JSP原理、基本语法、三大指令_第5张图片
    配置全局错误提示页面:
    web.xml
        
        <error-page>
            <error-code>404error-code>
            <location>/404.jsplocation>
        error-page>
    

include(包含)指令

跳转到目录
在这里插入图片描述

  • 静态包含: 使用JSP的include指令
    <% @include file="被包含的页面文件" %>
    特点:
    在翻译阶段就已经把多个JSP,合并在一起,最终翻译得到一个java文件
    在这里插入图片描述
  • 动态包含: 使用JSP的动作指令

    特点:
    把每一个JSP都翻译成Servlet类,在运行时期,动态的合并在一起,最终得到多个java文件
    在这里插入图片描述
  • 动态包含和静态包含的选择:
    如果在包含的时候,需要传递数据,此时只能使用动态包含.(
    如果被包含的页面如果是静态页面,那么使用静态包含
    如果被包含的如果是动态页面,那么使用动态包含

注意:在实际开始中通常将被包含的jsp页面的后缀名设置为jspf.

taglib(标签库)指令

跳转到目录

  • 作用:引入外部的标签
  • 语法:<%@taglib uri="标签名称空间" prefix="前缀"%>
    <%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

你可能感兴趣的:(JavaWeb)