Ⅰ java Servlet實例什麼時候唄創建
如果你設置<load-on-startup>的值是一個大於0的數,則tomcat在啟動時就會創建servlet,如果沒有設置這個屬性,則是第一次訪問時創建
Ⅱ javaweb開發中有servlet,model,po,vo,,impl的屬於什麼框架
servlet:一般作控制器
model:資料庫實體對象
PO(persistant object) 持久對象
在o/r
映射的時候出現的概念,如果沒有o/r映射,就沒有這個概念存在了.通常對應數據模型(資料庫),本身還有部分業務邏輯的處理.可以看成是與資料庫中的表
相映射的java對象.最簡單的PO就是對應資料庫中某個表中的一條記錄,多個記錄可以用PO的集合.PO中應該不包含任何對資料庫的操作.
VO(value object) 值對象
通常用於業務層之間的數據傳遞,和PO一樣也是僅僅包含數據而已.但應是抽象出的業務對象,可以和表對應,也可以不,這根據業務的需要.個人覺得同DTO(數據傳輸對象),在web上傳遞.
BO(business object) 業務對象
從業務模型的角度看,見UML元件領域模型中的領域對象.封裝業務邏輯的java對象,通過調用DAO方法,結合PO,VO進行業務操作.
POJO(plain ordinary java object)
簡單無規則java對象
純 的傳統意義的java對象.就是說在一些Object/Relation
Mapping工具中,能夠做到維護資料庫表記錄的persisent object完全是一個符合Java
Bean規范的純Java對象,沒有增加別的屬性和方法.我的理解就是最基本的Java
Bean,只有屬性欄位及setter和getter方法!.
DAO(data access object)
數據訪問對象
是sun的一個標准j2ee設計模式,這個模式中有個介面就是DAO,它負責持久層的操作.為業務層提供介面.此對象用於訪問資料庫.通常和PO結合使
用,DAO中包含了各種資料庫的操作方法.通過它的方法,結合PO對資料庫進行相關的操作.夾在業務邏輯與資料庫資源中間.配合VO,
提供資料庫的CRUD操作...
DTO (Data Transfer
Object)數據傳輸對象
主要用於遠程調用等需要大量傳輸對象的地方。
比如我們一張表有100個欄位,那麼對應的PO就有100個屬性。
但是我們界面上只要顯示10個欄位,
客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,
這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以後,如果用這個對象來對應界面顯示,那此時它的身份就轉為VO
impl:介面的實現類
Ⅲ Java中的Servlet的定義,Servlet的具體用途
Servlet是一個實現了Servlet介面的類,一個與訪問協議和平台無關的、運行在Servlet容器中的Java程序。
針對Servlet實現技術,SUN公司提供了一套標準的Java Servlet API以便於更快速、規范地開發Servlet程序。這套Servlet API中,最重要的兩個軟體包是:javax.servlet、javax.servlet.http。
javax.servlet是一個與通信協議無關的通用軟體包;javax.servlet.http是一個支持HTTP訪問協議的軟體包,這兩個軟體包的同時存在,使得Servlet API能支持任何協議的請求/響應。
在javax.servle中,包含著一套常用介面,負責承擔指定的任務。下表中列出了常用的類和介面:
javax.servlet軟體包:
javax.servlet包中定義了與通信協議無關的介面和類。
常用介面:
RequestDispatcher、Servlet、ServletConfig、ServletContext、ServletRequest、ServletResponse。
常用類:
GenericServlet、ServletInputStream、ServletOutputStream。
1、RequestDispatcher介面
public interface RequestDispatcher;
資源調度器介面,用於定義一個在伺服器內部直接實現資源轉發的對象。
RequestDispatcher對象由Servlet容器創建,用於封裝並調度由一個特定的URL定義的伺服器資源。
(1)請求傳遞方法
public void forward(ServletRequest request,
ServletReponse response) throws ServletException,IOException
從一個Servlet向伺服器上的另一個資源傳遞請求。
將請求轉發給其他資源時,將由被調用的資源負責對請求作出響應,而原先Servlet的執行則終止。
public void include(ServletRequest request,
ServletResponse response) throws ServletException,IOException
從一個Servlet向伺服器上的另一個資源傳遞請求。
將請求轉發給其他資源時,被調用的Servlet對該請求作出的響應將並入原先的響應對象中,原先的Servlet還可以繼續輸出響應消息。
2、Servlet介面
public interface Servlet;
開發一個Servlet需要實現的基礎介面。
介面中定義了5個方法:
init():Servlet初始化方法,通過init()方法可以獲得容器創建的ServletConfig對象
service():請求處理方法
destroy():Servlet實例銷毀方法
getServletConfig():獲取ServletConfig配置對象方法
getServletInfo():獲取Servlet相關信息方法
(1)初始化方法
public void init(ServletConfig config) throws ServletException
Servlet容器會在Servlet實例化之後,調用init方法對Servlet對象進行初始化,該方法由Servlet容器順序調用,無需Servlet自身考慮何時執行。
(2)服務方法
public void service(ServletRequest request,
ServletResponse response) throws ServletException,IOException
當Servlet容器接收到客戶請求時,調用service方法響應客戶請求,service方法在Servlet實例化、初始化之後被調用,並且可以被多次調用。
(3)銷毀方法
public void destroy()
當Servlet實例從伺服器中移除或服務停止時,Servlet容器調用destroy方法銷毀Servlet實例。
(4)獲取Servlet配置對象方法
public ServletConfig getServletConfig()
獲取一個由Servlet容器創建的ServletConfig配置對象,這個對象常常用在Servlet初始化方法中,將初始化參數封裝在ServletConfig對象中,然後傳遞給Servlet。
(5)獲取Servlet相關信息方法
public String getServletInfo()
獲取關於Servlet的一些相關信息,返回的字元串是純文本格式而不帶有任何標記(例如:HTML、XML等)。
3、ServletConfig介面
public interface ServletConfig;
Servlet配置信息介面,在Servlet初始化時,Servlet容器將Servlet初始化參數封裝在ServletConfig對象中,並傳遞給Servlet,一個Servlet實例只有一個ServletConfig對象。
介面中,只定義了4個方法:
getInitParameter():獲取Servlet指定初始化參數的值
getInitParameterNames():獲取Servlet所有初始化參數名稱
getServletContext():獲取Servlet容器為WEB應用創建的Servlet上下文環境對象ServletContext
getServletName():獲取Servlet名稱
(1)獲取初始化參數方法
public String getInitParameter(String name)
根據初始化參數名稱,獲取Servlet指定初始化參數的值,如果指定的參數不存在,返回空值null。
public Enumeration getInitParameterNames()
獲取Servlet所有初始化參數名稱,如果Servlet沒有初始化參數,返回一個空列表。
(2)獲取Servlet上下文環境方法
public ServletContext getServletContext()
獲取Servlet容器為WEB應用創建的Servlet上下文環境對象ServletContext,WEB伺服器啟動的時候,在載入WEB應用時,為每個載入的WEB應用創建一個代表WEB應用Servlet上下文環境對象。
(3)獲取Servlet名稱方法
public String getServletName()
獲取正在訪問的這個Servlet的名稱。
以上就是Servlet相關問題的解答,更多關於Java Web方面的問題可以看下這個詳細的視頻教程網頁鏈接,希望我的回答能幫到你。
Ⅳ Java Servlet 的核心工作機制
Servlet是運行在Servlet容器中的,由Servlet容器來負責Servlet實例的查找、創建以及整個生命周期的管理,Servlet整個生命周期可以分為四個階段:類裝載及實例創建階段、實例初始化階段、服務階段以及實例銷毀階段。
類裝載及實例創建階段
默認情況下,Servlet實例是在接受到第一個請求時進行創建並且以後的請求進行復用,如果有Servlet實例需要進行一些復雜的操作,需要在初始化時就完成,比如打開文件、初始化網路連接等,可以配置在伺服器啟動時就創建實例,具體配置方法為在聲明servlet標簽中添加<load-on-startup>1</load-on-startup>標簽。
初始化 init(ServletConfig config)
一旦Servlet實例被創建,將會調用Servlet的inint方法,同時傳入ServletConfig實例,傳入Servlet的相關配置信息,init方法在整個Servlet生命周期中只會調用一次。
服務 services()
為了提高效率,Servlet規范要求一個Servlet實例必須能夠同時服務於多個客戶端請求,即service()方法運行在多線程的環境下,Servlet開發者必須保證該方法的線程安全性。
銷毀 destory()
當Servlet容器將決定結束某個Servlet時,將會調用destory()方法,在destory方法中進行資源釋放,一旦destory方法被調用,Servlet容器將不會再發送任何請求給這個實例,若Servlet容器需再次使用該Servlet,需重新再實例化該Servlet實例。
二、Servlet執行流程
web伺服器接受到一個http請求後,web伺服器會將請求移交給servlet容器,servlet容器首先對所請求的URL進行解析並根據web.xml 配置文件找到相應的處理servlet,同時將request、response對象傳遞給它,servlet通過request對象可知道客戶端的請求者、請求信息以及其他的信息等,servlet在處理完請求後會把所有需要返回的信息放入response對象中並返回到客戶端,servlet一旦處理完請求,servlet容器就會刷新response對象,並把控制權重新返回給web伺服器。
三、與其它技術的比較
與其它服務相比servlet有以下的一些優點:
1、運行速度上比CGI快,因為使用了多線程
2、servlet使用了標準的api,可被許多web服務支持
3、與系統無關性,一次編譯多次使用
轉自http://www.javaeye.com/topic/952866
Ⅳ java servlet接收參數如何轉變成對象
有多種方法,簡單的是用javabean,還有一種是ObjectOutputStream。
Ⅵ 什麼是servlet
1.什麼是SERVLET?
Servlet是用Java編寫的伺服器端程序, 其主要功能在於互動式地瀏覽和修改數據,生成動態Web內容.
狹義的Servlet是指Java語言實現的一個介面,廣義的Servlet是指任何實現了這個Servlet介面的類,一般情況下,我們一般將Servlet理解為後者。
這段話可能聽起來有些繞, 但如果大家把Servlet與Spring MVC 的前端控制器 DispatcherServlet
結合起來理解, 應該立馬就知道它是做什麼的了. Servlet 是Java JDK提供的一個介面, 所有的Servlet都繼承於它,
而DispatcherServlet是一個繼承了實現了Servlet介面的類的類.
2.知識剖析
Servlet 的生命周期
Servlet 的生命周期分為三個階段, 分別對應Servlet中的三個介面.
init() 初始化.
service() 處理客戶端的請求, 具體業務邏輯. ServletRequest 對象用於獲得客戶端信息,ServletResponse 對象用於向客戶端返回信息(客戶端可以理解為瀏覽器)
destroy() 結束時調用. 這個方法只有在servlet的service方法內的所有線程都退出的時候,或在超時的時候才會被調用。
init() 和 destroy() 都只會在Servlet創建和銷毀時調用一次, 而service() 則會在響應不同請求時多次調用.
注意Servlet是一個介面,實現了servlet的類,是不能直接處理請求的.
請求需要通過Servlet容器來發送到Servlet, Servlet是運行在Servlet容器中的.
Servlet容器是Web伺服器和servlet進行交互的必不可少的組件。常見Web伺服器有Tomcat, jetty, resin, 它們也可以稱為應用伺服器
3.常見問題
1. Servlet 如何接收才能接收到Servlet容器發來的請求?
2. Servlet 什麼時候被初始化?
3. DispatcherServlet 如何處理容器發來的請求?
4.解決方案
1. Servlet 容器通過監聽埠(8080)來接收用戶發送的請求, 然後通過web.xml中的 Servlet-mapping 配置, 來匹配到請求Heades中的url信息, 將其轉發到對應Servlet配置中的Servlet實現類完成請求接收.
2. Servlet 的初始化是由Web.xml 中的 loadOnStartup 配置控制的.
當 loadOnStartup < 0 或者不寫時, 接收到第一次請求的時候實例化.
當 loadOnStartup > 0 web容器啟動的時候做實例化處理,順序是由小到大,正整數小的先被實例化
當 loadOnStartup = 0 web容器啟動的時候做實例化處理,相當於是最大整數,因此web容器啟動時,最後被實例化
3. 通過DispatcherServlet 的執行流程來看它時如何處理請求的
希望對您有所幫助!~
Ⅶ JavaWeb開發中Servlet是那一層以及用法
JavaWeb開發中Servlet是屬於控制層最底端的部分的 ,也就是MVC c的最底層。
他往往用來處理請求的。他的外一層就是View、他的一層就是Service(Servlet往往調用他做邏輯判斷的操作)
原始的Servlet的生命周期
servlet在第一次訪問的時候就會被初始化
servlet對象一旦被創建就會駐留在內存中,當伺服器關閉或者web應用被移除的時候servlet對象才銷毀
1:當servlet被創建的時候那麼 servlet就會被初始化 調用init方法
2:任何請求來自客戶端,service方法就會被自動調用
3:當servlet從伺服器被移除的時候 distroy方法將會被調用
如下是一個原始的Servlet代碼(這並不是現在開發一貫的做法,請往下看)
importjavax.servlet.*;
classFirstServlet
extendsGenericServlet{
publicvoid
service(ServletRequestrequest,ServletResponseresponse)
throwsServletException,java.io.IOException
{
response.getWriter().write("hello
servlet");
}
}
ServletConfig
getServletConfig 方法 用來獲得servlet的啟動信息,和getServletInfo方法 可以活的servlet的基本信息,和關於它自己的一些信息,例如作者,版本,版權等
為Servlet設置初始參數要在web.xml中配置(只對當前servlet有效)
如下是在Web.xml中為當前servlet配置初始化參數的。
<servlet>
<servlet-name>ServletConfigDemo</servlet-name>
<servlet-class>
cn.itcast.servlet.ServletConfigDemo</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>encoding2</param-name>
<param-value>utf-9</param-value>
</init-param>
</servlet>
ServletCofig對象可以通過this.getServletConfig來獲得,因為在父類中已經在獲得了ServletConfig對象;也可以servletconfig對象可以通過父類的init方法內穿過來的config對象獲取
publicvoidinit(ServletConfigconfig)throwsServletException{this.config=
config;this.init();}()
{returnconfig;}
ServletContext
通常我們稱ServletContext叫Application對象 。也叫域對象
Servlet引擎為每個WEB應用程序都創建一個對應的ServletContext對象,ServletContext對象被包含在ServletConfig對象中,調用ServletConfig.getServletContext方法可以返回
通常獲得ServletContext的方法是直接getservletcontext
因為在父類中已經定義了這樣的方法,子類直接繼承使用
ServletContext對象的引用。getServletContext().getInitParameter("a")
的方式獲得web應用的初始化參數
我們還可以為整個web應用配置初始化參數
Request & Response
基本servlet 中service的方法的request 和 response 對象分別是
RequestFacade 和 ResponseFacade 這個類是Tomcat中的類
他繼承自HttpServletRequest而 HttpServletRequest 又繼承 ServletRequest(Response同理)
一些常用方法:
request.getRequestURL();獲得URl
request.getHeader("accept-encoding"); 獲得支持的壓縮格式
request.getHeader("referer");獲得來自哪裡(防盜鏈)
request.getInputStream(); 獲得消息體
request.getParameter("name") 獲得參數
如下是現代開發中常用的Servlet
publicclass
{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException
{
}
publicvoid
doPost(HttpServletRequestrequest,HttpServletResponse
response)
throws
ServletException,IOException{
doGet(request,
response);
}
}