jsp應用開發詳解筆記

Joe_n發表於2011-08-03
 

[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() 方法,而需要用其規定的一個方法來關閉連線。這種做法有兩個缺點:第一:改變了使用者使用習慣,增加了使用者的使用難度。第二:使連線池無法對之中的所有連線進行獨佔控制。

----------------------------------分頁資料--------------------------------》》》》》》》》

[T7] 分頁:(含連線)

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 應用

相關文章