JAVA SERVER PAGE
JSP本身就是Servlet所以具有Servlet的所有優點。
JSP在JSP第一次被訪問時轉換為Servlet。
extends HttpJspBase
並將其編譯成.class。
JSP:
效能優良
平台無關
tag可拓展
NEWS:
JSTL
JSF
標籤文法,是新推出的。便於處理的簡單的標籤文法。
Grammers:
1.declaration
2.scriptlet
3.expression
4.comment
5.directives
6.action動作指令
7.內建對象
1.declaration
<%!
int accessCount = 0; //Servlet的成員變數
void m(){} //Servlet的成員函數
%>
2.scriptlet:
<%
int i; //注意在<!%%>中聲明的區別:在<%%>局部變數
java code
%>
<%=++account%>
==
<%%out.println(++account);%>
4.comments
用戶端注釋:(不能啟動屏蔽語句的作用)
<%!-- --%>
伺服器端注釋:
<%-- --%>
<%
//
/*
*/
%>
注意小心伺服器端的代碼與用戶端的代碼是不可以互相調用的。
<script>
<%out.println("var i = 0");%>
alert(i);
</script>
沒問題。
動態產生Java指令碼
jsp --- 》 servlet ------ 》 browser
5.directives(編譯指令)
<%@XXXX atr1=""%>
page
include
taglib
指明與容器的溝通方式
<%@page import="java.util.*" | buffer="none|kb size8k"
| isErrorPage="true|false" | errorPage="url"
| contentType=""%>
方便重用:靜態包含,訪問同個request,包含頁面的contentType必須相同,不可傳參
<%@include file="url"%>
1.編譯前包含
2.同一個Servlet
註:包含時的代碼去掉不必要的部分
6.動作指令action
<jsp:include page="url" flush="true">
<jsp:param name= value=>
<jsp:param name= value=>
<jsp:param name= value=>
</jsp:include>
雖說不是一個對象,(產生兩個.class)被包含的頁面可以使用包含頁面接受的參數,可以如上傳參,消極式載入
被包含的request 》 包含的request
靜態包含與動態包含的區別。
執行時間段不同
容器對其的處理:一個servlet連個servlet
傳參數
request所包含的參數:一個同,一個是被包含的包含了包含的request同時有自己的資訊。
response.sendRedirect("");
訪問另一個Servlet當前處理Servlet繼續運行
命令瀏覽器:重新寫地址
不能使用前一個頁面的參數資訊
本Servlet代碼繼續執行,除非在後面加入:return;
速度慢
可以在url中傳參數
/代表的是:http://127.0.1/
<jsp:forword page="">
地址欄不變:
可得到上個頁面的內容
本Servelt不會繼續執行
速度快
可以傳參數
/代表的是http://127.0.0.1/project/
this.getServletContext().getDispatcher().forward();
在jsp中使用javabean
必須有個無參數的構造方法
getters and setters
<jsp:usebean id="" class="" scope="">
</jsp:usebean>
<jsp:setProperty name="id" property="" value="">
<jsp:getProperty name="id" proterty="">
scope:
page 預設
request
application
sesssion
解決亂碼問題: