javaweb程序設(shè)計(jì)任務(wù)教程源代碼(java web程序設(shè)計(jì)任務(wù)教程源碼)
本篇文章給大家談?wù)刯avaweb程序設(shè)計(jì)任務(wù)教程源代碼,以及java web程序設(shè)計(jì)任務(wù)教程源碼對應(yīng)的知識點(diǎn),希望對各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
- 1、如何快速讀懂項(xiàng)目源碼javaWeb
- 2、javaweb 做一個通訊錄的小項(xiàng)目 求源代碼 急求。
- 3、怎樣高效的閱讀JavaWeb項(xiàng)目源代碼
- 4、如何用Java實(shí)現(xiàn)Web服務(wù)器
如何快速讀懂項(xiàng)目源碼javaWeb
一:學(xué)會如何讀一個JavaWeb項(xiàng)目源代碼 步驟:表結(jié)構(gòu)-web.xml-mvc-db-spring
ioc-log- 代碼
1、先了解項(xiàng)目數(shù)據(jù)庫的表結(jié)構(gòu),這個方面是最容易忘記 的,有時候我們只顧著看每一個方法是怎么進(jìn)行的,卻沒
有去了解數(shù)據(jù)庫之間的主外鍵關(guān)聯(lián)。其實(shí)如果先了解數(shù)據(jù) 庫表結(jié)構(gòu),再去看一個方法的實(shí)現(xiàn)會更加容易。
2、然后需要過一遍web.xml,知道項(xiàng)目中用到了什么攔
截器,監(jiān)聽器,過濾器,擁有哪些配置文件。如果是攔截 器,一般負(fù)責(zé)過濾請求,進(jìn)行AOP 等;如果是監(jiān) 可能是定時任務(wù),初始化任務(wù);配置文件有如使用了 spring
后的讀取mvc 相關(guān),db 相關(guān),service 相關(guān),aop 相關(guān)的文件。
3、查看攔截器,監(jiān)聽器代碼,知道攔截了什么請求,這
個類完成了怎樣的工作。有的人就是因?yàn)槿鄙倭诉@一步, 自己寫了一個action,配置文件也沒有寫錯,但是卻怎么
調(diào)試也無法進(jìn)入這個action,直到別人告訴他,請求被攔
4、接下來,看配置文件,首先一定是mvc相關(guān)的,如 springmvc
中,要請求哪些請求是靜態(tài)資源,使用了哪些 view 策略,controller 注解放在哪個包下等。 然后是db 相關(guān)配置文件,看使用了什么數(shù)據(jù)庫,使用了
什么orm框架,是否開啟了二級緩存,使用哪種產(chǎn)品作 為二級緩存,事務(wù)管理的處理,需要掃描的實(shí)體類放在什 么位置。最后是spring 核心的ioc
功能相關(guān)的配置文件, 知道接口與具體類的注入大致是怎樣的。當(dāng)然還有一些如 apectj 置文件,也是在這個步驟中完成
5、log
相關(guān)文件,日志的各個級別是如何處理的,在哪些 地方使用了log 記錄日志
6、從上面幾點(diǎn)后知道了整個開源項(xiàng)目的整體框架,閱讀 每個方法就不再那么難了。
7、當(dāng)然如果有項(xiàng)目配套的開發(fā)文檔也是要閱讀的。
javaweb 做一個通訊錄的小項(xiàng)目 求源代碼 急求。
先設(shè)計(jì)數(shù)據(jù)庫中通訊錄表格(字段有:id,聯(lián)系人姓名,手機(jī)號,備注),然后,hebinate實(shí)現(xiàn)數(shù)據(jù)庫表到j(luò)avabean的映射,同時也會生成對通訊錄表格的增刪改查的基本sql語句對應(yīng)的接口。然后你再寫一個Servlet,連接頁面自己數(shù)據(jù)庫操作接口即可
怎樣高效的閱讀JavaWeb項(xiàng)目源代碼
首先要理清楚代碼結(jié)構(gòu)和業(yè)務(wù)結(jié)構(gòu)(應(yīng)該有些文檔或者大的流程圖),這是閱讀具體代碼的前提。
閱讀Java?web項(xiàng)目的代碼:
你需要找到
View層的代碼:前端頁面、圖片、資源文件都在其中。
Controller層的代碼:控制試圖與模型層以及數(shù)據(jù)傳遞。
Service層的代碼:業(yè)務(wù)邏輯。
Dao層的代碼:數(shù)據(jù)庫訪問邏輯。
從web.xml?-?appcontext.xml?-?xxx
如何用Java實(shí)現(xiàn)Web服務(wù)器
一 HTTP協(xié)議的作用原理
WWW是以Internet作為傳輸媒介的一個應(yīng)用系統(tǒng) WWW網(wǎng)上最基本的傳輸單位是Web網(wǎng)頁 WWW的工作基于客戶機(jī)/服務(wù)器計(jì)算模型 由Web 瀏覽器(客戶機(jī))和Web服務(wù)器(服務(wù)器)構(gòu)成 兩者之間采用超文本傳送協(xié)議(HTTP)進(jìn)行通信 HTTP協(xié)議是基于TCP/IP協(xié)議之上的協(xié)議 是Web瀏覽器和Web服務(wù)器之間的應(yīng)用層協(xié)議 是通用的 無狀態(tài)的 面向?qū)ο蟮膮f(xié)議 HTTP協(xié)議的作用原理包括四個步驟
( ) 連接 Web瀏覽器與Web服務(wù)器建立連接 打開一個稱為socket(套接字)的虛擬文件 此文件的建立標(biāo)志著連接建立成功
( ) 請求 Web瀏覽器通過socket向Web服務(wù)器提交請求 HTTP的請求一般是GET或POST命令(POST用于FORM參數(shù)的傳遞) GET命令的格式為
GET 路徑/文件名 HTTP/
文件名指出所訪問的文件 HTTP/ 指出Web瀏覽器使用的HTTP版本
( ) 應(yīng)答 Web瀏覽器提交請求后 通過HTTP協(xié)議傳送給Web服務(wù)器 Web服務(wù)器接到后 進(jìn)行事務(wù)處理 處理結(jié)果又通過HTTP傳回給Web瀏覽器 從而在Web瀏覽器上顯示出所請求的頁面
例 假設(shè)客戶機(jī)與 /mydir/l建立了連接 就會發(fā)送GET命令 GET /mydir/l HTTP/ 主機(jī)名為的Web服務(wù)器從它的文檔空間中搜索子目錄mydir的文件l 如果找到該文件 Web服務(wù)器把該文件內(nèi)容傳送給相應(yīng)的Web瀏覽器
為了告知 Web瀏覽器傳送內(nèi)容的類型 Web服務(wù)器首先傳送一些HTTP頭信息 然后傳送具體內(nèi)容(即HTTP體信息) HTTP頭信息和HTTP體信息之間用一個空行分開
常用的HTTP頭信息有
① HTTP OK
這是Web服務(wù)器應(yīng)答的第一行 列出服務(wù)器正在運(yùn)行的HTTP版本號和應(yīng)答代碼 代碼 OK 表示請求完成
② MIME_Version
它指示MIME類型的版本
③ content_type 類型
這個頭信息非常重要 它指示HTTP體信息的MIME類型 如 content_type text/指示傳送的數(shù)據(jù)是HTML文檔
④ content_length 長度值
它指示HTTP體信息的長度(字節(jié))
( ) 關(guān)閉連接 當(dāng)應(yīng)答結(jié)束后 Web瀏覽器與Web服務(wù)器必須斷開 以保證其它Web瀏覽器能夠與Web服務(wù)器建立連接
二 Java實(shí)現(xiàn)Web服務(wù)器功能的程序設(shè)計(jì)
根據(jù)上述HTTP協(xié)議的作用原理 實(shí)現(xiàn)GET請求的Web服務(wù)器程序的方法如下
( ) 創(chuàng)建ServerSocket類對象 監(jiān)聽端口 這是為了區(qū)別于HTTP的標(biāo)準(zhǔn)TCP/IP端口 而取的
( ) 等待 接受客戶機(jī)連接到端口 得到與客戶機(jī)連接的socket
( ) 創(chuàng)建與socket字相關(guān)聯(lián)的輸入流instream和輸出流outstream
( ) 從與socket關(guān)聯(lián)的輸入流instream中讀取一行客戶機(jī)提交的請求信息 請求信息的格式為 GET 路徑/文件名 HTTP/
( ) 從請求信息中獲取請求類型 如果請求類型是GET 則從請求信息中獲取所訪問的HTML文件名 沒有HTML文件名時 則以l作為文件名
( ) 如果HTML文件存在 則打開HTML文件 把HTTP頭信息和HTML文件內(nèi)容通過socket傳回給Web瀏覽器 然后關(guān)閉文件 否則發(fā)送錯誤信息給Web瀏覽器
( ) 關(guān)閉與相應(yīng)Web瀏覽器連接的socket字
下面的程序是根據(jù)上述方法編寫的 可實(shí)現(xiàn)多線程的Web服務(wù)器 以保證多個客戶機(jī)能同時與該Web服務(wù)器連接
程序 WebServer java文件
//WebServer java 用JAVA編寫Web服務(wù)器
import java io *
import *
public class WebServer {
public static void main(String args[]) {
int i= PORT=
ServerSocket server=null
Socket client=null
try {
server=new ServerSocket(PORT)
System out println( Web Server is listening on port +server getLocalPort())
for ( ) {client=server accept() //接受客戶機(jī)的連接請求
new ConnectionThread(client i) start()
i++
}
} catch (Exception e) {System out println(e) }
}
}
/* ConnnectionThread類完成與一個Web瀏覽器的通信 */
class ConnectionThread extends Thread {
Socket client //連接Web瀏覽器的socket字
int counter //計(jì)數(shù)器
public ConnectionThread(Socket cl int c) {
client=cl
counter=c
}
public void run() //線程體
{try {
String destIP=client getInetAddress() toString() //客戶機(jī)IP地址
int destport=client getPort() //客戶機(jī)端口號
System out println( Connection +counter+ connected to +destIP+ on port +destport+ )
PrintStream outstream=new PrintStream(client getOutputStream())
DataInputStream instream=new DataInputStream(client getInputStream())
String inline=instream readLine() //讀取Web瀏覽器提交的請求信息
System out println( Received +inline)
if (getrequest(inline)) { //如果是GET請求
String filename=getfilename(inline)
File file=new File(filename)
if (file exists()) { //若文件存在 則將文件送給Web瀏覽器
System out println(filename+ requested )
outstream println( HTTP/ OK )
outstream println( MIME_version )
outstream println( Content_Type text/ )
int len=(int)file length()
outstream println( Content_Length +len)
outstream println( )
sendfile(outstream file) //發(fā)送文件
outstream flush()
} else { //文件不存在時
String notfound=
Error file not found
outstream println( HTTP/ no found )
outstream println( Content_Type text/ )
outstream println( Content_Length +notfound length()+ )
outstream println( )
outstream println(notfound)
outstream flush()
}
}
long m =
while (m ) {m ++ } //延時
client close()
} catch (IOException e) {
System out println( Exception +e)
}
}
/* 獲取請求類型是否為 GET */
boolean getrequest(String s) {
if (s length() )
{if (s substring( ) equalsIgnoreCase( GET )) return true
}
return false
}
/* 獲取要訪問的文件名 */
String getfilename(String s) {
String f=s substring(s indexOf(′ ′)+ )
f=f substring( f indexOf(′ ′))
try {
if (f charAt( )==′/′)
f=f substring( )
} catch (StringIndexOutOfBoundsException e) {
System out println( Exception +e)
}
if (f equals( )) f= l
return f
}
/*把指定文件發(fā)送給Web瀏覽器 */
void sendfile(PrintStream outs File file) {
try {
DataInputStream in=new DataInputStream(new FileInputStream(file))
int len=(int)file length()
byte buf[]=new byte[len]
in readFully(buf)
outs write(buf len)
outs flush()
in close()
} catch (Exception e) {
System out println( Error retrieving file )
System exit( )
}
}
}
程序中的ConnectionThread線程子類用來分析一個Web瀏覽器提交的請求 并將應(yīng)答信息傳回給Web瀏覽器 其中 getrequest()方法用來檢測客戶的請求是否為 GET getfilename(s)方法是從客戶請求信息s中獲取要訪問的HTML文件名 sendfile()方法把指定文件內(nèi)容通過socket傳回給Web瀏覽器
對上述程序的getrequest()方法和相關(guān)部分作修改 也能對POST請求進(jìn)行處理
三 運(yùn)行實(shí)例
為了測試上述程序的正確性 將編譯后的WebServer class ConnectionThread class和下面的l文件置于網(wǎng)絡(luò)的某臺主機(jī)的同一目錄中(如 主機(jī)NT SRV的C JWEB目錄)
程序 l文件
這是用JAVA寫出的WEB服務(wù)器主頁
年 月 日
首先在該主機(jī)上用java命令運(yùn)行WebServer class
C jwebjava webserver
然后在客戶機(jī)運(yùn)行瀏覽器軟件 在URL處輸入WebServer程序所屬的URL地址(如 ) 就在瀏覽器窗口顯示出指定的HTML文檔
注意 不能缺省端口號 如缺省 則運(yùn)行該主機(jī)的正常WEB服務(wù)器
lishixinzhi/Article/program/Java/hx/201311/26626
關(guān)于javaweb程序設(shè)計(jì)任務(wù)教程源代碼和java web程序設(shè)計(jì)任務(wù)教程源碼的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。