什麼是JSP。 JSP:Java Server Pages,其根本是一個簡化的Servlet設計,它實現了在Java中使用HTML標籤 Jsp是一種動態網頁技術標準,也是JEE標準 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},不指定域,則會從小域到大域依次尋找。