JavaWeb——JSP,JSP指令,注释


什么是JSP?

JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。

JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
 
JSP(Java Server Pages)是指:

  • 在HTML中嵌入Java脚本代码

  • 由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本代码

  • 然后生成的整个页面信息返回给客户端

这里写图片描述

JSP原理:

浏览器向服务器发请求,不管访问的是什么资源,其实都是在访问Servlet,所以当访问一个jsp页面时,其实也是在访问一个Servlet,服务器在执行jsp的时候,首先把jsp翻译成一个Servlet,所以我们访问jsp时,其实不是在访问jsp,而是在访问jsp翻译过后的那个Servlet。

JSP页面中的java代码服务器是如何执行的?

在jsp中编写的java代码会被翻译到_jspService方法中去,当执行_jspService方法处理请求时,就会执行在jsp编写的java代码了,所以Jsp页面中的java代码服务器是通过调用_jspService方法处理请求时执行的。
  

Web服务器在调用jsp时,会给jsp提供一些什么java对象?

查看_jspService方法可以看到,Web服务器在调用jsp时,会给Jsp提供如下的8个java对象:

  • PageContext pageContext;
  • HttpSession session;
  • ServletContext application;
  • ServletConfig config;
  • JspWriter out;
  • Object page = this;
  • HttpServletRequest request,
  • HttpServletResponse response

JSP执行过程

Web容器处理JSP文件请求需要经过3个阶段:

  • 翻译阶段
  • 编译阶段
  • 执行阶段
    这里写图片描述

JSP页面的元素包括:

  • 静态内容:HTML静态文本
  • 指令:以<%@ 开始,以%> 结束。 导包,导库,导入其他文件。 比如<%@ include file=” ” %>
  • 表达式:<% = Java表达式 %> (页面上显示的信息)

  • 小脚本:<% Java代码 %> (嵌入Java代码,声明变量等)

  • 声明:<% ! 方法%> (定义方法,声明方法,在其他地方引用或调用)

  • 注释:<%– 注释,但客户端不能查看到 –%>

JSP模版元素

JSP页面中的HTML内容称之为JSP模版元素。

JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观。

JSP脚本片段:

JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码

    <% 
            多行java代码 
    %>
  在<% %>中可以定义变量、编写语句,不能定义方法。

JSP指令:

JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。

 在JSP 2.0规范中共定义了三个指令:

  • page指令
  • Include指令
  • taglib指令

JSP指令的基本语法格式:<%@ 指令 属性名=”值” %>


什么是Page指令?

Page指令:(设置脚本语言,导包,编码格式)

  • 通过设置内部的多个属性来定义整个页面的属性。

语法:<%@ page 属性1 = “属性值”,属性2 = “属性值” %>

Page指令常用属性:

  • Language:指定JSP页面使用的脚本语言。 默认:Java。

  • import:通过该属性来引用脚本语言中使用到的类文件。 默认值:无。

  • pageEncoding:用来指定JSP页面所采用的编码方式。

page指令的import属性

在Jsp页面中,Jsp引擎会自动导入下面的包

  • java.lang.*
  • javax.servlet.*
  • javax.servlet.jsp.*
  • javax.servlet.http.*

可以在一条page指令的import属性中引入多个类或包,其中的每个包或类之间使用逗号(,)分隔。

<%@ page import="java.util.*,java.io.*,java.sql.*"%>

或者:

<%@ page import="java.util.Date"%>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>

page指令的include指令

在JSP中对于包含有两种语句形式:

  • @include指令
  • <jsp:include>指令

@include可以包含任意的文件,当然,只是把文件的内容包含进来。

include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入。

语法:<%@ include file=”relativeURL”%>,其中的file属性用于指定被引入文件的路径。路径以“/”开头,表示代表当前web应用。

include指令细节注意问题:

  • 被引入的文件必须遵循JSP语法。

  • 被引入的文件可以使用任意的扩展名,即使其扩展名是html,JSP引擎也会按照处理jsp页面的方式处理它里面的内容,为了见明知意,JSP规范建议使用.jspf(JSP fragments(片段))作为静态引入文件的扩展名。

  • 由于使用include指令将会涉及到2个JSP页面,并会把2个JSP翻译成一个servlet,所以这2个JSP页面的指令不能冲突(除了pageEncoding和导包除外)。

总结@include指令:
使用@include可以包含任意的内容,文件的后缀是什么都无所谓。这种把别的文件内容包含到自身页面的@include语句就叫作静态包含,作用只是把别的页面内容包含进来,属于静态包含。


JSP中的注释

作用:

合理、详细的注释有利于代码后期的维护和阅读。

注释类别:

在JSP文件的编写过程中,共有三种注释方法:

HTML注释:<!– html 注释 –> 缺点:不安全,加大网络传输负担。
JSP注释:<%– JSP 注释 –%> 前台不显示,减轻了网络传输负担。

原文地址:https://www.cnblogs.com/aixing/p/13327718.html