JSP基础

作者: Mr_J316 | 来源:发表于2019-05-17 14:38 被阅读0次

    2019-05-14

    基本知识

    什么是JSP

    JSP是Java Server Pages的缩写,是符合JavaEE标准的表现层技术。

    JSP的页面构成

    • 静态模板代码:HTML+CSS+JS,发送至客户端浏览器执行
    • Java代码嵌入:JSP声明脚本、JSP代码脚本、JSP表达式。在服务器端执行,执行结果发送至客户端浏览器
    • EL表达式、JSP指令标签、JSP动作标签、JSTL、第三方标签库、自定义标签等。在服务器端执行,执行结果发送至客户端浏览器

    JSP的工作原理

    JSP是由安装在Web服务器上的JSP引擎(JSP/Servlet容器)编译执行的。JSP页面的访问者无须安装Java运行环境,因为服务器输送到客户端的是JSP的执行结果,是标准的HTML页面。

    JSP本质是一种特殊的Java类,即Servlet。每个JSP页面都是一个Servlet实例。JSP页面首先由服务器的JSP引擎自动翻译成 Servlet类,然后自动实例化执行,将生成的HTML响应文本发送到客户端浏览器。

    Servlet类内部通过_jspService方法处理用户请求。翻译过程中JSP最主要的代码都是在此方法中。

    如果该JSP页面是第一次被请求,那么会经历翻译-编译-执行完整阶段,如果不是第一次被请示,则不会再执行翻译/编译过程。这是为什么第二次执行JSP页面时明显比第一次执行要快的原因。如果修改了JSP页面,那么服务器将发现到该修改,并重新进行翻译和编译。这是为什么修改页面后访问速度变慢的原因。

    JSP基本语法

    JSP声明脚本

    <%! 声明语句 %>
    
    <%! int a = 1; %>
    <%
        out.println("a = " + a); 
        a++;    
    %>
    

    使用声明语句声明的变量是非线程安全的,如果有多个用户执行此JSP页面,将共享该变量。

    JSP页面编译成的Servlet类在容器中只有一个实例,在JSP中声明的变量是该实例的成员变量。成员变量在创建Servlet实例时初始化,其值将一直保存,直到实例销毁。

    JSP代码脚本

    <% Java代码 %>
    
    <table width="500" height="300" align="center" border="1">
        <%
           for (int i = 0; i < 5; i++) {
        %>
           <tr>
        <%
           for (int j = 0; j < 8; j++) {
        %>
              <td></td>
        <%
           }
        %>
           </tr>
        <%
           }
        %>
    </table>
    

    JSP表达式

    <%
      String str="Hello"; 
      out.print(str); 
    %>
    <!-- ----------两段代码效果相同-------------- -->
    <%
      String str="Hello"; 
    %>
    <%=str%>
    

    JSP注释

    注释分为两类:

    HTML注释:使用作为结束。可以在客户端显示。

    JSP注释:使用<%--作为开始,以--%>作为结束。不能在客户端显示。建议使用JSP注释,减少网络传输负担。

    JSP指令标签

    JSP指令标签在编译阶段起作用(亦称编译指令),用于通知服务器如何处理当前页面。

    <%@ 指令名称 属性名="属性值",属性名="属性值", ...%>
    

    常用指令标签:

    • page指令:页面设置
    • include指令:页面包含
    • taglib指令:引入标签库

    1.page指令标签

    page指令标签用来设置当前页面的全局属性(共13个)。

    属性名 说明
    language 声明所使用的脚本语言种类,目前只有java类型。
    contentType 指定该JSP文件的MIME格式,以及网页编码格式,即JSP页最终在 Browser(客户端)所见到的网页内容的编码。该属性值会自动在Servlet代码中生成response.setContentType方法调用。
    pageEncoding JSP文件本身的编码格式。如果pageEncoding属性存在,那么JSP页面的字符编码方式就由pageEncoding决定,否则由contentType属性中的charset决定,如果charset也不存在,JSP页面的字符编码方式就采用默认编码。
    import 用来导入Java包,和Java中的import语句作用类似。若导入多个包,可用逗号分隔。 使用格式:<%@ page import="导入的包名" %> 例如:import="java.util."
    errorPage 用来设置当前JSP文件发生异常错误时,网页重新跳转到能够处理异常的JSP页面。语法格式如下: <%@ page errorPage="错误处理页面"%>
    isErrorPage 指定该JSP文件是否为处理异常的文件,默认值为false。该页面的Servlet会自动接受其他页面传递过来的exception对象。语法格式如下: <%@ page isErrorPage="true | false"%> 可以通过设置web.xml取代此种方式 <error-page> <error-code>错误代码</error-code> <location>/目标页面</location> </error-page>
    extends 指定该JSP页面生成的Servlet继承于哪个父类。设定时必须指定该类的全名,即包名加类名。
    session 指定该JSP页面中是否有session对象。值为true或false,默认为true。
    buffer 指定输出流out是否具有缓冲区,默认有8KB缓冲。
    autoFlush 当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容。设置为true时为正常输出,如果设置为false,则会在buffer溢出时产生一个异常。
    isThreadSafe 指定该JSP文件是否支持多线程使用。默认为true。设置为false则是线程安全的。
    info 设置该JSP文件的相关信息,可以是任何字符串,可通过Servlet.getServletInfo方法取得该信息。
    isELIgnored 指定该JSP文件是否忽略EL表达式。设置为false,则EL表达式不会被忽略,将会被执行。
     <%@ page 属性1="属性值1" 属性2="属性值2" ... %>
    
     <%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
    

    2.include指令标签

    include指令标签可以将一个外部文件嵌入到当前JSP文件中,融合成一个页面。同时解析这个页面中的JSP代码。

    include既可以包含静态文本,也可以包含动态的JSP页面。出现在一个JSP页面中的include指令标签的数量不受限制。

      <%@ include file="被包含文件地址"%>
    

    JSP动作标签

    JSP动作标签(JSP Action)本质是一组JSP内置的标签,是对常用JSP功能的抽象与封装。

    <jsp:XXX />
    <jsp:XXX > </jsp:XXX>
    

    include标签

    用来动态包含文件。

    <jsp:include page="包含文件URL地址" flush="true | false" />
    

    page属性用来指定被包含文件的URL地址。flush属性用来指定缓冲区满时,是否进行清空。默认值为false。

    include动作标签与include指令标签的区别:

    <%@ include%>指令标签:静态包含。是将所有的被包含文件嵌入后,然后再进行编译处理。==因此多个jsp文件将形成一个Servlet,并且包含与被包含文件属于同一个request。==

    <jsp:include>动作标签:动态包含。是将包含与被包含的文件分开编译,在运行时再动态加入。==每个jsp文件将形成单独的Servlet,并且包含与被包含文件属于不同的request。==

    forward标签

    forward标签用来转发用户的请求,使得用户请求一个页面跳转到另一个页面。这种跳转为服务器端转发,==用户的地址栏不会发生任何变化。==

    <jsp:forward page="跳转目标地址"  />
    

    param标签

    param标签以"键/值"对的形式传递参数数据。

      <jsp:param name="参数名" value="参数值"/>
    

    说明:
    <jsp:param>标签包含两个属性,name用来设定传递参数的名称;value用来设定传递参数的值。

    <jsp:param>本身不能单独使用。在<jsp:include><jsp:forward>中作为子标签使用。

    <jsp:include page="目标页面">
        <jsp:param name="参数名" value="参数值" />
    </jsp:include>
    
    <jsp:forward page ="目标页面">
        <jsp:param name="参数名" value="参数值" />
    </jsp:forward>
    

    相关文章

      网友评论

          本文标题:JSP基础

          本文链接:https://www.haomeiwen.com/subject/vnfoaqtx.html