JSP詳解(一):頁面構成、EL表達式

什麼是JSP?

  1. JSP:Java Server Pages,其根本是一個簡化的Servlet設計,它實現了在Java中使用HTML標籤
  2. Jsp是一種動態網頁技術標準,也是JEE標準
  3. Jsp與Servlet一樣,是在服務器端執行的

jsp就是servlet,servlet不是jsp

常見動態網站開發技術對比

  • Jsp:Java平臺,安全性高,適合做大型開發,企業級的web程序。適合做企業級web開發。電子銀行、網上證劵交易所,中國移動網上營業廳,中國鐵路在線訂票系統
  • Asp:.Net平臺,簡單易學。但是安全性以及跨平臺性較差。asp.net托拉拽可視化開發,微軟配套軟件
  • Php:簡單、高效、成本低、開發週期短,適合中小型企業的Web應用程序開發。
    開發組合:LAMP(操作系統Linux+服務器TomCat+數據庫MySql+PHP)

都是server page sp。

JSP頁面元素的構成

  • 靜態內容:html元素
  • 小腳本:<% 在這之中的都是小腳本 %>
  • 註釋:
除了html註釋(客戶端可見)外,
也有jsp註釋<%-- jsp【註釋】 --%>(客戶端不可見), 
jsp腳本中的java註釋  總共三種註釋
  • 指令:
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  • 聲明
<%!
    //【聲明】(聲明函數和變量)
    String s ="zhangsan";
    int add(int x, int y){ //計算x+y的值
        return x+y;
    }
%>
  • 表達式
<!--【表達式】,不需要分號 -->
    你好,<%=s %><br>
    x+y=<%=add(10,5) %><br>

sample:

<!-- 這是【指令】page,控制文檔類型、編碼、導入java類等 -->
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 
    pageEncoding jsp文件本身的編碼
    contentType charset服務器發送給客戶端時的內容編碼
 -->

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jsp頁面元素構成以及語法</title>
</head>
<body>
    <h1>jsp頁面元素的構成</h1>
    <ul>
        <li>靜態內容</li>
        <li>小腳本</li>    
        <li>註釋</li>
        <li>指令</li>
        <li>聲明</li>
        <li>表達式</li>
    </ul>

    <h3>靜態內容</h3>
    <p>靜態內容只html元素</p>


    <%
        // 在這之中的都是小腳本 ,小腳本的內容是java代碼
    %>


    <!-- html 註釋-->
        html註釋:客戶端可見(查看源代碼)<br>
    <%-- jsp【註釋】 --%>
        JSP註釋:客戶端不可見<br>
    <%
        //jsp腳本註釋(java註釋)
        /**/
    %>

    <%!
        //【聲明】(聲明函數和變量)
        String s ="zhangsan";
        int add(int x, int y){ //計算x+y的值
            return x+y;
        }
    %><br>

    <!--【表達式】,不需要分號 -->
    你好,<%=s %><br>
    x+y=<%=add(10,5) %><br>
</body>
</html>

指令

jsp指令有三種:

  • page指令
  • include指令
  • taglib指令

page指令

功能:用來描述頁面的一些屬性

  • language屬性:指定腳本語言,只支持java
  • import屬性:導入包的指令,唯一一個可以多次使用的屬性,導入多包也可以用”,”分割包名

pageEncoding屬性和contentType屬性
都是設置編碼解碼方式,但是,pageEncoding是jsp頁面保存到硬盤上,編碼的碼錶。而contentType代表服務器給客戶端發送jsp數據時,這個jsp的解碼錶,這兩個碼錶應該相同,否則可能會出現亂碼的情況。
注意:在設置其中一個屬性後,另一個屬性的值也會變爲這個屬性的值,即服務器自動將碼錶轉換一致。
這裏寫圖片描述

  • autoFlush屬性和buffer屬性:jsp向瀏覽器輸出內容,輸出過程中,當緩衝區滿了的時候,是否自動刷新出緩衝區中的數據。也可以使用buffer設置緩衝區的大小。具體查看內置out對象。
<%@
    autoFlush="true" buffer="8kb"
%>
  • errorPage和isErrorPage:指定處理異常的頁面,是否處理異常,具體請查看內置exception對象
如果出現異常,跳轉到isErrorPage頁面中
<%
    errorPage="/page/error.jsp"
%>
設置當前頁面爲異常處理頁面,會獲得一個exception內置對象,用來接收異常。
<%
    isErrorPage="true"
%>

正確的異常處理方式

上面的方式雖然可以使用,但是太過於繁瑣了,我們可以在web.xml中根據http狀態碼設置轉向頁面。

<error-page>
    <error-code>404</error>
    <location>/page/error.jsp</location>
</error-page>

只要出現了404錯誤,就會跳轉到error.jsp頁面中去處理。

也可以根據異常作出相應的處理:

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/page/error.jsp</location>
</error-page>

只要出現了java.lang.Exception就跳轉到error.jsp頁面

  • extends屬性:繼承屬性,指定一個父類,必須是Servlet
  • info屬性:指定jspgetServletInfo的值
  • isELIgnored屬性:EL表達式的開關,默認可以使用
  • session屬性:boolean,是否使用session對象,如果爲false,不能直接使用session內置對象

include指令

靜態包含指令

  • file屬性:
<%@ include file="/page/child.jsp"%>

靜態包含原理:
這裏寫圖片描述

所以合併,處於同一個Java類,注意變量的聲明

作用:

  • 引入內容,合併頁面
  • 引入代碼,調用被引入代碼中的方法。

動態包含原理:
這裏寫圖片描述

taglib指令

導入標籤指令

使用EL表達式,替代jsp表達式腳本

用來代替<%= %>表達式腳本的。

格式:&{表達式}

主要用於四個域中取出數據(application,request,session,page),即簡化getAttribute…等操作的。
比如,

<%
    request.setAttribute("name", "Feathers");
%>

name爲:${requestScope.name} <!-- 即可取出request域中key爲name的值 -->

注意:
如果這樣寫${name},不指定域,則會從小域到大域依次查找。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章