java web 基於servlet及MVC的學習小結

1.介紹jsp:

雖然在形式上JSPASPPHP看上去很相似——都可以被內嵌在HTML代碼中。但是,它的執行方式和ASPPHP完全不同。在JSP被執行的時候,JSP文件被JSP解釋器(JSP Parser)轉換成Servlet代碼,然後Servlet代碼被Java編譯器編譯成 .class 字節文件,這樣就由生成的Servlet來對客戶端應答。所以,JSP可以看做是Servlet的腳本語言(Script Language)版。
       由於JSP/Servlet都是基於Java的,所以它們也有Java語言的最大優點——平臺無關性,也就是所謂的一次編寫,隨處運行(WORA Write Once, Run Anywhere。除了這個優點,JSP/Servlet的效率以及安全性也是相當驚人的。因此,JSP/Servlet雖然在國內目前的應用並不廣泛,但是其前途不可限量。 

2.JSPASP.NET相比較:

a.相對C#,JSP的腳本語言JAVA也是面向對象的、分佈式的、解釋的語言。

b.與C#相似JAVA同樣去掉了難以理解的指針等概念,取而代之的是類和對象。

C.  JSP有一項全新的技術――Servlet(服務器端程序)很好的節約了服務器資源。

dJAVABeans是針對ASP.NETServer Control的技術。只要會JAVA JavaBeans         很容易寫出。

e.再有就是JAVAJDBC數據庫連接技術。

fJSPXML同樣有十分廣泛的支持。

G. Java與平臺無關,asp.net依賴微軟的操作系統

H jsp主要應用於中大型網站建設,安全且高效;

3.servlet實例的三個版本不足之處:

a)         大量重複代碼,比如,數據庫的連接與關閉代碼,數據庫的url及用戶名密碼暴露在servlet中,違背項目的安全性;代碼不按功能進行劃分,命名不合理;

b)        針對一個表的操作需要若干個servlet類來爲之服務,如果數據庫表多,會使web.xml的內容過長,管理混亂;

c)         頁面與邏輯處理沒有很好的解耦;

4.MVC概念:

   Model:業務邏輯,則各種業務處理類實現;

   View:客戶端顯示,通常由jsp來負責(例子是由html充當)

   Controller:控制器,通常由servlet充當;

5.MVC的處理流程:

首選,是控制器接收到客戶的請求,並由決定調用哪個模型來進行處理,然後模型用業務邏輯來處理用戶的請求並返回數據,最後控制器調用相應的視圖格式化模型層返回的數據,並通過視圖展示給用戶;

 

附:初學者常會突略的問題:

1.         字符串判斷語句:

javaString變量不是一個簡單的變量而是一個類實例,不同的方法會得到不同的結果:

a.

String str1="我是傻瓜";

String str2="我是傻瓜"; (or String str2="我是"+"傻瓜"; )

if (str1==str2)

out.print("yes");

else

out.print("no");

結果是"yes"

大概是編譯優化,str1,str2指向同一個類實例;

 

b.

String str1,str2,str3;

str1="我是傻瓜";

str2="我是";

str3=str2+"傻瓜";

if (str1==str3)

out.print("yes");

else

out.print("no");

結果是"no"

 

String str1=new String("我是傻瓜");

String str2=new String("我是傻瓜");

if (str1==str2)

out.print("yes");

else

out.print("no");

結果是"no"

 

String str1=new String("我是傻瓜");

String str2=new String("我是傻瓜");

if (str1. equals (str2))

out.print("yes");

else

out.print("no");

結果是"yes"。比較字符串是否一致,要用:str1.equals(str2)str1.compareTo(str2);

2.         web.xml中有兩種配置error-page

Eg.

<error-page>

        <error-code>500</error-code>

        <location>/error.jsp</location>

  </error-page>

上面配置了當系統發生 500 錯誤(即服務器內部錯誤)時,跳轉到錯誤處理頁面 error.jsp

Eg.

<error-page>

        <exception-type>java.lang.NullException</exception-type>

        <location>/error.jsp</location>

   </error-page>

 

上面配置了當系統發生 java.lang.NullException (即空指針異常)時,跳轉到錯誤處理頁面 error.jsp;

3.         更改類的時候要記得重新啓動服務器:

比如,我們寫了一個類login.class(編譯後的文件),部署後才發現有bug,之後我們修復重新生成login.class,然後我們將其替換掉原來發布在服務器的class文件,不要以爲這樣就行,要記得重啓服務器。因爲,可能這個class已經加載到服務器內存,每次調用該類的時候,如果容器在內存中找到,就不會去編譯剛複製進來的類了。(自己的理解)

4.         Web.xml的配置問題:

<welcome-file-list> 

     <welcome-file>index.jsp</welcome-file>

</welcome-file-list>

這個節點主要是配置站點的首頁顯示的,當我們創建一個網站時它就默認將其設成index.jsp。當然,我們要根據我們的需要來修改這個值,比如,我們相將其設成index.do(這裏是關於servlet的映射地址),很多人會將其設成/index.do這是不對的,我們不能像設置servlet的映射地址一樣加個“/”。

  <servlet-mapping>

    <servlet-name>ControlServlet</servlet-name>

    <url-pattern>/control.do</url-pattern>

  </servlet-mapping>

這個跟上面就不一樣,這裏url-parttern裏的節點值記得在前面加個“/

5.         中文亂碼問題:

a. response.setContentType("text/html;charset=GBK");

b. request.setCharacterEncoding("GBK");

c. response.setCharacterEncoding("GBK");

是設置servlet的輸出文本類型,上面例子,是指html文本,編碼爲中文的GBK

b  是設置request的流編碼,servlet每當收到請求時,request對象封裝了各種傳過來的頁面對象,如果不設其編碼,當我們取值的時候,如果參數包含中文就可能出現亂碼;

c  是設置response的流編碼,servlet處理完請求一般會向客戶端返回響應,這時response對象就封裝各種字符串對象,如果這時不設中文編碼gbk的話,當客戶端解釋的時候也有可能能出現中文亂碼;

6.         最常見的異常:NullPointException

這個問題,是所有面象對象程序設計都應該注意的問題,當然在java中也是特別常見的,我們在寫調用對象的方法或者屬性的時候,要考慮這個對象會不會是空的,比如:

String action = request.getParameter("action");

       if(action == null || action == ""){

           //dosomething

    }     

如果我們直接,if(action == "")就有可能報空指針異常了。

7.         執行servlet時,發生下載提示:

(1).可能性一:text/html;charset=GBK中間分號寫成逗號.

(2).可能性二:XML中配置信息出錯.

(3).可能性三:如定義全局變量時,:CONTENT_TYPED在以後所用中放在雙引號之中.

(4).可能性四:當上面的text/html,charset中寫錯字符的時候,也會提示下載.

8.         執行servlet時,發生404錯誤:

(1).多爲xml中配置出錯.

(2).可能在servlet通信方法中url出錯.

(3).表單提交時:action路徑.

(4).比較弱智的錯誤就是標記寫錯,請仔細檢查.

 

9.         關於所附的幾個實例的使用方法:

先將demos解壓,放在硬盤的任何位置(前提是你能比較容易找到他們-_-

打開我們的Escplise,然後在“package    explorer”框裏右擊,選擇“import”:如圖,

 

10.     參考例子,見附件:http://download.csdn.net/detail/keyingbo2008/4313979

發佈了24 篇原創文章 · 獲贊 9 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章