天天看點

JSP詳解(一):頁面構成、EL表達式什麼是JSP?常見動态網站開發技術對比JSP頁面元素的構成

什麼是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的解碼表,這兩個碼表應該相同,否則可能會出現亂碼的情況。

注意:在設定其中一個屬性後,另一個屬性的值也會變為這個屬性的值,即伺服器自動将碼表轉換一緻。

JSP詳解(一):頁面構成、EL表達式什麼是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屬性:指定jsp

    getServletInfo

    的值
  • isELIgnored屬性:EL表達式的開關,預設可以使用
  • session屬性:boolean,是否使用session對象,如果為false,不能直接使用session内置對象

include指令

靜态包含指令

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

靜态包含原理:

JSP詳解(一):頁面構成、EL表達式什麼是JSP?常見動态網站開發技術對比JSP頁面元素的構成

是以合并,處于同一個Java類,注意變量的聲明

作用:

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

動态包含原理:

JSP詳解(一):頁面構成、EL表達式什麼是JSP?常見動态網站開發技術對比JSP頁面元素的構成

taglib指令

導入标簽指令

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

用來代替

<%= %>

表達式腳本的。

格式:

&{表達式}

主要用于四個域中取出資料(application,request,session,page),即簡化getAttribute…等操作的。

比如,

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

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

注意:

如果這樣寫

${name}

,不指定域,則會從小域到大域依次查找。