1. 程式人生 > >JSP基礎語法<一>

JSP基礎語法<一>

編輯 無法跳轉 進行 註釋 出現 滿了 info tomcat this

1.1 jsp註釋

  JSP中支持兩種註釋,一種是顯式註釋,客戶端是允許看見的,另外一種是隱式註釋,客戶端是無法看見的;

  顯示註釋的內容會發送到客戶端;隱式註釋的內容不會發到客戶端;

content.jsp :

<!-- 這個註釋客戶端就可以看見 -->
<!-- JSP中的註釋,客戶端可以看見 -->
<%
	// Java中提供的單行註釋,客戶端無法看見
	/*
		Java中提供的多行註釋,客戶端無法看見
	*/
%>
<%-- 也看不見 --%>

1.2 Scriptlet

  在JSP中最重要的部分就是Scriptlet(腳本小程序),所有嵌入在HTML代碼中的Java程序都必須使用Scriplet標記出來;   在JSP中一共有三種Scritplet代碼:       第一種:<%%>:在此Scriptlet中可以定義局部變量、編寫語句       第二種:<%!%>:在此Scritplet中,可以定義全局變量、方法、類       第三種:<%=%>:用於輸出一個變量或一個具體內容 scriptlet_demo01.jsp :
<%
	int x = 10; 					// 定義局部變量
	String info = "www.baidu.com"; 		     // 定義局部變量
	out.println("<h2>x = " + x + "</h2>"); 		// 編寫語句
	out.println("<h2>info = " + info + "</h2>"); 	// 編寫語句
%>

scriptlet_demo02.jsp :

<%!
	public static final String INFO = "www.MLDNJAVA.cn" ; //定義全局變量
	int x = 10 ;
%>
<%
	out.println("<h2>x = " + x++ + "</h2>") ;	// 語句
%>
<%!
	public int add(int x,int y){  //定義方法
		return x + y ;
	}
%>
<%!
	class Person{   //定義類
		private String name ;
		private int age ;
		public Person(String name,int age){
			this.name = name ;
			this.age = age ;
		}
		public String toString(){
			return "name = " + this.name + ";age = " + this.age ;
		}
	}
%>
<%
	out.println("<h3>INFO = " + INFO + "</h3>") ;
	out.println("<h3>3 + 5 = " + add(3,5) + "</h3>") ;
	out.println("<h3>" + new Person("zhangsan",30) + "</h3>") ;
%>

scriptlet_demo03.jsp :

<%
	String info = "www.baidu.com" ;	// 局部變量
	int temp = 30 ;
%>
<h3>info = <%=info%></h3>
<h3>temp = <%=temp%></h3>
<h3>name = <%="luwucheng"%></h3>

盡量不要使用out.put.println()輸出,而使用表達式輸出;

1.3 scriptlet標簽  

如果過多的出現<%%>會導致代碼的混亂,此scriptlet標簽完成與<%%>同樣的功能;

scriptlet_tag.jsp

<jsp:scriptlet>
          String url="www.baidu.com";
</jsp:scriptlet>
<h2><%=url%></h2>

1.4 page指令

指定一個jsp頁面的相關屬性,包括MIME類型,定義需要導入的包,錯誤頁的指定;

只有import指定可以重復出現多次,其它屬性只能出現一次;

常用指令:contentType、pageEncoding、errorPage/isErrorPage、import

語法 :

<%@page 屬性="內容"%>

MIME:可以設置打開文件的應用程序類型;指定某個擴展名文件將使用何種應用程序打開的一個說明;

page_demo01.jsp

<%@ page language="java" contentType="text/html;charset=GBK"%>
<CENTER>
    <H2> 百度一下</H2>
    <H3> 網址:www.baidu.com </H3>
</CENTER>

以上,指定了開發語言是java,通過contentType進行設置,按照HTML文本文件進行顯示,頁面編碼是GBK;

設置頁面編碼

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>

contentType和pageEncoding設置編碼的區別:

  pageEncoding指的是jsp文件本身的編碼;

  contentType中的charset指的是服務器發送給客戶端的內容編碼;

如果一個jsp頁面只需要按照網頁顯示,則使用pageEncoding設置編碼即可;

錯誤頁的設置

完成錯誤頁的操作,需要滿足兩個條件:

  指定錯誤出現時的跳轉頁,通過errorPage屬性指定;

  錯誤處理頁必須有明確的標識,通過isErrorPage屬性指定;

會出現錯誤的頁面 show.jsp

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
<%@ page errorPage="error.jsp"%><%-- 一旦出現錯誤之後將跳轉到error.jsp中 --%>
<%
    int result = 10 / 0 ;    // 這裏操作將發生異常
%>
<h1>歡迎光臨本頁面</h1>

錯誤處理頁 error.jsp

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
<%@ page isErrorPage="true"%>    <%-- 表示此頁面可以處理錯誤 --%>
<h1>程序出現了錯誤!</h1>

錯誤頁的跳轉屬於服務器端的跳轉;

服務器端跳轉:頁面內容出現了改變,而地址欄並有改變;

客戶端跳轉:程序跳轉後,地址欄發生了變化;

有時可能出現無法跳轉的錯誤頁,無法顯示error.jsp頁面信息,則可能tomcat也認為該頁有錯誤;

解決方式:在error.jsp頁面中加入如下語句

     <%response.setStatus(200);%> 

1.5 包含指令

采用包含的形式,減少代碼的重復量;

jsp中可以通過靜態包含和動態包含兩種方式完成;

靜態包含

在jsp編譯時插入一個包含文本或代碼的文件,過程是靜態的;

包含的文件可以是jsp文件,html文件,文本文件或一段java程序(只是簡單的將內容合在一起進行顯示);

語法:<%@ include file="要包含的文件路徑"%>

include_demo01.jsp

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title></title></head>
<body>
	<h1>靜態包含操作</h1>
	<%@include file="info.htm"%>
	<%@include file="info.jsp"%>
	<%@include file="info.inc"%>
</body>
</html>

靜態包含中,現將三個文件的內容導入到include_demo.jsp中,然後一起編輯,最後呈現一份整體的內容給用戶,屬於先包含,後編譯處理;

動態包含

使用<jsp:include>指令完成動態包含操作;

可自動區分被包含的頁面是動態還是靜態;

如果是靜態,則將內容包容進來進行處理;如果是動態,則先進行動態處理,再將處理後的結果包含進來;

語法:

  * 不傳遞參數

  <jsp:include page="{要包含的文件 | <%=表達式%>}" flush="true | false" />

  * 包含參數

  <jsp:include page="{要包含的文件 | <%=表達式%>}" flush="true | false" >

    <jsp:param name="參數名稱" value="參數內容" />

    ....可以向被包含的頁面傳遞多個參數

  </jsp:include>