Javaweb学习-03-JSP

Javaweb学习-03-JSP

1. 什么是JSP

  • JSP(java服务器页面),全称Java Server Pages,是由Sun公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
  • 写JSP就像在 写HTML,但是HTML只给用户提供静态数据,而JSP页面中可以嵌套Java代码,为用户提供动态数据。

2. JSP原理

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

  • C:\Users\TOP\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_Javaweb-03-session\work\Catalina\localhost\session\org\apache\jsp
    发现JSP程序转变成了Java程序。
  • Jsp的本质是servlet, 通过response的printWriter返回,response的getOutputStream只能调用一次,返回流就不能返回页面刷新。
  • HttpJspBase继承HttpServlet
public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent,
                 org.apache.jasper.runtime.JspSourceImports {
public abstract class HttpJspBase extends HttpServlet implements HttpJspPage {

在这里插入图片描述

  • JSP起源在这里插入图片描述

在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变。 如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态内容也需要程序员用Java程序代码产生,整个Servlet程序的代码将非常臃肿,编写和维护都将非常困难。对大量静态内容的美工设计和相关HTML语句的编写,并不是程序员所要做的工作,程序员对此也不一定在行。网页美工设计和制作人员不懂Java编程,更是无法来完成这样的工作。 为了弥补Servlet的缺陷,SUN公司在Servlet的基础上推出了JSP(Java Server Pages)技术作为解决方案。

  • JSP文件就像普通的HTML文件一样,它们可以放置在WEB应用程序中的除了WEB-INF及其子目录外的其他任何目录中,JSP页面的访问路径与普通HTML页面的访问路径形式也完全一样。
  • 在JSP页面中编写的Java代码需要嵌套在<%和%>中,嵌套在<%和%>之间的Java代码被称之为脚本片段(Scriptlets),没有嵌套在<%和%>之间的内容被称之为JSP的模版元素。

3. JSP基础语法

  • JSP表达式:将程序的输出到客户端
    <%= %>
<%= new java.util.Date()%>
  • JSP脚本片段
<%
    int sum = 0;
    for (int i = 0; i < 1000; i++) {
        sum += i;
    }
    out.println("<h1>  sum = " + sum + "</h1>");
%>
<%--嵌入HTML元素--%>
<%
    for (int i = 0; i < 3; i++) {
%>
<h5>123</h5>
<%
    }
%>


//对应java程序
    for (int i = 0; i < 3; i++) {
      out.write("\n");
      out.write("<h5>123</h5>\n");
    }

  • JSP声明
    会被编译到JSP生成的java的类中,其他会被生成到_jspService()方法中。
<%!
    static {
        System.out.println("jsp声明");
    }
    private int var = 0;
    public void setVar(int var){
        this.var = var;
    }
%>
//对应java源码
public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent,
                 org.apache.jasper.runtime.JspSourceImports {
    static {
        System.out.println("jsp声明");
    }
    private int var = 0;
    public void setVar(int var){
        this.var = var;
    }

在这里插入图片描述

4. JSP指令

JSP中的三种指令标签:

  1. <%@ page … %> 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
  2. <%@ include … %> 包含其他文件
  3. <%@ taglib … %> 引入标签库的定义
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%@ include file="common/header.jsp"%>
<h1>123456</h1>
<%@ include file="common/footer.jsp"%>
</body>
</html>

5. EL表达式、JSTL标签

  • 依赖导入
<dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl-api</artifactId>
      <version>1.2</version>
    </dependency>


    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>

  • EL表达式 ${}
    Expression Language表达式语言,是一种在JSP页面获取数据的简单方式(只能获取数据,不能设置数据)

  • JSTL标签
    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
    JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

    核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值