JSP(Java Server Pages) 技术

  • 目录
    • 1.jsp简介
    • 2.jsp的运行原理
    • 3.jsp和servlet的区别和联系
    • 4.JSP指令
    • 5.EL表达式
    • 6.JSP九大内置对象
    • 7.JSP动作标签
    • 8.JSTL(JavaServer Pages Standard Tag Libary,JSP标准标签库)

1.jsp简介

  • 中文全称“java服务器页面”,其本质是一个简化的servlet

  • Jsp的概念:是指java服务器端的页面,也叫动态的web的网页开发。

  • Jsp的页面元素构成:html java的代码段 tag标签

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

  • 示例:

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

<html>
<head>
<meta charset="UTF-8">
<title>Insert title heretitle>
head>
<body>
<%! 'jsp的声明(成员变量)' %>
<% 'jsp脚本(java代码)' %>
<%= 'jsp表达式(要输出到页面的值)' %>
<%-- 'jsp注释' --%>
body>
html>
  • jsp中的注释会被忽略。jsp中的html注释会被输出到页面,由于浏览器识别的是html注释,所以也不会被显示
  • jsp注释的内容在客户端不可见,html注释的内容在客户端可见。

2.jsp的运行原理

  • Jsp文件运行原理:转译-编译-运行
    Jsp文件整个运行过程中从jsp文件转译成java文件,然后编译成.Class文件,最后运行的过程。Jsp编译运行文件放置在tomcat的work文件夹下面:
  • 由于其本质是一个servlet,所以也存在生命周期:
    • init:对象的创建
    • server:服务阶段
    • dsetroy: 销毁

3.jsp和servlet的区别和联系

  • 联系:
    • JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。
    • jsp继承了HttpJspBase,是他的子类,HttpJspBase是HttpServlet的子类,HttpServlet是servlet的子类。
public abstract class HttpJspBase extends HttpServlet implements HttpJspPage{}
public abstract class HttpServlet extends GenericServlet{}
public abstract class GenericServlet implements Servlet, ServletConfig,  java.io.Serializable{}
  • 区别:
    • Servlet的应用逻辑是在Java文件中,并且完全从视图层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑

4.JSP指令

  • 概念:在jsp的页面中通常放在页面首行,使用<%@%>标记的标签。主要作用是将java代码可以在原本的html静态页面中编写从而实现动态的web网页效果。
  • 语法格式:<%@ 指令名称 指令的属性名=“属性值” … %>
  • 分类
    • include

      • 表示页面之间的包含关系,<%@include file=“被包含的页面路径”%>
      • 会包含目标文件的所有标签
      • include出现的位置就是目标文件展示的位置
      • 静态包含:会将被包含的文件加载进来一起编译,而不是单独编译
      • <$@incude file="" %>
    • page

      • 设置当前页面的一些属性的值,一个页面可以设置多个page指令,一个page指令也可也设置多个属性
      • 系统默认生成的:contnt-type pageencoding language
      属性 功能
      contentType 设置响应报头
      language 告知容器在翻译 .jsp 文件 采用哪种语言 ,比如说java
      import 导入需要的包
      contentType 设置响应报头
      language 告知容器在翻译 .jsp 文件 采用哪种语言 ,比如说java
      autoFlush 是否自动刷出, true表示自动刷出
      buffer 缓冲区大小
      extends 告知容器需要继承哪个类
      import 导入需要的包
      isELIgnored 是否忽略EL表达式
      errorPage 指定错误页面是哪个页面, 指当前JSP页面发生错误了,去往哪个页面
      isErrorPage 判断是否是错误页面
      isErrorPage=“true” 表示当前页面是一个异常处理页面,只有在 isErrorPage="true"JSP页面上才会有一个exception的内置对象;
      isErrorPage=“false” 表示当前页面不是一个异常处理页面,这个是默认值
      isThreadSafe 当前页面是否是线程安全的,true或者false
      pageEncoding 指定当前页面的编码
      session 当前页面是否使用session,true表示需要使用;false表示不需要使用
    • taglib

      • 介绍
        • Taglib 指令是定义一个标签库以及其自定义标签的前缀。
      • 使用参考JSTL 8.JSTL(JavaServer Pages Standard Tag Libary,JSP标准标签库)

5.EL表达式

  • 概念相关
    • EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。
  • 基本语法
    • 语法格式:
    ${表达式内容}
    

6.JSP九大内置对象

  • 内置对象展示
  1. page
  2. pagecontext
  3. session
  4. request
  5. response
  6. appliction
  7. out
  8. config
  9. exception
  • 内置对象详解

    • PageContext,页面全局对象

      • 类型:
      javax.servlet.jsp.PageContext  
      
      • 动态获取当前项目的路径:
      application.getContextPath();
      
    • Request,请求对象

      • 类型:
      javax.servlet.http.HttpServletrequest
      
    • ReSponse,响应对象

      • 类型:
      javax.servlet.http.HttpServletResponse
      
    • Config,配置

      • 类型:
      javax.servlet.ServletConfig
      
    • Out,页面输出对象

      • 类型:
      javax.servlet.jsp.jspWriter
      
    • Session,会话对象

      • 类型:
      javax.servlet.http.HttpSession
      
    • Page,描述页面的对象

      • 类型:
      java.lang.objec
      
    • Application,服务器对象

      • 类型:
      javax.servlet.ServletContext
      
    • Exception,异常处理对象

      • 类型:
      java.lang.Throwable
      
      • exception 对象的作用是显示异常信息,只有在包含 isErrorPage=“true” 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。
  • 内置对象中的四大作用域对象

    • 作用域对象的作用域大小 排序:Application>Session>Request>PageContext
    • PageContext
      • 作用域在一个页面之内,页面跳转即消失,包括转发操作,
    • Request
      • 作用域在一个请求之内
    • Session
      • 作用域在一个浏览器窗口,一个浏览器的多个标签可以共享这个对象,一般来说关闭浏览器时对象消失
    • Application
      • 作用域为整个服务器,直到服务器关闭对象才消失

7.JSP动作标签

  • 概述:一种专门供jsp使用的标签
  • 标签语法

  • 常用标签名
    -
    -
    • include标签
      • 其作用为动态包含
      • 动态包含的jsp会被单独编译
      • 代码示例:
      <jsp:include page="被包含的地址"  />
      
    • forward标签
      • 代码示例:
      <jsp:forward page="目标地址"  />
      
    • param标签
      • 在转发或者包含的标签内部使用,会给请求添加参数(getparam)
      • 代码示例:
       <jsp:param name="参数名" value="参数值"/>
      

8.JSTL(JavaServer Pages Standard Tag Libary,JSP标准标签库)

  • taglib标签引用
<%--核心库--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%--日期格式化库--%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%--方法库--%>
<%@taglib prefix="fun" uri="http://java.sun.com/jsp/jstl/functions"%>
  • 核心库使用示例
    • forEach,循环标签
    • 代码示例:
    <%
    		List<String> list = new ArrayList<>();
    		list.add("测试1");
    		list.add("测试2");
    		list.add("测试3");
    		list.add("测试4");
    		list.add("测试5");
    		list.add("测试6");
    		list.add("测试7");
    		list.add("测试8");
    		pageContext.setAttribute("list", list);
    	%>
    	<c:forEach begin="2" end="8" items="${list }" step="2" var="lis" varStatus="vs">
    	${vs.index } ${vs.count } ${lis } ${list.get(vs.index) } ${list.get(0) }
    	<br>
    	</c:forEach>
    
    • if,分支标签
    • choose,多分支标签
    <c:choose>
    	<c:when test="${1>0 }">测试1c:when>
    	<c:when test="${1>0 }">测试2c:when>
    	<c:otherwise>其他c:otherwise>
    c:choose>
    
    • redirect,重定向标签
    <c:redirect url="https://www.baidu.com">c:redirect>
    
    • out,页面输出标签标签
    • set标签,声明标签

你可能感兴趣的:(学习)