jsp應用開發詳解筆記
[T1] Jsp應用:javaBean
(1) Javabean是一個可重複使用的 軟體元件。實際上javabean是java的一種類,通過封裝屬性和方法成為具有某種功能或者處理摸個業務的物件。簡稱bean ,由於JavaBean是基於java的一種語言。
可實現程式碼的可重複利用。
易編寫、易維護、易使用。
在Jsp介面呼叫bean時,可有效地將動態和靜態工作部分分開。減少伺服器的壓力。
Javabean分為視覺化元件和非視覺化元件。編寫一個Javabean就相當編寫一個java類。那麼這個類建立的一個物件稱作bean。即,在Javabean中編寫屬性時,封裝也是用
Set….
Get….
那麼只需將已編譯的java.Class檔案放到WEB-INF下即可。
1、useBean
<jsp:useBean id=”給bean起名字” class=”建立bean的類(包名+類名)” scope=”bean有效範圍”>
</jsp:useBean>或者
<jsp:useBean id=”給bean起名字” class=”建立bean的類(包名+類名)” scope=”bean有效範圍” />
當伺服器上含有useBean動作標籤的jsp頁面被載入執行時,jsp引擎將根據ID的名字,在一同步塊中,查詢jsp內建的pageContent物件是否含有名字ID和作用域scope的物件。如果此物件存在,就分配給一個這樣的物件給客戶,如果pageContent沒有查詢到指定作用域,就根據 “. Class檔案指定的類建立一個名字是id的物件,”並新增到pageContent內建物件。
Scope 儘管每個客戶bean功能都相同,但他們分配的空間不同。當客戶關掉瀏覽器時,Bean的空間將會被jsp引擎自動釋放。(page、request、session、application)
(2)Scope有兩種取值範圍:
Session:如果是session則是從建立bean開始,就可以在session有效範圍內使用這個bean,對於jsp來說這是共享的。
Page: 這裡scope的值是page,引擎分配給bean的空間名是不同的,當客戶離開該頁面的時候,引擎會取消分配給bean 空間。(共享資料適用於請求jsp 頁面)page jsp引擎分配給每個客戶的bean都是互不相同的。Bean的有效範圍是客戶的會話期間。也就是說如果每個介面都有一個useBean那麼bean的id值都是相同的。並且scope值都是session
Request 範圍內共享的資料實際上也就是存放在httpServletrequest物件中。
Application 共享資料實際上是放在serveltContext中的
動作標籤————》》
獲取和修改bean的屬性值可以通過getProperty和setProperty:
2、getProperty:
(1)、<jsp:getProperty name=”bean的名字” property =”bean的屬性”></jsp:getProperty>
或者
<jsp:getProperty name=”bean的名字” property =”bean的屬性” />
例如:
<jsp:useBean id="apple" class="cat.dog.Circle2" scope="page"></jsp:useBean>
<p>圓的半徑是:
<jsp:getProperty name="apple" property="radius"/>
<p>圓的面積是:
<jsp:getProperty name="apple" property="circleArea"/>
<p>圓的周長是:
<jsp:getProperty name="apple" property="circleLength"/>
(2)、setProperty:
例如:
<% int answer=(int)(Math.random()*100)+1; %>
<jsp:useBean id="guess" class="com.jiafei.GuessNumber" scope="session">
</jsp:useBean>
<jsp:setProperty name="guess" property="answer" value="<%=answer %>"/>
<p>隨機給你一個1到100的數字,猜猜這個數字是多少
<% String str=response.encodeRedirectURL("guess.jsp"); %>
<form action="<%=str %>" method="post">
<p>輸入你的猜測
<input name="guessNumber" type="text">
<input type="submit" value="提交">
</form>
1>、當然以上的寫法在成熟以後就可以簡化了。例如property=”*”時,這是bean的一種快捷方式。在bean中,屬性的名字、型別必須和request物件中的引數名相匹配。由於表單中傳遞過來的都是string型別的。Jsp內在機制會把這些引數轉化成bean屬性對應的型別。另外bean的屬性也就沒有必要對html表單進行排序了。
2>、
原輸入框<input name=”userName” type=”text” value=””>
....
<jsp:useBean id=”user” scope=”page” class=”com.jsp.test”>
<jsp:setPropterty name=”user” property=”*”>
<jsp:getPropterty name=”user” property=”userName”>
<jsp:getPropterty name="user" property="pasword">
<jsp:getPropterty name="user" property="age">
註釋:以上獲取bean中的屬性和指令碼效果相同於<%=user.getUserName%>
3、幾種試驗方法:(檢驗2>)
<jsp:useBean id="user" class="com.jsp.test" scope="session"/>
(1)如果將<input name=”userName” type=”text”>name改為 UserName的話,這時如果還是使用<jsp:getPropterty name=”user” property=”*”>結果會返回空值,原因是應為UserName的改變。
(2)有效地解決辦法是<jsp:getPropterty name=”user” property=”userName”
param=”UserName”>這樣可以將bean中的屬性值重新對映。
(3)以上方法還可以通過<jsp:getPropterty name=”userName” property=”userName”
Value=”UserName”>他標記ID是user,名稱是userName ,屬性值是UserName。
例項:
<jsp:useBean id="userInfo" class=" " scope="page">
<jsp:setProperty name ="userInfo" property="*"/>
</jsp:useBean>
<jsp:useBean id ="regist" class="" scope="page">
......
<%
regist.setUserInfo(userInfo);
regist.regist();
out.print("註冊成功"); %>
4、<jsp:plugin>
用來插入applet和JavaBean 。當jsp檔案被編譯結果傳送到瀏覽器時,<jsp:plugin>根據瀏覽器版本不同替換<object>用於html 4.0 <embed>用於html 3.2
<body>
<jsp:plugin code="classFileName"
codebase="classFileDirectoryName"
type="bean|applet">
[name="instanceName"]
[archive="URIToArchive"]
[align="bottom|top|middle|left|right"]
[height="displayPxl"]
[width="displayPxl"]
[hspace="leftRightPxl"]
[vspace="JREVersionNumber|1.1"]
[nspluginurl="URLToPlugin"]
[iepluginurl="URLToPlugin"]
[<jsp:params>
[<jsp:param name="" value="{parameterValue|<%=experssion %>}"/>]+
</jsp:params>]
name="parameterName" //這裡表示引數名
<jsp:fallback>text message for user </jsp:fallback> //回滾引數
</jsp:plugin>
</body>
------------------------------------------>>>>>>>>>>><jsp:forward>和<jsp:param>
<jsp:forward page="success.jsp">
<jsp:param name="user" value="<%=name%>"
<jsp:forward/>
Code: 這是將被執行的java類檔名稱。
CodeBase: 這包含外掛執行的java類目錄。
Hspace: 這是applet或bean顯示在螢幕中,所餘留的空間(pxl)。
Nspluginurl:這是Netscape Navigator使用者能夠使用的JRE的下載地址,此值為一個標準的URL地址。如:www.sun.com
Iepluginurl:這是Internet Explorer使用者能夠使用的JRE的下載地址,如:http://java.sun.com/products/plugin/index.html#download
[T2] 1、九大內建物件:
Request/Response/Application/Out/Config/Session/PageContext/Page/
Exception/
其中要注意的是request.getCookies()返回客戶端所有的物件,結果是一個Cookie陣列。
Request:
【getInputStream() 返回請求的輸入流,用於或的請求中的資料。
getMethod() 獲取客戶端詳伺服器傳送資料的方法。
GetRequestURI() 獲取發出請求字串的客戶端地址。
getServerPort() 獲取伺服器埠號。 getCoookies()/getHeader()getRemoteAddr()
getRemoteHost()】
Response的認識:
【addCookie 新增一個Cookie物件,用來儲存客戶端的使用者資訊。
containsHeader 判斷制定名字的HTTP檔案頭是否已經處在,然後返回真假bool值。
encodeURL() 使用sessionID封裝URL。如果沒有必要封裝URL,返回原值。
flushBuffer() 強制把當前緩衝區的內容傳送到客戶端
getBufferSize() 返回緩衝區的大小】
2、session物件的主要方法:
【getAttribute()
setAttribute()
getAttributeName()
getCreationTiem() session的建立時間
getMaxInactiveInterval() session的生命週期,為負值時session永遠不會消失。
Invalidate() 銷燬這個session物件,使它繫結的物件都失效。
removeAttribute() 移除session的屬性值。
】
3、 下面來說說Cookie的建立-------------------------->>>>>>>Cookie的建立
Cookie myCookie =new Cookie("color1",red);
myCookie.setMaxAge(30); //Cookie的生命週期
response.addCookie(myCookie);
註釋:如果沒有設定Cookie的生命週期,那麼Cookie將不會被儲存到客戶端.
(1)讀取Cookie:
Cookie [] allCookies =request.getCookie();
For(int i=0;i<allCookie.length;i++){
Cookie temp=allCookies[i];
If (temp.getName().equals("color1")){
String val=temp.getValue();
break;
}
}
(2)刪除Cookie只需將讀取Cookie時的 String val=temp.getValue(); 改為temp.setMaxAge(0);
註釋:A Zero value causes the "cookie" to be deleted—>>setMaxAge方法。
4、pageContext應用: ------------------
pageContext:物件被封裝成javax.servlet.jsp.pageContext介面。管理對jsp中特殊可見部分中已命名物件的訪問,它的建立和初始化都是由容器來完成的。那麼它的屬性和方法也和session極為相似。
以下是一些總結:
pageContext屬性預設在當前頁面是共享的。
Cookie首先它的位置是在客戶端。客戶端向伺服器傳送請求後,伺服器回寫到客戶端的一種用於儲存客戶資訊的一種記錄方式。
Session它的位置是在伺服器端。是把客戶端的資訊存放到伺服器的記憶體空間裡。
ServeletContext:首先它的位置是在伺服器端。ServeletContext物件中的屬性對所有的頁面都是共享的。
這裡需要補充的方法是:
getServletSession()返回ServeletContext物件。這個物件對所有的頁面都是共享的。
getServletConfig()返回當前頁面ServletConfig物件。
Application:方法的應用:----------------->>>>>>>>>
Application 物件為多個應用程式儲存資訊。它是一個容器,每個使用者都共同使用一個 application物件,伺服器啟動後,就會自動建立application物件,這個物件一直儲存,直到伺服器關閉為止。
getAttribute(String name); /setAttribute(String name,Object)
getAttributeNames() 返回所有的application物件的屬性的名字,其結果是一個列舉的例項。
getInitParameter(String name) 返回由name指定名字的application物件的某個屬性的初始值。
getServletInfo() 返回Servlet編譯器的當前版本的資訊。
例如:
index.jsp
int count = 0;
String counter_name =request.getParameter("counter_name");
Try
{ Count=Integer.parseInt((application .getAttribute(counter_name).toString()));
} catch (Exception ex) {
}
out.println("自從應用伺服器啟動後,此頁面已經訪問了" + count + "次");
count++;
test_application.jsp:
application.setAttribute(counter_name, new Integer(count));
<jsp:include page=index.jsp>
<jsp:param name="counter_name" value="test_application.jsp">
// "value" 重新對映
</jsp:include>
注意:有一點不足,當伺服器重新啟動時,計數器顯示從零開始!
Config物件:------------------
Config物件被封裝成javax.servlet.ServletConfig介面它表示servlet的配置。
當一個Servlet初始化時,容器把某些資訊通過此物件傳遞給Servlet。
Config物件常用方法:--------------------
getServletContext(); 返回執行者的Servlet上下文。
getServletName(); 返回Servelt的名字。
getInitParameter(String name) 返回名字為name的初始引數的值。
getInitParameterName() 返回這個jsp的所有的初始引數的名字。
注:Config物件能很好的改善計數器“歸零”問題。思路如下:首先獲取‘初始引數的值’如:
int count=Integer.parseInt((request.getInitParameter("counter")));然後通過application獲取物件的屬性值,再通過application給物件的屬性賦值。
Page ——jsp實現類物件的控制程式碼。
Exception ——exception是java.lang.Throwable類的一個例項。它指的是執行是異常。其結果也就是錯誤頁面。當頁面出現問題時,可以是用指令errorPage="...jsp"
,在處理異常的頁面匯入指令isErrorPage="true"
<%=exception.getMessage()%>。
<<<<<-------------------------------XML檔案------------------------------->>>>>
[T3] XML和檔案IO:(兩者都是可擴充套件性標記語言。)
資料儲存、資料交換、資料配置
1、Xhtml中的標籤都使用的是標準標籤,而xml使用的標籤是自定義標籤。
2、Xhtml主要用於顯示資料和頁面排版,xml是用來儲存和交換資料。
Xml 分為兩種方式:
DTD和XSD
Xml DTD
DTD 定義了XML文件中可用的合法元素。
例如:
Pet.dtd檔案
<!DOCTYPE pets [
<!ELEMENT pets (dogs,penguins)>
<!ELEMENT dogs (dog*)>
<!ELEMENT penguins (penguin+)> //此元素至少出現一次
<!ELEMENT dog (name,health,love,strain?)> //表示strain元素出現0-1次
<!ATTLIST dog id CDATA #REQUIRED> //dog元素有id屬性,是CDATA型別,必須出現。
<!ELEMENT penguin (name,health,love,sex)>
<!ATTLIST penguin id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)> //name元素的型別為#PCDATA。
<!ELEMENT haalth (#PCDATA)>
<!ELEMENT love (#PCDATA)>
<!ELEMENT strain (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
]>
多個xml檔案使用時是可通過<!DOCTYPE pets SYSTEM "pet.dtd">。另外dtd檔案也可直接寫在xml檔案中。
xml檔案也可以和css檔案配合使用<?xml-stylesheet type="text/css"?>
XML屬性:
<file type="gif">computer.gif</file>
屬性值必須用引號引著,單/雙引號都可。例如:<person sex="female"></person>,特殊情況下使用<gangster name='dfdfd "zsdfj" sdfsd'></gangster>
使用XSL來顯示XML文件:
XSL(全稱是:可擴充套件的樣式語言,the eXtensible Stylesheet Language)比起CSS樣式來說功能更為強大。XSL的一個主要的用途就是將XML文件轉換成HTML格式的檔案,然後再交付給瀏覽器,由瀏覽器顯示轉換的結果: 使用時的差別 <?xml-stylesheet type="text/xsl" href=" ">
使用XML文件解析器:
如果瀏覽器使用JavaScript作為指令碼語言,那麼利用下面的程式碼可以建立XML文件物件:
<javascript>
Var xmlDoc= new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("note.xml"); //載入文件
</javascript>
把XML文件由字元載入解析器:
<script type="text/javascript">var text="<note>"text=text+"<to>Tove</to><from>Jani</from>"
text=text+"<heading>Reminder</heading>"text=text+"<body>Don't forget me this weekend!</body>"
text=text+"</note>"var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")xmlDoc.async="false"
xmlDoc.loadXML(text) //載入字串</script>
解決命名衝突:
為了避免命名衝突可以採用以下方法解決:
<h:table></h:table>.......
<f:table></f:table>........
第二種方法:
<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/xsl">
<xsl:template match="/"><html><body><table border="2" bgcolor="yellow"><tr><th>Title</th><th>Artist</th></tr>
<xsl:for-each select="CATALOG/CD">
//XSL
例項:
<html><head><script type="text/javascript"for="window" event="onload">
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")xmlDoc.async="false"xmlDoc.load("xml_note.xml")
nodes=xmlDoc.documentElement.childNodesto.innerText= nodes.item(0).text
from.innerText= nodes.item(1).textheader.innerText=nodes.item(2).textbody.innerText= nodes.item(3).text
</script><title>HTML using XML data</title></head><body bgcolor="yellow"><h1>W3Schools.com Internal Note</h1><b>To: </b><span id="to"> </span><br /><b>From: </b><span id="from"></span>
<hr><b><span id="header"></span></b><hr><span id="body"></span></body></html>
☆☆《《《《《《《《《《-------------------------------------------------------------------------------------------------------》》》》》》》》》》》》》
[T4] JNDI英文全稱:(Java Naming and Directory Interface)命名和服務介面(統一資源定位)。
JNDI優點:
包含了大量的命名和目錄服務,使用通用介面來訪問不同種類的服務,可以同時連線到多個命名或目錄服務上。
建立起邏輯關聯,允許把名稱同Java物件或資源關聯起來,而不必指導物件或資源的物理ID。
命名服務:
n 名字和物件繫結在一起
n 能夠提供依據名字查詢物件的機制
n LDAP,NDS等等
命名和目錄介面:
n 包含大量命名和目錄服務,使用相同的API。
n 同時連線到多個命名和目錄服務。
n 允許把名稱和JAVA物件或資源聯絡在一起。使用JNDI訪問EJB元件。
n 使用通用介面訪問不同的目錄服務
客戶程式碼--->>JNDI客戶API------>>>伺服器提供介面-------->>>檔案系統提供者、LDAP伺服器提供者
------------------------------------》》》》》》》》
javax.naming:命名操作;
javax.naming.directory:目錄操作;
javax.naming.event:在命名目錄伺服器中請求事件通知;
javax.naming.ldap:提供LDAP支援;
javax.naming.spi:允許動態插入不同實現。
JNDI和JDBC
JNDI提供了一種統一的方式,可以用在網路上查詢和訪問服務。通過指定一個資源名稱,該名稱對應於資料庫或命名服務中的一個紀錄,同時返回資料庫連線建立所必須的資訊。統一介面。
try{
Context cntxt = new InitialContext();
DataSource ds = (DataSource) cntxt.lookup("jdbc/dpt"); //資料來源名稱
}
catch(NamingException ne){}
Connection conn=ds.getConnection();
--------------------------------
問題:不想在與協議無關的環境上下文中使用針對特定協議的系統資訊。
n 解決:使用Context物件封裝系統系統資料,避免在應用系統和特定協議之間造成耦合。
n 上下文Context,能夠包含0個或多個繫結物件的物件。在命名系統中,它們作為查詢物件過程的起點。
InitialContext類是一個初始上下文工廠,要執行任何操作,必須建立一個InitialContext。它是命名方案的起點。
例如/etc資料夾有兩個檔案:
mtab,exports。
/etc資料夾是一個上下文,含有兩個檔案的繫結。
n 有不同的廠商提供JNDI服務,為了裝入不同的服務,可以在InitialContext的構造時加入一個引數。
Properties env=new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,“com.ibm.websphere.naming.
WsnInitialContextFactory”);
//當用websphere時,我們可以找到這個類
env.put(Context.PROVIDER_URL, “iiop://localhost”);的師傅告訴對方告訴對方
InitialContext ctx= new InitialContext(env);
問題:lookup
n 一個對資料庫建立的資料來源物件被賦予了一個名稱,並被一個樹形目錄結構所管理。可以查詢它,引用它。
Context.xml檔案:context.xml檔案為全域性的上下文配置檔案,對所有的Web有效(conf)
<context>
<Environment name="name" value="hello JNDI" type="java.lang.String">
</context>
------------------------------------------------------------------------------------------------------------->>>>>>>>>>>>>>
[T5] 資料來源
DataSource類的全程為 javax.sql.DataSource, 它有一組特性可以用於確定和描述它所表示的實現存在的資料來源。資料庫連線池也是以資料來源的形式存在。
Tomcat6.0連線池配置
1.配置tomcat下的conf下的context.xml檔案,在之間新增連線池配置:
<Resource name="jdbc/sample"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SqlserverDriver"
--------------------->>>>>>>>
【driverClassName="oracle.jdbc.driver.OracleDriver"
url="oracle:jdbc:thin:@localhost:1521:accp"】
------------------->>>>>
url="jdbc:sqlserver://localhost:1433;databaseName=test"
username="sa"
password="sa"
maxActive="100" 連線池的最大資料庫連線數。設為0 表示無限制。
maxIdle="30" 接將被標記為不可用,然後被釋放。設為0表示無限制。
maxWait="10000" /> 最大建立連線等待時間。如果超過此時間將接到異常。設為-1 表示無限制。
2.配置你的應用程式下的web.xml中的之間加入:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/sample</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3.把連線資料庫的第三方驅動放到common/lib
[T6] 資料來源和連線池:
連線池的任務:預先分配連線、管理可用連線、分配新的連線、等候連線可用、在需要時關閉連線。
使用資料來源有兩種方式:
獨立使用、通過JNDI使用資料來源。
n(通過JNDI使用資料來源)網際網路中有數百萬臺伺服器,根本無法記住全部實體地址,為了連線到特定的
服務,需要把名稱和服務的位置,以及特定的資訊聯絡起來。命名和目錄服務把資訊按照層次結構組織起來,對映到目錄物件上。
n DNS將IP地址對映到名稱上。
www.zz.ha.cn <----------> 202.102.224.65
查詢有關資料,都會發現有一個共同的問題:這些連線池的實現方法都不同程度地增加了與使用者之間的耦合度。
但是另外一個共同的問題是,它們同時不允許使用者顯式的呼叫 Connection.close() 方法,而需要用其規定的一個方法來關閉連線。這種做法有兩個缺點:第一:改變了使用者使用習慣,增加了使用者的使用難度。第二:使連線池無法對之中的所有連線進行獨佔控制。
----------------------------------分頁資料--------------------------------》》》》》》》》
1.確定分頁顯示的資料量
2.計算顯示的頁數
3.編寫sql語句。
(1).最外層:通過rownum的限定查詢數量的下限。
(2).中間層:通過rownum的限定查詢數量的上限。
(3).最內層:查詢所有記錄.
例:...
public int getTotalPages(int count, int pageSize)
Int totalpages=0;
Totalpages=(count%pageSize==0)? (count/pageSize):(count/pageSize+1)
Return totalpages;
------------->>>
[T8] SmartUpload元件<<<<smartUpload元件.txt>>>
<form enctype="multipart/form-data" method="post">
選擇檔案:<input type="file" name="nfile">
</form>
File 【
saveAs(String destFilePathName)--儲存檔名
/isMissing()/String getFiledName()/String getFileName()】
Files【int getCount()/File getFile(int index)/long getSize()/Collection getColl() 】
SmartUpload【
Public final void initialize(PageContext pc)
Public void upload()
Public int save(String pathName)
Public void setMaxFileSize(long filesize) 檔案上傳的最大長度
Public void setTotalFileSize(long totalFile)檔案的總長度
】
<% //檔案上傳
smartUpload su = new SmartUpload();
su.initialize(pageContext);
try{
su.upload();
}exception(Exception ex){ ex.printStackTrace();}
//獲取單個上傳檔案
File file = su.getFiles().getFile(0);---------《《 //設定檔案在伺服器的儲存位置String filepath = "upload\\";
filepath += file.getFileName();
//檔案另存為 --------《《 file.saveAs(filepath, SmartUpload.SAVE_VIRTUAL);
------------------------》》
》》》<form method="post" enctype="multipart/form-data" action="control.jsp">《《《
上傳檔案:<input type="file" name="nfile"><br/>
檔案描述:<input type="text" name="explanation"><br/>
<input type="submit" value="上傳">
、</form>
com.jspsmart.upload.Request surequest = su.getRequest();
String explanation = surequest.getParameter("explanation");
out.println(explanation) ;
--------------------------------------------------------------》》》》》》
三層模式是軟體構架中最常見的一中分層模式,三層架構的具體劃分如下。
表示層: 用於使用者展示與互動
業務邏輯層:對業務邏輯進行封裝
資料訪問層:資料儲存和讀取
[T9] JSTL/EL語言:《jsp的EL語言.wps》(連線)
EL的全稱是Expression Language,它是一種借鑑JavaScript和XPath的表示式語言,EL定義了一系列的隱含物件和操作符,
EL通常用於某個作用域(內建物件)或判斷:
自動轉換型別:
Web伺服器對request請求通常會以string型別傳送,如果在業務邏輯層要得到引數值,就必須轉換。而EL不用。
EL語法:
${EL表示式}——》 “$” / “{ }”缺一不可。
點操作符:
EL通常由兩部分組成:物件和屬性如( . )和java基本上一樣。
‘[ ]’操作符:
-----》》》當屬性名中包含‘.’和‘-’時就必須使用‘[ ]’。
-----》》》訪問陣列。某陣列的物件名array,則訪問陣列中的元素就必須是${array[0],array[1]}。
JSTL通用標籤庫
[T10] 更多學習研究《JSTL學習研究.wps》----->>>學習研究《jQuery.wps》(連線)
XML核心動作標籤:
語法一:解析由string或者reader物件組成的XML文件
<x:parse xml="XMLDocument"{var ="var" [scope="scope"] | varDom="var" [scopeDom="scope"] }
[systemId="systemId"] [filter="filter"] />
語法二:解析在body中指定的XML文件
<x:parse xml="XMLDocument"{var ="var" [scope="scope"] | varDom="var" [scopeDom="scope"] }
[systemId="systemId"] [filter="filter"] >
XML Domcument to parse
</x:parse>
Scope={page|request|session|application}
<x:out select ="XPathException"[escapeXml="{true|false}"] / >
<x:set select ="XPahtException"[scope="{page|request|session|application}" ] var ="varName"/>
案例詳解:
<x:parse var="myxml">
<books>
<book id="1">
<name>jsp</name>
<price>59</price>
</book>
</books>
</x:parse>
<x:out select="$myxml/books//name"/>
<x:out select="$myxml//name"/>
<!-- out 和set 方法解析XML文件 -->
<c:set var="xmlText">
<books>
<book id="1">
<name>jsp</name>
<price>59</price>
</book>
</books>
</c:set>
<x:parse var="ts" xml="${xmlText}">
<x:out select="$ts/books//name"/>
</x:parse>
[T11] Servlet研究:(含連線)
Servlet是一個java程式,試執行在伺服器端,接受和處理使用者請求,並作出響應的程式。
Servelt的生命週期包括如下幾個階段。
1.載入和例項化。2.初始化 。3.服務。4.銷燬。
Servlet介面:
getServletInfo()方法用於(用於獲取Servelt資訊)和(返回ServletConfig物件,ServletConfig物件)
抽象類GerericServlet實現了Servelt介面和ServeltConfig介面給出了Serivece()方法,不依賴於協議的Servlet
Void init(servletconfig config)/ string getInitParameter(string name)/serveltConet
Xt getservletContext();
Init方法如果重寫的話,應該包含super。Init(config)如果要編寫一個servelt,只需整合GerericServlet
實現service()方法。
Servelet的生命週期就是指建立servlet例項之後其存在的時間以及何時消失init、service、destroy
javaBean
九大內建物件
XML和檔案IO
JNDI命名和服務介面
資料來源
資料來源和連線池
分頁SmartUpload元件
SmartUpload元件
(含連線)
JSTL/EL語言
(含連線)
JSTL檔案和jQuery檔案(含連線)XML
Servlet技術開發web 應用
相關文章
- Android應用開發筆記(一)Android筆記
- kafka詳解三:開發Kafka應用Kafka
- Android應用開發—Intent元件詳解AndroidIntent元件
- FFmpeg開發筆記(十五)詳解MediaMTX的推拉流筆記
- iOS開發中的Scroll View應用詳解iOSView
- 《高效能iOS應用開發》讀書筆記iOS筆記
- .Net開發筆記(十七) 應用程式擴充套件筆記套件
- 讀書筆記:高效能PHP應用開發筆記PHP
- 第一個spark應用開發詳解(java版)SparkJava
- JSP+JDBC資料庫應用開發初步JSJDBC資料庫
- JSP筆記JS筆記
- PHP - 《高效能php應用開發》學習筆記PHP筆記
- Flutter筆記-安裝及開發第一Flutter應用Flutter筆記
- iOS開發筆記(四):frame與bounds的區別詳解iOS筆記
- iOS 7: iPhone/iPad應用開發技術詳解iOSiPhoneiPad
- JSP自定義標籤開發+TLD檔案元素詳解JS
- JSP筆記-sessionJS筆記Session
- JSP詳解-1JS
- 馬克筆記—Android 端開源的 Markdown 筆記應用筆記Android
- Kinect開發學習筆記之(一)Kinect介紹和應用筆記
- .Net開發筆記(二十一) 反射在.net中的應用筆記反射
- J2EE開發筆記(四)—— pom.xml檔案詳解筆記XML
- ERP系統開發 ERP系統詳解及應用
- JSP筆記-除錯JS筆記除錯
- JSP自學筆記 (轉)JS筆記
- 《深入實踐Spring Boot》閱讀筆記:分散式應用開發Spring Boot筆記分散式
- EasyPR--開發詳解(6)SVM開發詳解
- Web應用開發: JSP語法程式設計實踐(一) JSP中的標識WebJS程式設計
- 《Flask Web開發:基於Python的Web應用開發實戰》學習筆記(二)FlaskWebPython筆記
- ChartDirector應用筆記(一)筆記
- ChartDirector應用筆記(二)筆記
- ChartDirector應用筆記(三)筆記
- 筆記八:URI Search 詳解筆記
- 【TCP/IP】TCP詳解筆記TCP筆記
- [使用 Weex 和 Vue 開發原生應用] 7 完整專案目錄詳解Vue
- Mybatis筆記04---使用註解開發MyBatis筆記
- FFmpeg開發筆記(五):ffmpeg解碼的基本流程詳解(ffmpeg3新解碼api)筆記API
- Servlet/JSP 容器開發手記2 (轉)ServletJS