servlet一些小問題

2021-08-10 12:01:36 字數 1663 閱讀 2818

httpservlet繼承了genericservlet,而genericservlet(抽象類,該抽象類中只有乙個抽象方法,那就是service()方法,其他的方法都是非抽象的)實現了servlet,servletconfig,serializable介面。servlet介面中有有五個抽象方法,分別是init(),gerservletconfig(),service(),getservletinfo(),destroy(),httpservlet繼承了genericservlet,並且只重寫了它的service()方法,其他的方法都沒有重寫,httpservlet中又自己增加了一些方法,例如dopost(),doget()等方法。httpservlet中的service()方法主要是用來處理客戶端的請求,如果客戶端請求的引數是get,則在service()中呼叫doget方法,如果是post,則在service中呼叫dopost方法,service起到了乙個分發請求的作用。一般情況下,我們在編寫servlet時只需要繼承httpservlet,重寫doget,dopost方法即可。不用重寫service方法,因為這時service方法中會根據客戶端的請求自動判斷是get請求還是post請求,然後呼叫對應的方法。

在**管理系統的設計中,為了提高**的簡潔性,要設計乙個baseservlet用來作為其他servlet的父類,使每乙個模組只需要乙個servlet就能滿足所有的需求,例如使用者模組原本要使用loginservlet,logoutservlet,registerservlet等等,現在只需要 設計乙個userservlet即可,userservlet繼承了baseservlet,在userservlet中只用建立login(),logout(),register()方法等,進行相應需求的開發即可。在頁面訪問請求的時候,將需要呼叫業務對應的方法作為method引數的值一併傳遞即可,例如http://localhost:8080/store_v2.0/userservlet?method=register

。但是如上面所說,一般情況下,我們編寫的servlet繼承自httpservlet,不需要重寫service方法,因為我們的method請求引數不是get,就是post,httpservlet中的service已經為我們判斷了這兩個引數。但是現在我們在這個作業中編寫的userservlet裡面已經不止有get,post請求了,還有其他的請求,例如login,logout,register等等,這時如果還是繼承httpservlet,那麼就無法呼叫login,logout等請求了。所以需要設計乙個baseservlet來滿足請求。baseservlet繼承httpservlet,重寫service方法,在重寫的service方法中,進行不同請求的處理。而其他的模組對應的servlet繼承baseservlet即可,但是這又引發了乙個新的問題出現了,在整個系統中,有很多模組,使用者模組,商品模組等等。使用者模組有login,logout,register需求,商品模組有selectone,selectall,selectbyid等需求,不可能把所有的需求都放到baseservlet中的service方法中,(雖然把這些方法全放到service中,呼叫起來很容易理解),所以為了方便,在baseservlet的service方法中使用反射機制,根據客戶端請求帶來的method的值進行不同的需求呼叫。下面是baseservlet的實現方案:

一些小問題

1 曼徹斯特編碼和差分曼徹斯特編碼。曼徹斯特編碼,常用於區域網傳輸。在曼徹斯特編碼中,每一位的中間有一跳變,位中間的跳變既作時鐘訊號,又作資料訊號 從高到低跳變表示 1 從低到高跳變表示 0 還有一種是差分曼徹斯特編碼,每位中間的跳變僅提供時鐘定時,而用每位開始時有無跳變表示 0 或 1 有跳變為 ...

一些小問題

問1 子類繼承了父類的所有成員,對嗎?答1 錯,至少子類沒有繼承父類的建構函式 析構函式不知有沒有繼承,但複製建構函式肯定是繼承了 class a a intx a const a a a operator const a a class b public a intmain view code 問...

一些小問題

最近使用win10出現了很多問題,簡單總結一二。第一,剛建登陸使用者時,使用者名稱搞成了中文的,於是乎eclipse中 總是報錯,想改名發現改不了,必須先將家庭版公升級為專業版才可以建立乙個admin許可權的賬戶登入,然後修改c users 張三中的張三為英文。第二,我的電腦不在桌面上,進去麻煩,要...