t
創(chuàng)新互聯(lián)專注于五家渠企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),成都做商城網(wǎng)站。五家渠網(wǎng)站建設(shè)公司,為五家渠等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
修改Web.xml文件
設(shè)置每15分鐘運(yùn)行的Servlet
servlet servlet-name='alarm' servlet-class='test.TestAlarm'
run-at:00, :15, :30, :45/run-at
/servlet
設(shè)置每天16:30和20:00運(yùn)行的Servlet
servlet servlet-name='alarm' servlet-class='test.TestAlarm'
run-at16:30,20:00/run-at
/servlet
容器只為每個(gè)servlet創(chuàng)建一個(gè)實(shí)例,這意味著servlet必須是線程安全的,即,能夠同時(shí)
處理多個(gè)請(qǐng)求,每個(gè)處理都通過servlet代碼作為單獨(dú)的線程來處理。
將servlet作為所有應(yīng)用程序請(qǐng)求的公共入口點(diǎn)時(shí),可以獲得對(duì)應(yīng)用程序頁面流的整體控制。
當(dāng)使用servlet作為控制器時(shí),必須處理下列基本要求:
所有請(qǐng)求處理都必須傳遞到單獨(dú)的控制器servlet中。
servlet必須能夠區(qū)分請(qǐng)求,以便進(jìn)行不同類型的處理。
可以使用現(xiàn)成的struts servlet。
struts servlet根據(jù)請(qǐng)求URI中的銷或一部分來斷定請(qǐng)求的類型,查找對(duì)應(yīng)的行為類(使用配制信息),并調(diào)用execute()方法。
execute()方法不顯示應(yīng)答,只關(guān)心商務(wù)邏輯。該方法返回一個(gè)strutsActionForward實(shí)例,其中包含應(yīng)答應(yīng)該調(diào)用以顯示應(yīng)答的JSP頁面的相關(guān)信息。該頁面由邏輯名稱進(jìn)行標(biāo)示,并影射到配置文件中的實(shí)際頁面邏輯上。因此可以通過重新配置,而不是改變代碼,從而至少在某種程度上控制頁面流。
使用servlet的最佳解決方案是定義servlet的映射規(guī)則:
而不是使用:/myapp/servlet開頭的調(diào)用,或是使用
form action=”/ora/servlet/controller/someAction”
以上方式的調(diào)用servlet將會(huì)導(dǎo)致安全問題和程序部署的問題。
servlet的service()方法與doGet()、doPost()方法區(qū)巖州別:
public void service(request,response) {
if request.getMethod().equals("POST") {
doPost(request,response);
}else if request.getMethod().equals("GET") {
doGet(request,response);
}
}
有用戶請(qǐng)求,對(duì)應(yīng)有g(shù)et/post才會(huì)調(diào)用doGet()/doPost(),service()有無請(qǐng)求都執(zhí)行或用在定時(shí)執(zhí)行。
Servlet是用Java編寫的Server端程序,它與協(xié)議和平臺(tái)無關(guān)。Servlet運(yùn)行于Java-enabled Web Server中。Java Servlet可以動(dòng)態(tài)地?cái)U(kuò)展Server的能力,并采用請(qǐng)求-響應(yīng)模式提供Web服務(wù)。
最早支持Servlet技術(shù)的是JavaSoft的Java Web Server。此后,一些其它的基于Java的Web Server開始支持標(biāo)準(zhǔn)的Servlet API。
一、Servlet的特點(diǎn)
Servlet是Java技術(shù)對(duì)CGI編程的回答。Servlet程序在服務(wù)器端運(yùn)行,動(dòng)態(tài)地生成Web頁面。與傳統(tǒng)的CGI和許多其他類似CGI的技術(shù)相比,Java Servlet具有更高的效率,更容易使用,功能更強(qiáng)大,具有更好的可移植性,更節(jié)省投資(更重要的是, Servlet程序員收入要比Perl程序員高虧棗伍:-)
高效
在傳統(tǒng)的CGI中,每個(gè)請(qǐng)求都要啟動(dòng)一個(gè)新的進(jìn)程,如果CGI程序本身的執(zhí)行時(shí)間較短,啟動(dòng)進(jìn)程所需要的開銷很可能反而超過實(shí)際執(zhí)行時(shí)間。而在Servlet中,每個(gè)請(qǐng)求由一個(gè)輕量級(jí)的Java線程處理(而不是重量級(jí)的操作系統(tǒng)進(jìn) 程)。在傳統(tǒng)CGI中,如果有N個(gè)并發(fā)的對(duì)同一CGI程序的請(qǐng)求,則該CGI程序的代碼在內(nèi)存中重復(fù)裝載了N次;而對(duì)于Servlet,處理請(qǐng)求的是N個(gè) 線程,只需要一份Servlet類代碼。在性能優(yōu)化方面,Servlet也比CGI有著更多的選擇,比如緩沖以前的計(jì)算結(jié)果,保持?jǐn)?shù)據(jù)庫連接的活動(dòng),等等。
方便
Servlet提供了大量的實(shí)用工具例程,例如自動(dòng)地解析和解碼HTML表單數(shù)據(jù)、讀取和設(shè)置HTTP頭、處理Cookie、跟蹤會(huì)話狀態(tài)等。
功能強(qiáng)大
在Servlet中,許多使用傳統(tǒng)CGI程序很難完成的任務(wù)都可以輕松地完成。例如,Servlet能夠直接和Web服務(wù)器交互,而普通的CGI程序不能。Servlet還能夠在各個(gè)程序之間共享數(shù)據(jù),使得數(shù)據(jù)庫連接池之類的功能很容易實(shí)現(xiàn)。
可移植性好
Servlet用Java編寫,Servlet API具有完善的標(biāo)準(zhǔn)。因此,為I-Planet Enterprise Server寫的Servlet無需任何實(shí)質(zhì)上的改動(dòng)即可移植到Apache、Microsoft IIS或者WebStar。幾乎所有的主流服務(wù)器都直接或通過插件支持Servlet。
節(jié)省投資
不僅有許多廉價(jià)甚至免費(fèi)的Web服務(wù)器可供個(gè)人或小規(guī)模網(wǎng)站使用,而且對(duì)于現(xiàn)有的服務(wù)器,如果它不支持Servlet的話,要加上這部分功能也往往是免費(fèi)的(或只需要極少的投資)。
二、Servlet的主要功能
Servlet的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)Web內(nèi)容。這個(gè)過程為:
客戶端發(fā)送請(qǐng)求至服務(wù)器端;
服務(wù)器將請(qǐng)求信息發(fā)送至Servlet
Servlet生成響應(yīng)內(nèi)容并將其傳給Server。響應(yīng)內(nèi)容動(dòng)態(tài)生成,通常取決于客戶端的請(qǐng)求
服務(wù)器將響應(yīng)返回給客戶端
Servlet看起來像是通常的Java程序。Servlet導(dǎo)入特定的屬于Java Servlet API的包。因?yàn)槭菍?duì)象字節(jié)碼,可動(dòng)態(tài)地從網(wǎng)絡(luò)加載,可以說Servlet對(duì)Server就如同Applet對(duì)Client一樣,但是,由于Servlet運(yùn)行于Server中,它們并不需要一個(gè)圖形用戶界面。從這個(gè)角度講,Servlet也被稱為Faceless Object。
三、JAVA Servlet的優(yōu)勢(shì)
Servlet可以和其他資源(文件、數(shù)據(jù)庫、Applet、Java應(yīng)用程序等)交互,以生成返回給客戶端的響應(yīng)內(nèi)容。如果需要,還可以保存請(qǐng)求-響應(yīng)過程中的信息。
采用Servlet,服務(wù)器可以完全授權(quán)對(duì)本地資源的訪問(如數(shù)據(jù)庫),并且Servlet自身將會(huì)控制外部用戶的訪問數(shù)量及訪問性質(zhì)
Servlet可以是其它服務(wù)的客戶端程序,例如,它們可以用于分布式的應(yīng)用系統(tǒng)中,可以從本地硬盤,或者通過網(wǎng)絡(luò)從遠(yuǎn)端硬盤激活Servlet。
Servlet可被鏈接(chain)。一個(gè)Servlet可以調(diào)用另一個(gè)或一系列Servlet,即成為它的客戶端。
采用Servlet Tag技術(shù),可以在HTML頁面中動(dòng)態(tài)調(diào)用Servlet。
Servlet API與協(xié)議無關(guān)。它并不對(duì)傳遞它的協(xié)議有任何假設(shè)。
像所有的Java程序一樣,Servlet擁有面向?qū)ο驤ava語言的所有優(yōu)勢(shì)
Servlet提供了Java應(yīng)用程序的所有優(yōu)勢(shì)——可移植、穩(wěn)健、易開發(fā)。使用Servlet 的Tag技術(shù),Servlet能夠生成嵌于靜態(tài)HTML頁面中的動(dòng)態(tài)內(nèi)容。
一個(gè)Servlet被客戶端發(fā)送的第一個(gè)請(qǐng)求激活,然后它將繼續(xù)運(yùn)行于后臺(tái),等待以后的請(qǐng)求。每個(gè)請(qǐng)求將生成一個(gè)新的線程,而不是一個(gè)完整的進(jìn)程。多個(gè)客戶能夠在同一個(gè)進(jìn)程中同時(shí)得到服務(wù)。一般來說,Servlet進(jìn)程只是在Web Server卸載時(shí)被卸載。
四、Servlet生命周期
裝載Servlet。這項(xiàng)操作一般是動(dòng)態(tài)執(zhí)行的。然而,Server通常會(huì)提供一個(gè)管理的選項(xiàng),用于在Server啟動(dòng)時(shí)強(qiáng)制裝載和初始化特定的Servlet。
Server創(chuàng)建一個(gè)Servlet的實(shí)例
Server調(diào)用Servlet的init()方法
一個(gè)客戶端的請(qǐng)求到達(dá)Server
Server創(chuàng)建一個(gè)請(qǐng)求對(duì)象
Server創(chuàng)建一個(gè)響應(yīng)對(duì)象
Server激活Servlet的service()方法,傳遞請(qǐng)求和響應(yīng)對(duì)象作為參數(shù)
service()方法獲得關(guān)于請(qǐng)求對(duì)象的信息,處理請(qǐng)求,訪問其他資源,獲得需要的信息
service()方法使用響應(yīng)對(duì)象的方法,將響應(yīng)傳回Server,最終到達(dá)客戶端。service()方法可能激活其它方法以處理請(qǐng)求,如doGet()或doPost()或程序員自己開發(fā)的新的方法
對(duì)于更多的客戶端請(qǐng)求,Server創(chuàng)建新的請(qǐng)求和響應(yīng)對(duì)象,仍然激活此Servlet的 service()方法,將這兩個(gè)對(duì)象作為參數(shù)傳遞給它。如此重復(fù)以上的循環(huán),但無需再次調(diào)用init()方法。一般Servlet只初始化一次 ,當(dāng)Server不再需要Servlet時(shí)(一般當(dāng)Server關(guān)閉時(shí)),Server調(diào)用Servlet的Destroy()方法。
在美國(guó),EJB+Servlet+JSP幾乎成為電子商務(wù)的開發(fā)標(biāo)準(zhǔn)。本來 ASP 也很有希望,但微軟最近可能把精力都集中在打官司和Win2000上, 因此電子商務(wù)發(fā)展得太少。PHP由于其模式和一些天生缺陷,毫無希望。 在美國(guó),很少有商業(yè)站點(diǎn)用PHP的
方法/步驟
1
首先這里jsp頁面的代碼 定義布局文件html的 如圖所示
這是js文件 打開一個(gè)新子窗口和向頁面中加載視頻播放標(biāo)簽
上傳文件java代碼 獲取時(shí)間轉(zhuǎn)換成字符串作為上傳之后的前中搜文件名以及設(shè)置保存路徑和傳值到j(luò)sp頁面
這里copy代碼 將一個(gè)源培伏文件復(fù)制到新的目錄路徑下 如圖所示
這里upload的jsp文件 用來選擇視頻文件并提交給后臺(tái)
展示舊文件名新文件名和上傳后的文件目錄路徑 并將其傳給父頁面即index.jsp
upload.jsp文件提交的代碼經(jīng)過java文件處理后通過控制轉(zhuǎn)到upload_video.jsp
代碼片段已經(jīng)貼出來了,接下來我們開始演示界面 打開后如圖所示 點(diǎn)擊上傳按鈕
點(diǎn)擊選擇文件 找到要上傳的視頻文件 選中后選擇打開 然后點(diǎn)擊慧歷確定按鈕
這里就是顯示新舊文件名和文件目錄路徑的界面 點(diǎn)擊確定將文件目錄傳給父文件界面
如圖所示 目錄路徑已經(jīng)出給input中了 點(diǎn)擊播放按鈕 就會(huì)出現(xiàn)播放界面并且自動(dòng)播放了
搞清楚兩個(gè)問題:上傳到自己的服務(wù)器還是第三方平臺(tái)?播放器實(shí)用Flash還是H5播搭橋放器?
如果是上傳到自己的服務(wù)器,使用H5播放。那上傳視頻就和普通的文件上傳一樣。都是通過Http上傳。前端可以使用form表畝枝者單上傳也可以使用ajax異步上傳。后臺(tái)可以使用apache的Common-fileUpload工具來解析并保存文件。然后生成一個(gè)訪問路徑。將訪問路徑返回給前端的 video標(biāo)簽的src屬性即可。通過幾個(gè)簡(jiǎn)單的屬性或腳本就能控制播放。
如果是上傳到第三方平臺(tái),例如騰訊視頻、愛奇藝、優(yōu)酷等。他們都有開發(fā)者平臺(tái)或者開放平臺(tái)。一般都有一些jar工具類或者模板案例提供給你的。你上傳之后,也有返回路徑給你。這是一般都是嵌入它們的Flash插件。所以你只需要將那段Flash插件的HTML代碼放入你的網(wǎng)頁中就可以播放迅薯了。好處是,不需要自己存儲(chǔ)。不需要準(zhǔn)備播放器。壞處是,可能有廣告。不是可能。是一定會(huì)有。