JSP基礎語法<一>
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>