<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    殺毒軟件

    _______ >>>>>>>

    BlogJava 聯(lián)系 管理
      5 Posts :: 3 Stories :: 2 Comments :: 0 Trackbacks

    2006年7月11日 #

    今天看了一片關(guān)于OOAD和UML的一個(gè)PPT文檔,感覺(jué)寫(xiě)得非常好,其中寫(xiě)得把現(xiàn)實(shí)世界中的實(shí)際業(yè)務(wù)流程轉(zhuǎn)換成適合計(jì)算機(jī)實(shí)現(xiàn),而且是面向?qū)ο蟮南到y(tǒng)流程一種實(shí)現(xiàn)方法,說(shuō)的真是言簡(jiǎn)意賅。讓人一下子就對(duì)程序設(shè)計(jì)的架構(gòu)有了一種豁然開(kāi)朗的感覺(jué)。我想如果能真正掌握UML的話,對(duì)今后的基本設(shè)計(jì),詳細(xì)設(shè)計(jì)和程序開(kāi)發(fā)有很大的好處! 我想這篇文章,主要的精髓有兩個(gè),如下所示:

    利用兩段式OOAD,開(kāi)發(fā)出三段式WINDOWS DNA應(yīng)用程式。

    兩段式OOAD物件導(dǎo)向分析和設(shè)計(jì)(Object-Oriented Analysis & Design);其中最重要的思想是:

    找出企業(yè)流程àOOAD分析企業(yè)流程,從企業(yè)流程導(dǎo)出系統(tǒng)流程àOOAD分析系統(tǒng)流程àOOP寫(xiě)元件。

    ?

    三段式Windows DNA應(yīng)用程序:

    ClientUser界面à中間層企業(yè)元件à后端資料庫(kù)



    這篇文章如要下載,請(qǐng)點(diǎn)擊此處下載。 呵呵。 :)

    posted @ 2006-07-11 10:05 趙守広 閱讀(372) | 評(píng)論 (1)編輯 收藏

    2006年7月6日 #

    光說(shuō)不練,等于紙上談兵。緊接上第二篇文章所講的,本節(jié)將談?wù)撘幌聅ervlet在tomcat環(huán)境下的配置。例子雖小,但是他確集中反映了問(wèn)題的實(shí)質(zhì)。好了,開(kāi)始進(jìn)入主題。

    我用的tomcat是4.1版本。
    準(zhǔn)備工作:
    ???? 1.安裝好JDK,解壓縮Eclipse,如果eclipse中沒(méi)有Tomcat包的話,在eclipse安裝目錄下添加Tomcat包。
    ???? 2.設(shè)置好eclipse中tomcat的安裝目錄和相關(guān)配置。
    ? 以上不是本節(jié)重點(diǎn),只是稍微說(shuō)一下,請(qǐng)讀者自己配置。下面進(jìn)入重點(diǎn):

    1.在tomcat的webapps下面新建目錄myServlet目錄,然后在Eclipse中新建Java工程,并將工作目錄指向剛剛新建的目錄上。例如:C:\Program Files\Apache Group\Tomcat 4.1\webapps\myServlet

    2.配置myServlet工程。
    ?? A.在myServlet工程下面分別新建WEB-INF,src,lib三個(gè)目錄,并在剛新建的WEB-INF目錄下面再新建classes目錄。
    ??
    ?? B.選擇myServlet工程,點(diǎn)擊右鍵,選擇“屬性”,將src做為代碼目錄,WEB-INF/classes做為編譯后的class目錄,把servlet.jar放在lib目錄下,并將lib包添加到工程中。

    ? C.在src目錄下面新建HelloWorld.java,這個(gè)就是我們要的Servlet。代碼如下:

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class HelloWorld extends HttpServlet {

    ?public void doGet(HttpServletRequest request, HttpServletResponse response)
    ???throws IOException, ServletException {
    ??response.setContentType("text/html");
    ??PrintWriter out = response.getWriter();
    ??out.println("<html>");
    ??out.println("<head>");
    ??out.println("<title>Hello World!</title>");
    ??out.println("</head>");
    ??out.println("<body>");
    ??out.println("<h1>Hello World!</h1>");
    ??out.println("</body>");
    ??out.println("</html>");
    ?}
    }

    將代碼編譯,在WEB-INF/classes目錄下就會(huì)有HelloWorld.class文件生成。

    3.下面是配置web.xml文件,在myServlet/WEB-INF目錄下新建web.xml文件,配置文件如下:

    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "

    <web-app>
    <display-name>Welcome to Tomcat</display-name>
    <description>
    Welcome to Tomcat
    </description>
    <servlet>
    <servlet-name>HelloWorld</servlet-name>
    <servlet-class>HelloWorld</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>HelloWorld</servlet-name>
    <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>
    </web-app>


    4.最后一步是將此工程設(shè)置為tomcat工程。打開(kāi)tomcat安裝目錄下的conf目錄下的server.xml文件。
    打開(kāi)此文件,找到<!-- Tomcat Root Context --> 這一行。在這一行的下面添加如下一段文字:
    <Context path="/myServlet" reloadable="true" docBase="myServlet" debug="0"/>

    保存以上文件,至此已經(jīng)完成了全部的配置工作。重啟Tomcat,在瀏覽器中輸入:
    http://localhost:8080/myServlet/HelloWorld?即可看到Hello World!


    以上。

    posted @ 2006-07-06 10:35 趙守広 閱讀(965) | 評(píng)論 (0)編輯 收藏

    2006年6月30日 #

    Servlet是對(duì)支持Java的服務(wù)器的一般擴(kuò)充。它最常見(jiàn)的用途是擴(kuò)展Web服務(wù)器,提供非常安全的、可移植的、易于使用的CGI替代品。它是一種動(dòng)態(tài)加載的模塊,為來(lái)自Web服務(wù)器的請(qǐng)求提供服務(wù)。它完全運(yùn)行在Java虛擬機(jī)上。由于它在服務(wù)器端運(yùn)行,因此它不依賴于瀏覽器的兼容性。
    servlet容器:
    負(fù)責(zé)處理客戶請(qǐng)求、把請(qǐng)求傳送給servlet并把結(jié)果返回給客戶。不同程序的容器實(shí)際實(shí)現(xiàn)可能有所變化,但容器與servlet之間的接口是由servlet API定義好的,這個(gè)接口定義了servlet容器在servlet上要調(diào)用的方法及傳遞給servlet的對(duì)象類。
    servlet的生命周期:
    1、servlet容器創(chuàng)建servlet的一個(gè)實(shí)例
    2、容器調(diào)用該實(shí)例的init()方法
    3、如果容器對(duì)該servlet有請(qǐng)求,則調(diào)用此實(shí)例的service()方法
    4、容器在銷毀本實(shí)例前調(diào)用它的destroy()方法
    5、銷毀并標(biāo)記該實(shí)例以供作為垃圾收集
    一旦請(qǐng)求了一個(gè)servlet,就沒(méi)有辦法阻止容器執(zhí)行一個(gè)完整的生命周期。
    容器在servlet首次被調(diào)用時(shí)創(chuàng)建它的一個(gè)實(shí)例,并保持該實(shí)例在內(nèi)存中,讓它對(duì)所有的請(qǐng)求進(jìn)行處理。容器可以決定在任何時(shí)候把這個(gè)實(shí)例從內(nèi)存中移走。在典型的模型中,容器為每個(gè)servlet創(chuàng)建一個(gè)單獨(dú)的實(shí)例,容器并不會(huì)每接到一個(gè)請(qǐng)求就創(chuàng)建一個(gè)新線程,而是使用一個(gè)線程池來(lái)動(dòng)態(tài)的將線程分配給到來(lái)的請(qǐng)求,但是這從servlet的觀點(diǎn)來(lái)看,效果和為每個(gè)請(qǐng)求創(chuàng)建一個(gè)新線程的效果相同。

    servlet API
    servlet接口:
    public interface Servlet
    它的生命周期由javax.servlet.servlet接口定義。當(dāng)你在寫(xiě)servlet的時(shí)候必須直接或間接的實(shí)現(xiàn)這個(gè)接口。一般趨向于間接實(shí)現(xiàn):通過(guò)從javax.servlet.GenericServlet或javax.servlet.http.HttpServlet派生。在實(shí)現(xiàn)servlet接口時(shí)必須實(shí)現(xiàn)它的五個(gè)方法:
    init():
    public void init(ServletConfig config) throws ServletException
    一旦對(duì)servlet實(shí)例化后,容器就調(diào)用此方法。容器把一個(gè)ServletConfig對(duì)象傳統(tǒng)給此方法,這樣servlet的實(shí)例就可以把與容器相關(guān)的配置數(shù)據(jù)保存起來(lái)供以后使用。如果此方法沒(méi)有正常結(jié)束就會(huì)拋出一個(gè)ServletException。一旦拋出該異常,servlet就不再執(zhí)行,而隨后對(duì)它的調(diào)用會(huì)導(dǎo)致容器對(duì)它重新載入并再次運(yùn)行此方法。接口規(guī)定對(duì)任何servlet實(shí)例,此方法只能被調(diào)用一次,在任何請(qǐng)求傳遞給servlet之前,此方法可以在不拋出異常的情況下運(yùn)行完畢。
    service():
    public void service(ServletRequest req,ServletResponse res) throws ServletException,IOException
    只有成功初始化后此方法才能被調(diào)用處理用戶請(qǐng)求。前一個(gè)參數(shù)提供訪問(wèn)初始請(qǐng)求數(shù)據(jù)的方法和字段,后一個(gè)提供servlet構(gòu)造響應(yīng)的方法。
    destroy():
    public void destroy()
    容器可以在任何時(shí)候終止servlet服務(wù)。容器調(diào)用此方法前必須給service()線程足夠時(shí)間來(lái)結(jié)束執(zhí)行,因此接口規(guī)定當(dāng)service()正在執(zhí)行時(shí)destroy()不被執(zhí)行。
    getServletConfig():
    public ServletConfig getServletConfig()
    在servlet初始化時(shí),容器傳遞進(jìn)來(lái)一個(gè)ServletConfig對(duì)象并保存在servlet實(shí)例中,該對(duì)象允許訪問(wèn)兩項(xiàng)內(nèi)容:初始化參數(shù)和ServletContext對(duì)象,前者通常由容器在文件中指定,允許在運(yùn)行時(shí)向sevrlet傳遞有關(guān)調(diào)度信息,后者為servlet提供有關(guān)容器的信息。此方法可以讓servlet在任何時(shí)候獲得該對(duì)象及配置信息。
    getServletInfo():
    public String getServletInfo()
    此方法返回一個(gè)String對(duì)象,該對(duì)象包含servlet的信息,例如開(kāi)發(fā)者、創(chuàng)建日期、描述信息等。該方法也可用于容器。

    GenericServlet類
    Public abstract class GenericServlet implants Servlet,ServletConfig,Serializable
    此類提供了servlet接口的基本實(shí)現(xiàn)部分,其service()方法被申明為abstract,因此需要被派生。init(ServletConfig conf)方法把servletConfig對(duì)象存儲(chǔ)在一個(gè)private transient(私有臨時(shí))實(shí)例變量里,getServletConfig()方法返回指向本對(duì)象的指針,如果你重載此方法,將不能使用getServletConfig來(lái)獲得ServletConfig對(duì)象,如果確實(shí)想重載,記住要包含對(duì)super.config的調(diào)用。2.1版的API提供一個(gè)重載的沒(méi)有參數(shù)的init()方法。現(xiàn)在在init(ServletConfig)方法結(jié)束時(shí)有一個(gè)對(duì)init()的調(diào)用,盡管目前它是空的。2.1版API里面,此類實(shí)現(xiàn)了ServletConfig接口,這使得開(kāi)發(fā)者不用獲得ServletConfig對(duì)象情況下直接調(diào)用ServletConfig的方法,這些方法是:getInitParameter(),getInitParameterNames(),getServletContext。此類還包含兩個(gè)寫(xiě)日志的方法,它們實(shí)際上調(diào)用的是ServletContext上的對(duì)應(yīng)方法。log(String msg)方法將servlet的名稱和msg參數(shù)寫(xiě)到容器的日志中,log(String msg,Throwable cause)除了包含servlet外還包含一個(gè)異常。

    HttpServlet類
    該類擴(kuò)展了GenericServlet類并對(duì)servlet接口提供了與HTTP更相關(guān)的實(shí)現(xiàn)。
    service():
    protected void service(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
    public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
    該方法作為HTTP請(qǐng)求的分發(fā)器,這個(gè)方法在任何時(shí)候都不能被重載。當(dāng)請(qǐng)求到來(lái)時(shí),service()方法決定請(qǐng)求的類型(GET,POST,HEAD,OPTIONS,DELETE,PUT,TRACE),并把請(qǐng)求分發(fā)給相應(yīng)的處理方法(doGet(),doPost(),doHead(),doOptions(),doDelete(),doPut(),doTrace())每個(gè)do方法具有和第一個(gè)service()相同的形式。為了響應(yīng)特定類型的HTTP請(qǐng)求,我們必須重載相應(yīng)的do方法。如果servlet收到一個(gè)HTTP請(qǐng)求而你沒(méi)有重載相應(yīng)的do方法,它就返回一個(gè)說(shuō)明此方法對(duì)本資源不可用的標(biāo)準(zhǔn)HTTP錯(cuò)誤。
    getLatModified():
    protected long getLastModified(HttpServletRequest req)
    該方法返回以毫秒為單位的的自GMT時(shí)間1970年1月1日0時(shí)0分0秒依賴的最近一次修改servlet的時(shí)間,缺省是返回一個(gè)負(fù)數(shù)表示時(shí)間未知。當(dāng)處理GET請(qǐng)求時(shí),調(diào)用此方法可以知道servlet的最近修改時(shí)間,服務(wù)器就可決定是否把結(jié)果從緩存中去掉。

    HttpServletRequest接口
    public interface HttpServletRequest extends ServletRequest
    所有實(shí)現(xiàn)此接口的對(duì)象(例如從servlet容器傳遞的HTTP請(qǐng)求對(duì)象)都能讓servlet通過(guò)自己的方法訪問(wèn)所有請(qǐng)求的數(shù)據(jù)。下面是一些用來(lái)獲取表單數(shù)據(jù)的基本方法。
    getParameter()
    public String getParameter(String key)
    此方法試圖將根據(jù)查詢串中的關(guān)鍵字定位對(duì)應(yīng)的參數(shù)并返回其值。如果有多個(gè)值則返回列表中的第一個(gè)值。如果請(qǐng)求信息中沒(méi)有指定參數(shù),則返回null。
    getParameterValues():
    public String[] getParameterValues(String key)
    如果一個(gè)參數(shù)可以返回多個(gè)值,比如復(fù)選框集合,則可以用此方法獲得對(duì)應(yīng)參數(shù)的所有值。如果請(qǐng)求信息中沒(méi)有指定參數(shù),則返回null。
    GetParameterNames():
    Public Enumeration getParameterNames()
    此方法返回一個(gè)Enumeration對(duì)象,包含對(duì)應(yīng)請(qǐng)求的所有參數(shù)名字列表。
    HttpServletResponse接口
    public interface HttpServletResponse extends servletResponse
    servlet容器提供一個(gè)實(shí)現(xiàn)該接口的對(duì)象并通過(guò)service()方法將它傳遞給servlet。通過(guò)此對(duì)象及其方法,servlet可以修改響應(yīng)頭并返回結(jié)果。
    setContentType():
    public void setContentType(String type)
    在給調(diào)用者發(fā)回響應(yīng)前,必須用此方法來(lái)設(shè)置HTTP響應(yīng)的MIME類型。可以是任何有效的MIME類型,當(dāng)給瀏覽器返回HTML是就是”text/html”類型。
    getWriter():
    public PrintWriter getWriter()throws IOException
    此方法將返回PrintWriter對(duì)象,把servlet的結(jié)果作為文本返回給調(diào)用者。PrintWriter對(duì)象自動(dòng)把Java內(nèi)部的UniCode編碼字符轉(zhuǎn)換成正確的編碼以使客戶端能夠閱讀。
    getOutputStream():
    public ServletOutputStream getOutputStream() throws IOException
    此方法返回ServletOutputStream對(duì)象,它是java.io.OutputStream的一個(gè)子類。此對(duì)象向客戶發(fā)送二進(jìn)制數(shù)據(jù)。
    setHeader():
    public void setHeader(String name,String value)
    此方法用來(lái)設(shè)置送回給客戶的HTTP響應(yīng)頭。有一些快捷的方法用來(lái)改變某些常用的響應(yīng)頭,但有時(shí)也需要直接調(diào)用此方法。
    編譯條件
    需要從http://java.sun.com/products/servlet/ 獲得一份JSDK的拷貝,并把servlet.jar移動(dòng)到JDK安裝目錄下的\jre\lib\ext目錄下。如果是JDK1.1,則移動(dòng)到\lib下,并在CLASSPATH中加入servlet.jar的絕對(duì)路徑。
    運(yùn)行條件
    需要Apache Jserv,Jrun Servlet Exec,Java Web Server,Weblogic,WebSphere,Tomcat,Resin等servlet服務(wù)器端程序。
    簡(jiǎn)單范例

    				
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class HelloWorld extends HttpServlet {
    ? ?public void doGet(HttpServletRequest request, HttpServletResponse response)? ? throws IOException, ServletException?
    ? {? ? ?
    ? response.setContentType("text/html");? ? ?
    ? ?PrintWriter out = response.getWriter();
    ? ? ? ?out.println("<html>");? ? ?
    ? ?out.println("<body>");? ? ? ?
    out.println("<head>");? ? ? ?
    out.println("<title>Hello World!</title>");? ?
    ? ? out.println("</head>");? ?
    ? ? ?out.println("<body>");? ?
    ? ? out.println("<h1>Hello World!</h1>");?
    ? ? ? out.println("</body>");? ?
    ? ? ?out.println("</html>");? ? }}


    servlet的性能和效率
    一個(gè)servlet僅被初始化一次而執(zhí)行多次,因此極小的低效性也會(huì)隨著時(shí)間的增加而產(chǎn)生很很大的影響。在代碼中需要考慮String對(duì)象的使用,如果產(chǎn)生HTML響應(yīng)需要用到很多字符串時(shí),不應(yīng)該為每一個(gè)字符串生成一個(gè)String對(duì)象,因?yàn)檫@會(huì)產(chǎn)生大量的String和StringBuffer對(duì)象,造成大量的對(duì)象構(gòu)造消耗和垃圾收集負(fù)擔(dān),解決的辦法是一行一行的把所有需要寫(xiě)入的直接寫(xiě)入PrintWriter中,或者創(chuàng)建一個(gè)StringBuffer對(duì)象,并使用append()方法將文本加入。
    及時(shí)回送
    有時(shí),程序需要花費(fèi)很長(zhǎng)時(shí)間執(zhí)行,在這種情況下應(yīng)該回送給客戶端一些信息,而不是長(zhǎng)時(shí)間顯示白屏,這可以在執(zhí)行到一定程度就回送一些東西,可以使用PrintWriter的flush()方法強(qiáng)制將現(xiàn)有的內(nèi)容回送給瀏覽器。

    Servlet會(huì)話
    由于Web服務(wù)器使用的協(xié)議HTTP是一種無(wú)狀態(tài)的協(xié)議,因此要維護(hù)單個(gè)客戶機(jī)一系列請(qǐng)求的當(dāng)前狀態(tài)就需要使用其它的附加手段,在以前,一般的方法是使用:
    l 隱藏的表格字段:在瀏覽器中,這種類型的字段是不可見(jiàn)的,然而,它在請(qǐng)求中被傳送,服務(wù)器端程序可以讀取它的值。它的優(yōu)點(diǎn)是實(shí)現(xiàn)容易,且大多瀏覽器都支持;缺點(diǎn)是字段必須按照特定的順序建立,客戶端可以通過(guò)查看源代碼得到其值,在瀏覽器中單擊“后退”按鈕會(huì)丟失加到當(dāng)前頁(yè)中的附加字段,同時(shí)也限制了用戶動(dòng)態(tài)的生成文檔。
    l Cookie:是一些關(guān)鍵的數(shù)據(jù)片斷,由服務(wù)器建立并由客戶機(jī)的瀏覽器存放。瀏覽器維護(hù)一個(gè)它自己的Cookie表,這使得它可以作為一種會(huì)話跟蹤的解決方案。使用Cookie的好處是它比在URL或表單中儲(chǔ)存數(shù)據(jù)更直觀。它的缺點(diǎn)是它可以用于在比一次短會(huì)話更長(zhǎng)時(shí)間內(nèi)跟蹤用戶,甚至可以用來(lái)跟蹤某個(gè)用戶向站點(diǎn)發(fā)送的每一個(gè)請(qǐng)求,因此有人擔(dān)心自己的隱私問(wèn)題而關(guān)閉了Cookie,一些老的瀏覽器也不支持cookie。Servlet API提供一個(gè)Cookie類支持cookie,使用HttpServletResponse.addCookie()和HttpServletResponse.getCookies()方法添加和讀取cookie。
    l URL重寫(xiě):修改請(qǐng)求的url,使之包含會(huì)話ID。這種方法的缺點(diǎn)是:對(duì)于大量的數(shù)據(jù),URL會(huì)變得很長(zhǎng)而失去控制;在某些環(huán)境下,URL的字符串長(zhǎng)度有一定的限制;數(shù)據(jù)保密問(wèn)題,你可能不想讓旁邊的人或者可以使用同一個(gè)計(jì)算機(jī)的看到你的會(huì)話數(shù)據(jù)。Servlet提供HttpServletRequest類可以獲得參數(shù)。
    Servlet API有自己內(nèi)置的會(huì)話跟蹤支持,使用HttpSession對(duì)象既可。它的setAttribute()方法綁定一對(duì)名字/值數(shù)據(jù),把它存到當(dāng)前會(huì)話中,如果會(huì)話中已經(jīng)存在該名字責(zé)替換它,語(yǔ)法為:public void setAttribute(String name,Object value)。getAttribute()方法讀取存儲(chǔ)在會(huì)話中的對(duì)象,語(yǔ)法為:public Object getAttribute(String name)。getAttributeNames()方法返回存儲(chǔ)在會(huì)話中的所有名字,語(yǔ)法為:public String[] getAttributeNames()。最后一個(gè)方法是removeAttribute()方法,它從會(huì)話中刪除指定的信息,語(yǔ)法為:public void removeAttribute(String name)。HttpSession對(duì)象可以使用HttpServletRequest對(duì)象request的getSession(true)方法獲得。參數(shù)為true意味著如果不存在該對(duì)象則創(chuàng)建一個(gè)。


    以上是關(guān)于Servlet的一些概念,在Tomcat的安裝文件中有servlet的例子,也可以能運(yùn)行,但是自己想配置一個(gè)servlet的例子海沒(méi)有成功。 所以下次想找一篇關(guān)于如何配置的servlet的例子。當(dāng)然是在Eclipse+tomcat+JDk1.4下。完工·
    posted @ 2006-06-30 14:32 趙守広 閱讀(563) | 評(píng)論 (0)編輯 收藏

    2006年6月23日 #

    ???今后一段時(shí)間,主要是想研究一下JavaWebFrameWork的技術(shù)。其中主要是研究:MVC模型,Struts,WebWork等框架。在本文的最后列出技術(shù)部列出的技術(shù)點(diǎn)。 做為學(xué)習(xí)這些知識(shí)的前提,首先是學(xué)習(xí)JSP和Servlet技術(shù)。


    一.什么是JSP?

    ???? Jsp頁(yè)面是由HTML代碼和嵌入其中的JAVA代碼所組成。服務(wù)器在頁(yè)面被客戶端請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。 Java Servlet是JSP技術(shù)的基礎(chǔ),而且大型的Web應(yīng)用程序的開(kāi)發(fā)需要Java Sevrlet和Jsp的配合才能完成。 Jsp具備了Java技術(shù)的簡(jiǎn)單易用和完全面向?qū)ο蟆⒕哂衅脚_(tái)無(wú)關(guān)性且安全可靠、主要面向Internet的所有特點(diǎn)。
    ?
    ?? Jsp技術(shù)的強(qiáng)項(xiàng):
    ???1.一次編寫(xiě),到處運(yùn)行。在這一點(diǎn)上Java比Php更出色,除了系統(tǒng)之外,代碼不用做任何改動(dòng)。
    ???2.系統(tǒng)的多平臺(tái)支持。
    ?? 3.強(qiáng)大的可收縮性。從只有一個(gè)小的Jar文件就可以運(yùn)行Servlet/jsp,到多臺(tái)服務(wù)器進(jìn)行集群和負(fù)載均衡,到多臺(tái)Application進(jìn)行事物處理、消息處理,一臺(tái)服務(wù)器到多臺(tái)服務(wù)器,Java顯示了一個(gè)巨大的生命力。
    ?? 4.多樣化和功能強(qiáng)大的開(kāi)發(fā)工具支持。比較優(yōu)秀的商業(yè)軟件如:JBuilder(當(dāng)然可以搞到破解版的),優(yōu)秀的開(kāi)源軟件Eclipse(我們公司很多項(xiàng)目都是用的是Eclipse)。

    ? JSp技術(shù)的弱項(xiàng):
    ? 1.與ASP一樣,java的一些優(yōu)勢(shì)正是它的致命的問(wèn)題所在。正是由于跨平臺(tái)的功能,為了極度的收縮能力,所以極大的增加了產(chǎn)品的復(fù)雜性。
    ? 2.Java的運(yùn)行速度是用class長(zhǎng)駐內(nèi)存來(lái)完成的,所以它在一些情況下所是用的內(nèi)存比起用戶數(shù)量來(lái)說(shuō)確實(shí)是“最低性能價(jià)格比”了。從另一方面來(lái)說(shuō),它還需要硬盤(pán)空間來(lái)存儲(chǔ)一系列的.java文件和.calss文件,以及對(duì)應(yīng)的版本文件。

    二. 為什么是用JSP?
    ?
    ? ?JSP技術(shù)是由Servlet技術(shù)發(fā)展起來(lái)的,自從有了JSp后,在Java服務(wù)器端編程中普遍采用的就是JSp,而不是Servlet。因?yàn)镴SP在編寫(xiě)表示頁(yè)面時(shí)遠(yuǎn)遠(yuǎn)比servlet簡(jiǎn)單,而且不需要手工編譯(由servlet容器自動(dòng)編譯),目前Servlet主要是做試圖控制器,處理后臺(tái)應(yīng)用等。由于jsp構(gòu)建在Servlet上,所以它有servlet所有的強(qiáng)大功能。


    以上。敬請(qǐng)關(guān)注下一篇文章--JavaWebFrameWork研究系列-Servlet。 謝謝!? :)



    附錄:

    JavaWebFrameWork研究對(duì)象

    4.1 技術(shù)點(diǎn)
    4.1.1 表現(xiàn)層分離
    MVC
    Action Map
    模仿桌面系統(tǒng)(控件事件驅(qū)動(dòng)模式)
    視圖模版方式
    ADO數(shù)據(jù)綁定
    4.1.2 數(shù)據(jù)訪問(wèn)層等于Web層間關(guān)系
    4.1.3 數(shù)據(jù)校驗(yàn)
    4.2 技術(shù)構(gòu)建
    4.2.1 .NET
    ASP.NET
    4.2.2 Java
    struts
    websphere
    weblogic
    webwork
    JSF
    一些構(gòu)建流行的組合如:struts + spring + hiberanet

    posted @ 2006-06-23 14:46 趙守広 閱讀(268) | 評(píng)論 (0)編輯 收藏

    我的Blog申請(qǐng)成功。 自己頂一個(gè)!!
    posted @ 2006-06-23 13:56 趙守広 閱讀(301) | 評(píng)論 (1)編輯 收藏

    僅列出標(biāo)題  
    主站蜘蛛池模板: 亚洲成人免费在线| 精品国产成人亚洲午夜福利| **aaaaa毛片免费| 亚洲日日做天天做日日谢| 亚洲国产成人久久综合区| 久草福利资源网站免费| 亚洲色大成网站www| 亚洲中文字幕在线第六区| 亚洲高清中文字幕免费| 免费一级做a爰片久久毛片潮| 香蕉视频在线观看亚洲| 免费看的黄色大片| baoyu116.永久免费视频| 亚洲无吗在线视频| 精品亚洲一区二区| 天堂在线免费观看中文版| 日韩免费高清播放器| 亚洲自偷自偷在线成人网站传媒| 在线观看亚洲天天一三视| 国产成人免费高清激情视频| 97国免费在线视频| 久久精品国产亚洲AV电影网| 婷婷精品国产亚洲AV麻豆不片| 免费大香伊蕉在人线国产 | 亚洲片国产一区一级在线观看| 精品无码人妻一区二区免费蜜桃| 国产精品成人亚洲| 亚洲国产区男人本色在线观看| 亚洲成AV人片天堂网无码| 亚洲福利中文字幕在线网址| 免费精品国产日韩热久久| 国产做国产爱免费视频| 国产成人久久精品亚洲小说| 亚洲午夜精品国产电影在线观看| 亚洲午夜久久久影院伊人 | 亚洲一级片在线观看| 国产亚洲精品a在线无码| www.亚洲一区| 男女交性永久免费视频播放 | 亚洲愉拍99热成人精品热久久| 成人永久免费福利视频网站|