JSP(Java Server Pages) 技术

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"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</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

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使用的标签
  • 标签语法
<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 }">测试1</c:when>
    	<c:when test="${1>0 }">测试2</c:when>
    	<c:otherwise>其他</c:otherwise>
    </c:choose>
    
    • redirect,重定向标签
    <c:redirect url="https://www.baidu.com"></c:redirect>
    
    • out,页面输出标签标签
    • set标签,声明标签
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaServer Pages (JSP) 技术提供了一种简单快速的方法来创建显示动态生成内容的 Web 页面。由业界处于领先地位的 Sun 公司制定了相关的 JSP 技术规范,该规范定义了如何在服务器和 JSP 页面间进行交互,还描述了页面的格式和语法。 JSP 技术的工作原理? JSP 页面使用 XML 标签和 scriptlets(一种使用 Java 语言编写的脚本代码),封装了生成页面内容的逻辑。它将各种格式的标签(HTML 或者 XML)直接传递回响应页面。通过这种方式,JSP 页面实现了页面逻辑与其设计和显示的分离。 JSP 技术Java 系列技术的一部分。JSP 页面被编译成 servlets,并可能调用 JavaBeans 组件(beans) 或 Enterprise JavaBeans 组件(企业 beans),以便在服务器端处理。因此,JSP 技术在构建可升级的基于 web 的应用程序时扮演了重要角色。 JSP 页面并不局限于任何特定的平台或 web 服务器上。JSP 规范在业界有着广泛的适应性。 什么是 servlet? 相对于浏览器上运行的 applets 而言,servlet 是在服务器上运行的,用 Java 语言编写的程序。详细信息可访问 http://java.sun.com/products/servlet. 我已经采用了servlets,为何还需要 JSP 技术呢? 既然 JSP 页面也要被编译成 servlets,那么理论上,您可以直接写 servlets 来支持您的基于 web 的应用程序。然而,JSP 技术通过将页面内容和显示逻辑分开,简化了创建网页的过程。在许多应用程序中,需将模板内容和动态生成的数据一块发送到客户端。基于此考虑,使用 JSP 页面技术将比全部用 servlets 来写要方便得多。 JSP 规范与 Java 2 Platform, Enterprise Edition 的关系如何? JSP 2.0 规范是 Java 2 Platform, Enterprise Edition 1.4 的重要组成部分。 在构建基于 web 前端显示的分布式企业应用程序方面,JSP 和 EJB 技术的结合显示出强大的力量。 有哪些 web 服务器支持 JSP 技术? 有许多 JSP 技术实现可用于不同的 web 服务器。要获取最新已被官方支持的 web 服务器信息 ,请访问 http://java.sun.com/products/jsp/industry.html。 Sun 公司是否提供对 JSP 规范的参考实现? J2EE SDK 是 JavaTM 2 Platform, Enterprise Edition 的参考实现。Sun 在 J2EE SDK 中改装并集成了 Tomcat JSPJava Servlet 实现。在应用程序部署和发布之前,可将J2EE SDK作为开发环境。Tomcat 是免费和开放源代码的 Java Servlet 和 JSP 技术的实现,它由 Apache Software Foundation 的 Jakarta 项目组开发。可从 http://jakarta.apache.org 下载。Tomcat 的商业应用需要有 Apache Software Foundation(ASF)的许可,并且可在 Apache 的网站上获取二进制和源代码的版本。JSP 技术的实现是 J2EE SDK 的一部分。 JSP 技术与其他产品技术相比有什么不同? JSP 技术是行业协作的结果,它的设计是开放的,符合行业标准的,并支持绝大多数的服务器、浏览器和相关工具。由于使用可重用的组件和标签取代了对页面本身脚本语言的严重依赖,JSP 技术大大加快了开发的速度。所有 JSP 的实现均支持以 Java 编程语言为基础的脚本语言,它有与生俱来的可适应性,支持复杂的操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值