在應用程序中建立一個index.jsp文件,在tomcat的work目錄下會生成名為index_jsp.java和index_jsp.class文件,即在html語言中嵌入java語句,在服務器端會生成class文件將jsp中的內容用out.write()輸出,碰到<% %>標識的代碼則直接寫入到java文件中,通常用servlet產生數據,在jsp中顯示數據,數據保存在request域中,通過轉發的方式將數據傳給jsp,因為servlet與jsp共享一個request域,因此可以得到在servlet中封裝在request域中的數據。
jsp語法
一,模板元素:jsp頁面中的html內容稱為jsp模板元素,定義了網頁的基本骨架,即定義了頁面的結構和外觀
二、jsp腳本表達式:用於向浏覽器輸出數據
<%
String data="你好";
out.write(data);
%>
腳本表達式<%=data %>與用out.write(data);的作用是一樣的,都是將數據輸出給浏覽器。<%=data %>在源代碼中翻譯為out.print(data);
三、腳本片段:嵌入多行java代碼的片段
<%
String data="你好";
out.write(data);
%>
就是一個腳本片段,在腳本片段中只能出現java代碼,也必須遵循java語法,jsp引擎在翻譯jsp頁面時會原封不動的將片段中的內容放到Servlet的_jspService方法中,不同腳本片段中的數據可以共享,單個腳本片段的語句可以是不完整的,但是jsp頁面中的所有腳本片段合起來必須是完整的。
四、jsp聲明:聲明中的代碼會翻譯到sevice外面
<% public void run(){} %>則會錯誤,因為該段代碼放到service方法中,java中方法內不能在定義其他方法,因此是錯誤的定義方式,
<%!public void run(){} %>是正確的方式,表示聲明為service外部的方法,會當做sevice外部的java代碼。聲明可以讓jsp有自己的方法。
五、jsp注釋:<%-- --%>
在jsp中用<!-- --!>只會不顯示之間的內容,但是在頁面的源文件中仍然存在,只是被浏覽器隱藏沒有顯示,而<%-- --%> 之間的內容並不存在於頁面的原文件中
六、jsp指令
1、page:例:<%@ page contentType="text/html;charser="UTF-8"%>,如果一個指令有多個屬性,可以分開寫也可以寫在一個指令中
language="java"
extends="package.class"
import="package.class|package.*"導入多個包時可用","分割
session="true|false"在翻譯成Servlet時是否創建session,為true則可以在jsp中直接使用
buffer="none|8kb|siizekb"是否使用緩存,使用緩存時,當寫入的數據先寫入到緩存,然後再一次性寫給浏覽器,默認緩存為8kb
autoFlash="true|false"緩存滿後是否自動刷新
isThreadSafe="true|false",設置為false時,翻譯成servlet時會實現SingleThreadModel接口,即線程是安全的,當一個servlet沒有完成上一個用戶請求時會創建一個新的servlet
info="text"
errorPage="relative_url,errorPage屬性的設置值必須使用相對路徑,如果以"/"開頭表示當前web應用程序的根目錄,也可以在web.xml中使用全局配置
<error-page>
<exception-type>jva.lang.SrithmeticException</exception>
< <location>/error.jsp</location>
<error-page>
jsp中的errorpage優先級高於web.xml文件中的配置
isErrorPage="true|false",如果一個頁面為錯誤處理頁面,那麼可以將該頁面的isErrorPage屬性設置為true,這樣當跳轉到錯誤處理頁面時將會將異常對象傳給錯誤處理頁面的servlet,在源代碼中就可以查看該異常的原因
contentType="text/html;charset=UTF-8"頁面類型和編碼,http響應讓浏覽器以什麼編碼格式打開
pageEncoding=characterSet|ISO-8859-1"
isEIgnored="true|false"
摘自 sdtarena