版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 武漢工程大學(xué)</b></p><p> 計(jì)算機(jī)科學(xué)與工程學(xué)院</p><p><b> 畢業(yè)實(shí)習(xí)報(bào)告</b></p><p> 武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 制</p><p><b> 說(shuō)明:</b></p><
2、;p> 1、 實(shí)習(xí)指導(dǎo)教師由學(xué)院校內(nèi)教師擔(dān)任,負(fù)責(zé)組織實(shí)習(xí)、學(xué)生管理、參加實(shí)習(xí)答辯、實(shí)習(xí)成績(jī)?cè)u(píng)定、給出實(shí)習(xí)評(píng)語(yǔ)等工作。</p><p> 2、 實(shí)習(xí)報(bào)告由武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院提供基本格式(適用于學(xué)院各專業(yè)),各專業(yè)教研室和指導(dǎo)教師可根據(jù)本專業(yè)特點(diǎn)及實(shí)習(xí)內(nèi)容做適當(dāng)?shù)恼{(diào)整,學(xué)生須按指導(dǎo)教師下達(dá)的實(shí)習(xí)報(bào)告格式認(rèn)真進(jìn)行填寫。</p><p> 3、 實(shí)習(xí)成績(jī)由指導(dǎo)教師根據(jù)學(xué)
3、生的實(shí)習(xí)情況給出各項(xiàng)分值及總評(píng)成績(jī)。</p><p> 4、 指導(dǎo)教師評(píng)語(yǔ)一欄由實(shí)習(xí)指導(dǎo)教師(校內(nèi)教師)就學(xué)生在整個(gè)實(shí)習(xí)期間的表現(xiàn)給出客觀、全面的評(píng)價(jià),包括實(shí)習(xí)期間的表現(xiàn)、實(shí)習(xí)報(bào)告的質(zhì)量、實(shí)習(xí)答辯的情況等。</p><p> 5、 學(xué)生必須參加實(shí)習(xí)答辯,凡不參加實(shí)習(xí)答辯者,實(shí)習(xí)成績(jī)一律按不及格處理。實(shí)習(xí)答辯小組應(yīng)由2人及以上教師組成,其中校內(nèi)指導(dǎo)教師必須參加,否則視作無(wú)效答辯。<
4、/p><p> 6、 實(shí)習(xí)報(bào)告正文字?jǐn)?shù)應(yīng)不少于5000字,實(shí)習(xí)日記字?jǐn)?shù)不少于300字/天。</p><p> 7、 實(shí)習(xí)報(bào)告正文中實(shí)習(xí)目的與任務(wù)、實(shí)習(xí)地點(diǎn)、實(shí)習(xí)內(nèi)容和要求等項(xiàng),可由指導(dǎo)教師統(tǒng)一給出(自主實(shí)習(xí)除外)。學(xué)生自主實(shí)習(xí)的,可根據(jù)實(shí)習(xí)的情況自行填寫以上內(nèi)容。</p><p> 8、 自主實(shí)習(xí)的學(xué)生還應(yīng)提供由實(shí)習(xí)單位出具的實(shí)習(xí)鑒定表(復(fù)印件),與實(shí)習(xí)報(bào)告一起裝
5、訂,作為參加實(shí)習(xí)答辯和評(píng)定成績(jī)的依據(jù)。</p><p><b> 畢業(yè)實(shí)習(xí)成績(jī)?cè)u(píng)定表</b></p><p> 學(xué)生姓名: 王冠豪 學(xué)號(hào): 1005100120 班級(jí): 01 </p><p><b> 畢業(yè)實(shí)習(xí)答辯記錄表</b></p
6、><p><b> 指導(dǎo)教師評(píng)語(yǔ)</b></p><p><b> 一、實(shí)習(xí)目的與任務(wù)</b></p><p> IT行業(yè)已經(jīng)滲透到各行各業(yè),非IT業(yè)的IT人才需求也穩(wěn)步增加,為解決企業(yè)IT人才需求瓶頸,滿足IT企業(yè)特別是跨國(guó)公司對(duì).NET高級(jí)軟件人才的需要。針對(duì)各類專、本科院校的一些基礎(chǔ)扎實(shí),有一定編程經(jīng)驗(yàn)(能力)的大
7、學(xué)生,本次實(shí)習(xí)在達(dá)內(nèi)軟件有限公司協(xié)助下制定此提高班實(shí)習(xí)計(jì)劃。通過(guò)嚴(yán)格按照項(xiàng)目的真實(shí)開發(fā)流程設(shè)計(jì),讓大學(xué)生在企業(yè)中經(jīng)歷體會(huì),提高整體把握項(xiàng)目技能,掌握最新流行技術(shù)。</p><p> 本計(jì)劃以“服務(wù)社會(huì)、服務(wù)企業(yè)、服務(wù)大學(xué)生”為基本理念,結(jié)合大學(xué)相關(guān)專業(yè)學(xué)生的課程設(shè)計(jì),實(shí)現(xiàn)企校合作,共同指導(dǎo)課程設(shè)計(jì),以期實(shí)現(xiàn)學(xué)生走出教室,走向社會(huì),通過(guò)實(shí)際的軟件項(xiàng)目實(shí)習(xí),讓學(xué)生既完成了學(xué)科教學(xué)要求又使學(xué)生了解了企業(yè),熟悉了培訓(xùn)平
8、臺(tái)。</p><p><b> 二、實(shí)習(xí)地點(diǎn)</b></p><p> 達(dá)內(nèi)軟件有限公司(武漢光谷龍安港匯城)。</p><p><b> 三、實(shí)習(xí)內(nèi)容和要求</b></p><p><b> 3.1.實(shí)習(xí)內(nèi)容:</b></p><p> 本項(xiàng)
9、目來(lái)自互聯(lián)網(wǎng)房產(chǎn)交易網(wǎng)站開發(fā)理念,在系統(tǒng)中完整的展現(xiàn)商業(yè)應(yīng)用需求需要的業(yè)務(wù)實(shí)體,業(yè)務(wù)流程。相關(guān)互聯(lián)網(wǎng)應(yīng)用成功成熟系統(tǒng)可參照億房網(wǎng),搜房網(wǎng)。隨著人們對(duì)于網(wǎng)絡(luò)的使用越來(lái)越多,本次畢業(yè)實(shí)習(xí)本著提高我們的動(dòng)手實(shí)踐能力為目標(biāo),順應(yīng)時(shí)代潮流,做一個(gè)web項(xiàng)目的開發(fā),增加我們對(duì)于互聯(lián)網(wǎng)的了解,同時(shí)熟悉一些開發(fā)環(huán)境和開發(fā)工具。由于是第一次做web項(xiàng)目,所以從servlet開始,模仿一些網(wǎng)站的首頁(yè),做一個(gè)用戶注冊(cè)登錄的效果,同時(shí)做一個(gè)圖片文件的上傳。&l
10、t;/p><p> 3.1.1 環(huán)境搭建</p><p> 在開始開發(fā)之前,首先要搭建好開發(fā)環(huán)境,這次選用的是Myeclipse+Mysql+Tomcat,Myeclipse可以建立web項(xiàng)目,編寫后臺(tái)功能和前臺(tái)頁(yè)面,Mysql負(fù)責(zé)數(shù)據(jù)的存儲(chǔ),Tomcat服務(wù)器負(fù)責(zé)瀏覽器提出的請(qǐng)求,然后交給后臺(tái)處理。在這其中數(shù)據(jù)庫(kù)的連接是一個(gè)非常重要的步驟。在項(xiàng)目中將與數(shù)據(jù)庫(kù)連接相關(guān)的類放在util包中。
11、主要是加載驅(qū)動(dòng),然后創(chuàng)建連接。在開發(fā)環(huán)境都準(zhǔn)備好了之后,就可以開始開發(fā)了。本次項(xiàng)目實(shí)現(xiàn)的功能主要有注冊(cè),登錄,圖片上傳等。</p><p><b> 3.1.2注冊(cè)模塊</b></p><p> 在設(shè)計(jì)用戶注冊(cè)頁(yè)面時(shí),首先需要設(shè)計(jì)具體的注冊(cè)填寫項(xiàng)目,包括各種必填項(xiàng)目,選填項(xiàng)目等。設(shè)計(jì)項(xiàng)目時(shí)不能盲目設(shè)計(jì),而應(yīng)參考一些規(guī)范:</p><p>
12、 設(shè)計(jì)項(xiàng)目應(yīng)目的明確設(shè)計(jì)注冊(cè)填寫項(xiàng)目時(shí),應(yīng)有明確目的。每一個(gè)需要用戶填寫的內(nèi)容,都應(yīng)該是網(wǎng)站經(jīng)營(yíng)者需要獲得的信息,而不是無(wú)聊的玩笑。</p><p> 設(shè)計(jì)項(xiàng)目應(yīng)精簡(jiǎn)易填網(wǎng)站的注冊(cè)項(xiàng)目應(yīng)該通俗易懂。網(wǎng)站所需要面對(duì)的并不只是局限于專業(yè)用戶。過(guò)于艱深的詞匯可能造成用戶誤解,以致注冊(cè)無(wú)法進(jìn)行。因此,能使用中文時(shí)盡量使用中文,能使用簡(jiǎn)單詞匯,盡量少使用術(shù)語(yǔ)。</p><p> 注冊(cè)功能
13、主要是要和數(shù)據(jù)庫(kù)進(jìn)行交互,使用的Mysql數(shù)據(jù)庫(kù)。在插入數(shù)據(jù)之前首先要從頁(yè)面上獲得數(shù)據(jù)。該功能用jsp實(shí)現(xiàn),即用一個(gè)表單將信息傳到后臺(tái),然后進(jìn)行驗(yàn)證。當(dāng)然在這之前,要通過(guò)xml配置文件,選擇正確的servlet。xml中的內(nèi)容如下:</p><p><b> <servlet></b></p><p> <servlet-name>frie
14、nd</servlet-name></p><p> <servlet-class>service.FriendServlet</servlet-class></p><p> </servlet></p><p> <servlet-mapping></p><p> &l
15、t;servlet-name>friend</servlet-name></p><p> <url-pattern>*.do</url-pattern></p><p> </servlet-mapping></p><p> 首先通過(guò)*.do找到請(qǐng)求,然后根據(jù)這個(gè)名字找到friend中的FriendSe
16、rvlet,讓他去執(zhí)行具體的后臺(tái)處理。在后臺(tái)我們通過(guò)if語(yǔ)句來(lái)處理不同的請(qǐng)求。注冊(cè)功能的實(shí)現(xiàn)如下:</p><p><b> //處理注冊(cè)事務(wù)</b></p><p> //1.獲取從頁(yè)面?zhèn)鬟^(guò)來(lái)的數(shù)據(jù)</p><p> User user =new User();</p><p> user.setUserNam
17、e(request.getParameter("username"));</p><p> //判斷用戶名是否被占用</p><p> boolean registed = userDao.findByUserName(user.getUserName());</p><p> if(registed){</p><p&
18、gt; //不能注冊(cè),提示用戶已經(jīng)被注冊(cè),跳轉(zhuǎn)到注冊(cè)界</p><p> request.setAttribute("username_error", "用戶名已經(jīng)被注冊(cè)"); RequestDispatcherrd=request.getRequestDispatcher("regist.jsp");</p><p>
19、rd.forward(request, response);</p><p><b> return ;</b></p><p><b> }</b></p><p><b> //判斷密碼</b></p><p> String pwd = request.getPa
20、rameter("pwd");</p><p> user.setPwd(pwd);</p><p> if(pwd.equals("")){</p><p> //提示密碼不能為空</p><p> request.setAttribute("pwd_error", &qu
21、ot;密碼不能為空");</p><p> RequestDispatcher rd = request.getRequestDispatcher("regist.jsp");</p><p> rd.forward(request, response);</p><p><b> return;</b>&l
22、t;/p><p><b> }</b></p><p> //判斷年齡(自己編寫)</p><p> Pattern p= Pattern.compile("\\d{1,3}");</p><p> String age = request.getParameter("age"
23、);</p><p> Matcher m = p.matcher(age);</p><p> boolean agechecked = m.matches();</p><p> System.out.println(agechecked);</p><p> if(!agechecked){</p><p&
24、gt; request.setAttribute("age_error","請(qǐng)輸入1-3位數(shù)字");</p><p> RequestDispatcher rd = request.getRequestDispatcher("regist.jsp");</p><p> rd.forward(request, respons
25、e);</p><p><b> return;</b></p><p><b> }else{</b></p><p> user.setAge(Integer.parseInt(age));</p><p><b> }</b></p><p&g
26、t; String checkcode =request.getParameter("checkCode");</p><p> session = request.getSession();</p><p> if(!session.getAttribute("number").equals(checkcode))</p>&l
27、t;p><b> {</b></p><p> request.setAttribute("checkcode_error", "驗(yàn)證碼輸入有誤,請(qǐng)重新有誤");</p><p> RequestDispatcher rd = request.getRequestDispatcher("regist.jsp
28、");</p><p> rd.forward(request, response);</p><p><b> return ;</b></p><p><b> }</b></p><p> user.setName(request.getParameter(
29、"name"));</p><p> System.out.println(request.getParameter("username")+",,,,"+user.getUserName());</p><p> user.setGendar(Integer.parseInt(request.getParameter(&qu
30、ot;gendar"));</p><p> user.setPhone(request.getParameter("phone"));</p><p> //把數(shù)據(jù)插入到數(shù)據(jù)庫(kù)</p><p> userDao.save(user);</p><p> response.sendRedirect(&qu
31、ot;login.jsp");</p><p> 在登錄界面中做了一些驗(yàn)證,當(dāng)然又涉及到與數(shù)據(jù)的交互,比如說(shuō)通過(guò)用戶名查詢?cè)撚脩裘欠癖蛔?cè)過(guò),用到了userDao中的findByUsername函數(shù),該函數(shù)主要是通過(guò)執(zhí)行SQL語(yǔ)句來(lái)查詢數(shù)據(jù)庫(kù)中是否有同用戶名的人。用到的對(duì)象初始化如下:</p><p> Connection conn = null;</p>
32、<p> PreparedStatement statement = null;</p><p> ResultSet rs = null;</p><p> conn = DBUtil.getConnection();</p><p> 然后執(zhí)行SQL語(yǔ)句,返回boolean類型。</p><p> 在注冊(cè)功能中還有一
33、個(gè)就是驗(yàn)證碼的功能,為了這個(gè)功能,專門做了一個(gè)servlet,叫做CheckCodeServlet,這個(gè)servlet也一樣的需要在xml文件中進(jìn)行配置,代碼如下:</p><p><b> <servlet></b></p><p> <servlet-name>checkCode</servlet-name></p&g
34、t;<p> <servlet-class>service.CheckCodeServlet</servlet-class> </p><p> </servlet> </p><p> <servlet-mapping></p><p> <servlet-name>check
35、Code</servlet-name></p><p> <url-pattern>/checkCode</url-pattern> </p><p> </servlet-mapping></p><p> 實(shí)際上這里的功能實(shí)現(xiàn)原理,和上一個(gè)是一樣的,只是寫法不一樣罷了,特別是在url-pattern中,用
36、了一種新的寫法,而不是*.do,這種方式就只能獲取到form表單中src="checkCode"的請(qǐng)求了。</p><p> 由于畫驗(yàn)證碼是一個(gè)新的功能,以前沒(méi)有接觸過(guò),所以此出列出CheckCodeServlet的主要代碼如下:</p><p> public class CheckCodeServlet extends HttpServlet{</p>
37、;<p> HttpSession session =null;</p><p><b> @Override</b></p><p> protected void service(HttpServletRequest req, HttpServletResponse resp)</p><p> throws Serv
38、letException, IOException {</p><p> //1.設(shè)置content-type 消息頭,告訴瀏覽器,返回?cái)?shù)據(jù)類型</p><p> resp.setContentType("image/jpeg");</p><p> //2.圖片的內(nèi)存映像</p><p> BufferedIma
39、ge image = new BufferedImage(80, 30,BufferedImage.TYPE_INT_RGB);</p><p><b> //3,。獲取畫筆</b></p><p> Graphics g = image.getGraphics();</p><p><b> //
40、4.畫背景顏色</b></p><p> Random r = new Random();</p><p> g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));</p><p> g.fillRect(0, 0, 80, 30);</p><
41、;p> //5.畫數(shù)字(字母)</p><p> String number = r.nextInt(99999)+"";</p><p> System.out.println(number);</p><p> session = req.getSession();</p><p> session.s
42、etAttribute("number", number);</p><p> g.setColor(Color.white);</p><p> g.drawString(number, 5, 15);</p><p><b> //6.畫干擾線</b></p><p> g.setColo
43、r(Color.black);</p><p> for(int i= 0 ;i<5;i++){</p><p> g.drawLine(r.nextInt(50), r.nextInt(20), r.nextInt(60), r.nextInt(20));</p><p><b> }</b></p><p&g
44、t; //7.壓縮成jpg格式</p><p> JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(resp.getOutputStream()); </p><p> encoder.encode(image);</p><p&
45、gt;<b> }</b></p><p><b> }</b></p><p> 這樣一個(gè)注冊(cè)模塊就基本實(shí)現(xiàn)了,而且功能還很完善,各種檢查,例如空檢查、用戶名已經(jīng)存在,密碼檢查等。</p><p><b> 3.1.3登錄模塊</b></p><p> 設(shè)計(jì)合理的用
46、戶界面,編制程序,實(shí)現(xiàn)如下功能:</p><p> 1、建立一隨機(jī)文件,順序文件或者數(shù)據(jù)庫(kù)表文件,建立用戶檔案,預(yù)先存儲(chǔ)一些用戶的基本信息(用戶名, 密碼,姓名等);</p><p> 2、當(dāng)輸入“用戶名”和“密碼”并選擇“登錄”后,單擊“確定”按鈕,則在數(shù)據(jù)文件中去查找該用戶名和密碼是否均為正確。若用戶名和密碼正確,則在對(duì)話框中提示“合法用戶!”,否則提示“不是合法用戶或密碼錯(cuò)誤!”
47、 ,給用戶提供3次輸入的機(jī)會(huì),超過(guò)3次則程序退出或進(jìn)入一死循環(huán)程序執(zhí)行。</p><p> 我們處理的主要是表單中的內(nèi)容,具體html方面,并不是這次項(xiàng)目關(guān)注的重點(diǎn),其中form表單中的代碼如下:</p><p> <form action="login.do" method="post"></p><p>
48、 <table cellpadding="0" cellspacing="0" border="0"</p><p> class="form_table" width="647" height="100"></p><p><b> <t
49、r></b></p><p> <td valign="middle" align="right"></p><p><b> 用戶名:</b></p><p><b> </td></b></p><p>
50、<td valign="middle" align="left"></p><p> <input type="text" class="inputgri" name="username" /></p><p><b> </td></
51、b></p><p><b> </tr></b></p><p><b> <tr></b></p><p> <td valign="middle" align="right"></p><p><b&
52、gt; 密 碼:</b></p><p><b> </td></b></p><p> <td valign="middle" align="left"></p><p> <input type="password" class=&
53、quot;inputgri" name="pwd" /></p><p><b> </td></b></p><p><b> </tr></b></p><p><b> </table></b></p>
54、<p><b> <p></b></p><p> <input type="submit" class="button" value="提交 »" /></p><p> </p></p><p&g
55、t; <div class = "error"></p><p> <%String error = (String)request.getAttribute("error");%></p><p> <% if(error == null){%></p><p> <%e
56、rror = "";%></p><p> <%}%></p><p> <h4 style="color:red"><%=error %></h4></p><p> </div></p><p><
57、;b> </form></b></p><p> 在其中通過(guò)post方式提交了login.do的請(qǐng)求。然后還有處理登錄出錯(cuò)的java代碼,通過(guò)request內(nèi)置對(duì)象來(lái)實(shí)現(xiàn)界面和后臺(tái)的交互,如他的getAttribute函數(shù),就是獲得后臺(tái)傳過(guò)來(lái)的信息。當(dāng)然后臺(tái)首先是獲得他提出的請(qǐng)求,然后做出相應(yīng)的處理,在FriendServlet類中處理代碼如下:</p><p
58、> if("/login".equals(action)){//處理登錄事物</p><p> String username = request.getParameter("username");</p><p> String pwd = request.getParameter("pwd");<
59、/p><p> User user = userDao.findByUsernameAndPwd(username,pwd);</p><p> if(user == null){</p><p> request.setAttribute("error","username or password wrong");&
60、lt;/p><p><b> //轉(zhuǎn)發(fā)</b></p><p> RequestDispatcher rd = </p><p> request.getRequestDispatcher("Login.jsp");</p><p> rd.forward(request,response);
61、</p><p><b> }</b></p><p> else{//登錄成功,設(shè)置sessiom</p><p> session = request.getSession();</p><p> session.setAttribute("username",user.getUsern
62、ame());</p><p> //登錄跳轉(zhuǎn)到列表顯示界面,重定向</p><p> response.sendRedirect("list.do");</p><p><b> }</b></p><p><b> }</b></p><
63、p> 值得注意的是,在區(qū)分不同的處理過(guò)程時(shí),是通過(guò)request.getRequestURL()的路徑來(lái)區(qū)分的。登錄時(shí),首先獲得用戶名和密碼,然后調(diào)用findByUsernameAndPwd函數(shù),在數(shù)據(jù)庫(kù)中查詢是否有這個(gè)用戶,如果沒(méi)有用戶,則采用轉(zhuǎn)發(fā)的方式頁(yè)面返回登錄界面,并顯示出錯(cuò)信息,這個(gè)是在jsp頁(yè)面中完成的。如果登錄成功,那么就通過(guò)request內(nèi)置對(duì)象獲得一個(gè)會(huì)話,采用重定向的方式將頁(yè)面跳轉(zhuǎn)到用戶列表頁(yè)面中。這里采用兩
64、種不同的頁(yè)面跳轉(zhuǎn)方式。</p><p> 在用戶列表中,是通過(guò)一個(gè)table實(shí)現(xiàn)用戶信息的顯示的,采用了for循環(huán)的方式。這其中要用到容器,即一個(gè)裝著用戶的容器List<User>,然后通過(guò)findByAll函數(shù)實(shí)現(xiàn)顯示。函數(shù)實(shí)現(xiàn)如下:</p><p> public List<User> findAll(){</p><p> Con
65、nection conn = null;</p><p> PreparedStatement statement = null;</p><p> ResultSet rs = null;</p><p> List<User> users = new ArrayList<User>();</p><p>
66、String sql = "select * from friend_user";</p><p> conn = DBUtil.getConnection();</p><p><b> try {</b></p><p> statement = conn.prepareStatement(sql);<
67、/p><p> rs = statement.executeQuery();</p><p> while(rs.next()){</p><p> User user = new User();</p><p> user.setId(rs.getInt("id"));</p><p> u
68、ser.setUsername(rs.getString("username"));</p><p> user.setPwd(rs.getString("password"));</p><p> user.setName(rs.getString("name"));</p><p> user.s
69、etAge(rs.getInt("age"));</p><p> user.setGendar(rs.getInt("gendar"));</p><p> user.setPhone(rs.getString("phone"));</p><p> users.add(user);</p&g
70、t;<p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p> return users;</p>
71、<p><b> }</b></p><p> 該函數(shù)主要是在進(jìn)行一些數(shù)據(jù)庫(kù)的操作,用到了Connection, PreparedStatement, ResultSet對(duì)象,一個(gè)負(fù)責(zé)連接,一個(gè)負(fù)責(zé)執(zhí)行SQL語(yǔ)句,一個(gè)負(fù)責(zé)返回操作結(jié)果。這樣就獲得了所有的user,然后后臺(tái)將這些信息傳到前臺(tái),在網(wǎng)頁(yè)中顯示出來(lái)??傮w來(lái)說(shuō),登錄模塊具有兩個(gè)功能,一個(gè)是驗(yàn)證,判斷是否是注冊(cè)用戶,另一
72、個(gè)是將所有用戶信息以列表的形式顯示出來(lái)。雖然在網(wǎng)頁(yè)設(shè)計(jì)方面還有不足,比如所有用戶都在一個(gè)table中,當(dāng)用戶數(shù)量增加時(shí),網(wǎng)頁(yè)也變大,不太美觀。不過(guò)主要的信息傳遞和工作原理還是充分反映在了項(xiàng)目之中。</p><p> 3.1.4用戶詳細(xì)信息</p><p> 在這個(gè)模塊之中主要是顯示單個(gè)用戶的詳細(xì)信息。對(duì)與登錄用戶,可以上傳自己的照片,查看別人的信息,但是不能上傳照片。主要是實(shí)現(xiàn)圖片上傳
73、。圖片上傳時(shí),首先要判斷是不是登陸者。然后獲得一些參數(shù),交給后臺(tái)處理。頁(yè)面中的代碼實(shí)現(xiàn)如下:</p><p> <%//判斷上傳圖片的人是不是登錄者 </p><p> String username = (String)session.getAttribute("username");</p><p> if(username.eq
74、uals(user.getUsername())){%></p><p><b> <h1></b></p><p><b> 上傳圖片:</b></p><p><b> </h1></b></p><p> <form actio
75、n="loadPic.do?id=<%=user.getId() %>" method="post"</p><p> enctype="multipart/form-data"></p><p><b> 文件路徑:</b></p><p> <inpu
76、t type="file" name="file1" /></p><p> <input type="submit" value="提交" /></p><p><b> </form></b></p><p><b>
77、 <%} %></b></p><p> 文件上傳,實(shí)際上是將文件上傳到了Tomcat服務(wù)器,我們可以在tomcat的安裝包中看到用戶上傳的圖片。當(dāng)然這些工作都是在servlet中完成的。相應(yīng)的代碼如下:</p><p> else if("/loadPic".equals(action)){//上傳圖片</p><p&
78、gt;<b> //獲取用戶id</b></p><p> int id = Integer.parseInt(request.getParameter("id"));</p><p> //上傳圖片(加載上傳文件的jar包)</p><p> //1.給要上傳的圖片在服務(wù)器配置空間</p>&l
79、t;p> DiskFileItemFactory dfif = new DiskFileItemFactory();</p><p> //2.文件上傳工具類</p><p> ServletFileUpload upload = new ServletFileUpload(dfif);</p><p> upload.setHeaderEnco
80、ding("utf-8");</p><p><b> try {</b></p><p> List list = upload.parseRequest(request);</p><p> for(int i = 0;i < list.size();i++){</p><p>
81、 FileItem item = (FileItem)list.get(i);</p><p> String filename = item.getName();</p><p> System.out.println("上傳文件時(shí)輸出的Name:"+filename);</p><p> StringBuffer sb = new S
82、tringBuffer(filename);</p><p><b> //文件名</b></p><p> filename = sb.substring(sb.lastIndexOf("\\")+1);</p><p> //獲取保存文件的路徑</p><p> String pathTo
83、m = this.getServletContext().getRealPath("upload");</p><p> System.out.println(pathTom);</p><p> //創(chuàng)建用戶的文件夾</p><p> String pathUser = pathTom +"/" +"pic_
84、"+id;</p><p> File file = new File(pathUser);</p><p> file.mkdir();</p><p><b> //寫文件</b></p><p> file = new File(pathUser,filename);</p>
85、<p><b> try {</b></p><p> item.write(file);</p><p> //把文件寫到數(shù)據(jù)庫(kù)</p><p> Pic pic = new Pic();</p><p> pic.setPicName(filename);</p><p&g
86、t; pic.setUserId(id);</p><p> picdao.sava(pic);</p><p> response.sendRedirect("detail.do?id="+id);</p><p> } catch (Exception e) {</p><p> e.printS
87、tackTrace();</p><p><b> }</b></p><p><b> }</b></p><p> } catch (FileUploadException e) {</p><p> e.printStackTrace();</p><p&
88、gt;<b> }</b></p><p><b> }</b></p><p> 上傳的文件是根據(jù)用戶的id來(lái)判斷的,為每個(gè)用戶建立一個(gè)文件夾,來(lái)保存他的圖片,即每個(gè)用戶可以上傳多張圖片。我們?cè)诖蜷_用戶詳細(xì)信息時(shí),如果用戶有照片,那么就需要把它顯示出來(lái),在頁(yè)面中的代碼如下:</p><p><b>
89、; <%//獲取圖片</b></p><p> List<Pic> picList = (List)request.getAttribute("picList");</p><p> for(int i = 0;i < picList.size();i++){</p><p> Pic pic = pi
90、cList.get(i); %></p><p> <img src="upload/pic_<%=user.getId() %>/<%=pic.getPicName() %>" width="300"height="200" /></p><p><b> <%}
91、%></b></p><p> 這樣上傳顯示用戶的詳細(xì)信息的模塊基本上就完成了,這其中也涉及到數(shù)據(jù)庫(kù)的操作,實(shí)際上和前面顯示用戶列表的操作是差不多的,都需要幾個(gè)對(duì)象,然后對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。整個(gè)詳細(xì)設(shè)計(jì)也就基本完成了,雖然功能不是那么的完善,但是也是熟悉了servlet的基本原理,以及一些html,jsp的知識(shí)。</p><p><b> 3.2實(shí)習(xí)要求:&
92、lt;/b></p><p> 對(duì)系統(tǒng)開發(fā)及軟件工程思想有實(shí)踐的體驗(yàn)和理解。鞏固已經(jīng)初步掌握的JavaSE,JavaEE系統(tǒng)知識(shí)。實(shí)踐體驗(yàn)系統(tǒng)開發(fā)的整體工作流程。按時(shí)參加實(shí)習(xí)活動(dòng),不曠課、遲到、早退等情況。遵守實(shí)習(xí)單位紀(jì)律和安排,不違反實(shí)習(xí)單位規(guī)定的情況;聽從指導(dǎo)教師的安排,參加各項(xiàng)活動(dòng),服從教師管理的現(xiàn)象。按期圓滿完成規(guī)定的任務(wù),工作量飽滿;能運(yùn)用所學(xué)知識(shí)和技能去發(fā)現(xiàn)與解決實(shí)際問(wèn)題,工作中有創(chuàng)新意識(shí)。&
93、lt;/p><p><b> 實(shí)習(xí)總結(jié)及分析</b></p><p><b> 4.1實(shí)習(xí)分析</b></p><p> 首先打開tomcat服務(wù)器,然后對(duì)項(xiàng)目進(jìn)行配置,最后通過(guò)瀏覽器輸入http://localhost:8080/web02/login.jsp進(jìn)入登錄界面,對(duì)功能進(jìn)行測(cè)試如下圖所示:</p>
94、;<p> 圖 4.1.1登錄界面</p><p> 若用戶沒(méi)有注冊(cè)則會(huì)出現(xiàn)用戶名或者密碼錯(cuò)誤的提示消息,如下圖所示:</p><p> 圖4.1.2 錯(cuò)誤提示窗口</p><p> 接下來(lái)就是用戶注冊(cè)窗口,該窗口提供用戶需要填寫的基本信息。如下圖所示:</p><p> 圖 4.1.3 注冊(cè)窗口</p>
95、<p> 現(xiàn)在用huan的用戶名正確登錄進(jìn)去,將會(huì)看到所有用戶的信息列表。如圖3.5所示。</p><p> 圖 4.1.4 用戶信息列表</p><p> 點(diǎn)擊詳細(xì)信息,查看詳細(xì)信息,同時(shí)上傳照片,然后顯示出來(lái),如下圖所示。</p><p> 圖 4.1.5 詳細(xì)信息窗口</p><p> 然后點(diǎn)擊選擇文件按鈕,會(huì)出現(xiàn)
96、文件選擇對(duì)話框,如下圖所示:</p><p> 圖4.1.6圖片信息選擇窗口</p><p> 擇用戶需要上傳照片后,點(diǎn)擊提交按鈕。會(huì)看到用戶的照片顯示在網(wǎng)頁(yè)上,如下圖所示:</p><p> 圖 4.1.7 上傳圖片后窗口</p><p><b> 4.2實(shí)習(xí)總結(jié)</b></p><p&g
97、t; 通過(guò)實(shí)習(xí)分析可知,基本上完成應(yīng)有功能。</p><p> 用戶登錄界面實(shí)現(xiàn)用戶成功登錄系統(tǒng),當(dāng)輸入“用戶名”和“密碼”并選擇“登錄”后,單擊“確定”按鈕,則在數(shù)據(jù)文件中去查找該用戶名和密碼是否均為正確。若用戶名和密碼正確,則在對(duì)話框中提示“合法用戶!”,否則提示“不是合法用戶或密碼錯(cuò)誤!” ,給用戶提供3次輸入的機(jī)會(huì),超過(guò)3次則程序退出或進(jìn)入一死循環(huán)程序執(zhí)行。</p><p>
98、 用戶注冊(cè)頁(yè)面也是互聯(lián)網(wǎng)中最常見(jiàn)的用戶交互界面類型。其與用戶登錄網(wǎng)站類似,都是提供一些表單供用戶填寫,通過(guò)網(wǎng)頁(yè)獲取用戶填入的信息,再把用戶信息寫入到網(wǎng)站的數(shù)據(jù)庫(kù)中。用戶注冊(cè)往往是網(wǎng)站用戶系統(tǒng)與用戶交互的第一步。具有十分重要的作用。主要用到了數(shù)據(jù)庫(kù)的增刪改查,當(dāng)然先要熟悉連接數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)操作主要分四步:1.加載驅(qū)動(dòng);2.獲取鏈接;3.執(zhí)行sql語(yǔ)句,并返回結(jié)果集;4.釋放鏈接。也可以對(duì)自己的個(gè)人信息加以修改,比如說(shuō)添加圖片,</p
99、><p> 當(dāng)然還有一些值得完善的地方。但是在短短的時(shí)間內(nèi),能做成這樣已經(jīng)很不錯(cuò)了。主要還是以了解servlet的工作原理為主。Servlet的主要工作模式:客戶端發(fā)送請(qǐng)求至服務(wù)器;服務(wù)器啟動(dòng)并調(diào)用Servlet;Servlet根據(jù)客戶端請(qǐng)求生成響應(yīng)內(nèi)容并將其傳給服務(wù)器;服務(wù)器將響應(yīng)返回客戶端。這樣這個(gè)功能也就演示完了?;旧蠈?shí)現(xiàn)了最初的目標(biāo)。</p><p> 通過(guò)一個(gè)學(xué)期對(duì)JAVA高級(jí)
100、語(yǔ)言程序設(shè)計(jì)的學(xué)習(xí),我已經(jīng)掌握了一些常用的控件的使用方法,對(duì)簡(jiǎn)單的程序設(shè)計(jì)的常用算法也有了一定的了解,還掌握了對(duì)文件輸入與輸出的一些基本操作。為了進(jìn)一步加深理解、驗(yàn)證、鞏固課堂教學(xué)內(nèi)容,加深對(duì)可視化編程思想的理解,強(qiáng)化JAVA對(duì)程序流程控制、常用控件的屬性、事件、方法的理解和使用;為了進(jìn)一步提高編程能力、程序的調(diào)試能力,理論聯(lián)系實(shí)際的能力;鞏固所學(xué)的這些程序設(shè)計(jì)的方法,為了達(dá)到后續(xù)課程對(duì)實(shí)際編程計(jì)算能力的要求,特選定“用戶登錄界面程序設(shè)
101、計(jì)”題目作為課程設(shè)計(jì)實(shí)踐教學(xué)環(huán)節(jié)的題目,有助于培養(yǎng)綜合運(yùn)用所學(xué)知識(shí)解決實(shí)際問(wèn)題的能力,可以充分發(fā)揮想象力和創(chuàng)新能力;有助于提高獨(dú)立思考能力,自學(xué)能力。</p><p> 在此之前一直對(duì)網(wǎng)頁(yè)的編寫充滿了好奇,正好這次實(shí)習(xí)通過(guò)網(wǎng)頁(yè)編程我了解了網(wǎng)頁(yè)的格式、方法和內(nèi)容,并了解了網(wǎng)頁(yè)的后臺(tái)控制機(jī)制,和一些網(wǎng)站設(shè)計(jì)的框架,讓我有了非常大的收獲。此外,通過(guò)這次實(shí)驗(yàn),讓我明白了只有理論聯(lián)系實(shí)踐才能提高自己的實(shí)際操作能力,做任何
102、事都得有個(gè)嚴(yán)格、規(guī)范的流程,都得遵循固的一套體系來(lái)完成,特別是對(duì)于軟件開發(fā)這種存在諸多不穩(wěn)定因素的工程。因此這次畢業(yè)設(shè)計(jì)成功地讓我們和社會(huì)接上了軌道,在畢業(yè)前夕感受到了以后所要經(jīng)歷的工作生活。</p><p><b> 實(shí)習(xí)體會(huì)</b></p><p> 這次實(shí)習(xí)主要是學(xué)習(xí)Java Web開發(fā)方面的相關(guān)知識(shí),主要的有JSP、Servlet、HTML,另外還有JDB
103、C,Mysql數(shù)據(jù)庫(kù)等等。首先是JSP,它是Java Web開發(fā)的基礎(chǔ),需要的頁(yè)面都是用JSP來(lái)建立的,它是一種動(dòng)態(tài)的網(wǎng)頁(yè)技術(shù),其中,可以顯示動(dòng)態(tài)畫面以及動(dòng)畫效果,在其中也可以編寫Java代碼,也可以加入html編寫語(yǔ)言,通過(guò)form表單中的action屬性可以實(shí)現(xiàn)頁(yè)面間的跳轉(zhuǎn),點(diǎn)擊不同的按鈕,可以跳轉(zhuǎn)到相應(yīng)的頁(yè)面,它是Java Web編程中必不可少的部分,Java語(yǔ)言開發(fā)的任何項(xiàng)目都要用到它; 其次是Servlet,它也是Java
104、Web開發(fā)中必不可少的部分,Servlet是位于Web 服務(wù)器內(nèi)部的服務(wù)器端的Java應(yīng)用程序,與傳統(tǒng)的從命令行啟動(dòng)的Java應(yīng)用程序不同,Servlet由Web服務(wù)器進(jìn)行加載,該Web服務(wù)器必須包含支持Servlet的Java虛擬機(jī)。Servlet生成響應(yīng)內(nèi)容并將其傳給Server,響應(yīng)內(nèi)容動(dòng)態(tài)生成,通常取決于客戶端的請(qǐng)求。service()方法可能激活其它方法以處理請(qǐng)求,如doGet()或doPost()或程序員自己開發(fā)的新的方法,
105、用的比較普</p><p> 做完這個(gè)項(xiàng)目時(shí)我們都很激動(dòng),這是我們這么多天的勞動(dòng)成果。當(dāng)我們把所有的功能都測(cè)試完成后,總感覺(jué)還有些不足,也許是時(shí)間的關(guān)系,我們沒(méi)來(lái)的急對(duì)頁(yè)面美化做進(jìn)一步的處理,所以比較平凡,與簡(jiǎn)陋。同時(shí)還有一些代碼的冗余。應(yīng)該把重復(fù)的代碼封裝起來(lái),這樣更加完美。雖然功能上得到實(shí)現(xiàn)。但對(duì)字符的處理還存在一些問(wèn)題。比如中文的支持,做的不是很好。在當(dāng)初設(shè)計(jì)的時(shí)候就應(yīng)該考慮到這些問(wèn)題,如果等到后期修改,
106、代碼量以及工作量會(huì)很大。所以給我的啟示是,前期工作一定要做完善??偟膩?lái)說(shuō),結(jié)果和我預(yù)期的差不多,基本滿足了我們的要求。</p><p> 這次實(shí)習(xí)使我們大學(xué)生將課堂所學(xué)的知識(shí)逐步轉(zhuǎn)化為社會(huì)所需要的才能,令我們獲益匪淺。總而言之,通過(guò)這次的軟件開發(fā),通過(guò)實(shí)習(xí),我們培養(yǎng)了自己獨(dú)立思考和獨(dú)立作業(yè)的能力,更加能夠自信地面對(duì)即將踏入的社會(huì)。</p><p><b> 附實(shí)習(xí)日記<
107、/b></p><p> 2014.2.24 星期一 武漢達(dá)內(nèi)培訓(xùn)中心</p><p> 大學(xué)了的最后一學(xué)期了,這也是我們?cè)谀感W詈笠淮魏煤脤W(xué)習(xí)的機(jī)會(huì)了,頓感時(shí)間飛逝啊,四年的大學(xué)時(shí)光就要過(guò)完了,感慨頗多啊。最后這次畢業(yè)實(shí)習(xí)必須要好好搞,這是進(jìn)入社會(huì)的最后一次充電了,我們都要抓好這次機(jī)會(huì)。今天主要是介紹下畢業(yè)實(shí)習(xí)的事情,我們安排的是到武漢達(dá)內(nèi)培訓(xùn)中心,以前就讓達(dá)內(nèi)老師帶著做過(guò)QQ
108、聊天系統(tǒng),達(dá)內(nèi)老師講的還不錯(cuò),也很負(fù)責(zé),給學(xué)校老師和我們都留下了深刻的印象,那次課程設(shè)計(jì)學(xué)到了很多。來(lái)到教室我們簽了到就在老師的安排下找了一個(gè)座位坐下,然后就打開啦桌面前的電腦,可是不曾想它卻罷工啦,當(dāng)然出現(xiàn)這種情況的還有別的同學(xué),那邊負(fù)責(zé)人就安排專員來(lái)維修電腦,所以今天上午我們沒(méi)有開始編程,而是負(fù)責(zé)本次實(shí)習(xí)的張?zhí)m老師給我們講解了一下Java方面的一些知識(shí),到最后電腦快弄好,編程時(shí)來(lái)不及啦,老師就給我們演示了一下這次首先要做的“捕魚達(dá)人
109、”。</p><p> 2014.2.25 星期二 武漢達(dá)內(nèi)培訓(xùn)中心</p><p> 今天是第一天,在開課前準(zhǔn)時(shí)到達(dá)武漢達(dá)內(nèi)培訓(xùn)中心。Servlet是使用Java Servlet 應(yīng)用程序設(shè)計(jì)接口及相關(guān)類和方法的 Java 程序。。Java Servlet API 定義了一個(gè)servlet 和Java使能的服務(wù)器之間的一個(gè)標(biāo)準(zhǔn)接口,這使得Servlets具有跨服務(wù)器平臺(tái)的特性。Ser
110、vlet 通過(guò)創(chuàng)建一個(gè)框架來(lái)擴(kuò)展服務(wù)器的能力,以提供在 Web 上進(jìn)行請(qǐng)求和響應(yīng)服務(wù)。當(dāng)客戶機(jī)發(fā)送請(qǐng)求至服務(wù)器時(shí),服務(wù)器可以將請(qǐng)求信息發(fā)送給 Servlet,并讓 Servlet 建立起服務(wù)器返回給客戶機(jī)的響應(yīng)。 當(dāng)啟動(dòng) Web 服務(wù)器或客戶機(jī)第一次請(qǐng)求服務(wù)時(shí),可以自動(dòng)裝入 Servlet首先是熟悉java的基礎(chǔ)語(yǔ)法,把基礎(chǔ)打扎實(shí),以后在開發(fā)中才能如魚得水。</p><p> 2014.2.26 星期三 武漢達(dá)
111、內(nèi)培訓(xùn)中心 </p><p> 首先老師對(duì)昨天所講的網(wǎng)站的一些內(nèi)容的回顧,然后對(duì)網(wǎng)站作一些必要的介紹。該項(xiàng)目以房產(chǎn)交易網(wǎng)為背景,主要實(shí)現(xiàn)其用戶登錄、用戶注冊(cè)、用戶詳情及用戶列表等簡(jiǎn)單功能。在需求分析的基礎(chǔ)上,對(duì)功能需求及功能實(shí)現(xiàn)的相關(guān)細(xì)節(jié)作了詳盡的描述。另外,先復(fù)習(xí)了javaSE的相關(guān)概念,如類、繼承、抽象的概念,類之間的關(guān)系:關(guān)聯(lián)、聚合、繼承、實(shí)現(xiàn)和多態(tài)。Static關(guān)鍵字:靜態(tài)修飾符,它修飾的方法、
112、類和變量可以全局調(diào)用。線程的實(shí)現(xiàn)方法,IO流等等。緊接著在了解之后就開始介紹捕魚達(dá)人和房產(chǎn)交易網(wǎng)的基本實(shí)現(xiàn)原理,這包括其中具體用到的那些我們所學(xué)的知識(shí)點(diǎn)、方法及原理,經(jīng)老師的逐步分解講解,其實(shí)我們會(huì)發(fā)現(xiàn)捕魚達(dá)人也并沒(méi)有想象中的那么不可行,我們還是能夠自己獨(dú)立完成的,畢竟都是一些我們所學(xué)的知識(shí),只不過(guò)是把它們整合到一起而已。</p><p> 2014.2.27 星期四 武漢達(dá)內(nèi)培訓(xùn)中心</p>&
113、lt;p> 作為當(dāng)前程序開發(fā)中最流行編程語(yǔ)言的一種,它以面向?qū)ο?,跨平臺(tái),安全,穩(wěn)定以及可擴(kuò)展性吸引了用戶。Java的應(yīng)用領(lǐng)域比較廣,目前的一個(gè)最為主要的用途是開發(fā)Web應(yīng)用程序。而Web程序的入口點(diǎn)則是Servlet,Servlet主要處理各種業(yè)務(wù)邏輯,它比JSP更具有業(yè)務(wù)邏輯層的意義。了解它們的基本原理,我們就該開始在老師的帶領(lǐng)下著手啦,所謂巧婦難為無(wú)米之炊,在開始編程之前一些相關(guān)的環(huán)境搭建還是很有必要的,所這一天上午在老師
114、的帶領(lǐng)下我們?cè)谶M(jìn)行開發(fā)前的環(huán)境變量的配置以及開發(fā)工具的選取,完了之后就該是寫一份完整的開發(fā)的詳細(xì)設(shè)計(jì)報(bào)告,以為明天的編程的開始而準(zhǔn)備。</p><p> 2014.2.28 星期五 武漢達(dá)內(nèi)培訓(xùn)中心</p><p> 今天老師開始教我們捕魚達(dá)人的編程,這個(gè)讓我們興奮不已,因?yàn)槲覀兌己茉缇屯孢^(guò)這個(gè)游戲,能了解這個(gè)游戲的開發(fā)過(guò)程讓我們很感興趣。老師給我們講了很多,包括界面設(shè)計(jì),動(dòng)畫效果原理
115、。其中界面主要就是圖片加載,畫面背景設(shè)置,加強(qiáng)游戲效果。而動(dòng)畫效果原理則比較簡(jiǎn)單,用多張圖片在較短的時(shí)間內(nèi)來(lái)回切換,這個(gè)就需要用線程來(lái)實(shí)現(xiàn)。魚的游動(dòng)效果也很簡(jiǎn)單,同樣是在單位時(shí)間內(nèi)變化魚的坐標(biāo),加上圖片切換效果,就可以達(dá)到魚在背景圖片上“游動(dòng)”的效果。實(shí)現(xiàn)細(xì)節(jié)上,分析了系統(tǒng)的大致結(jié)構(gòu),所需要編寫的類及其屬性、方法等等。對(duì)于線程的實(shí)現(xiàn)方法,采用了兩種方法:繼承Thread類和實(shí)現(xiàn)Runnable接口。</p><p&g
116、t; 2014.3.3 星期一 武漢達(dá)內(nèi)培訓(xùn)中心</p><p> 完成了捕魚達(dá)人的項(xiàng)目,對(duì)此項(xiàng)目進(jìn)行了一些完善工作,包括分?jǐn)?shù),子彈的控制等。在搞完之后,正式進(jìn)入網(wǎng)站設(shè)計(jì)。</p><p> 首先熟悉html的基本結(jié)構(gòu),編碼格式,常用標(biāo)簽等,然后開始嵌入簡(jiǎn)單的JSP代碼,獲取頁(yè)面輸入的數(shù)據(jù),并反饋相關(guān)信息。其中重點(diǎn)講解了JSP的九大內(nèi)置對(duì)象(包括request,response,se
117、ssion,application,page,pageContext,out,exception,config),<table>標(biāo)簽的使用,以及<form>表單的提交、請(qǐng)求等基本知識(shí)點(diǎn)。還好,這些我都自學(xué)過(guò),雖然老師講的有點(diǎn)快,但還是可以跟上的。</p><p> 2014.3.4 星期二 武漢達(dá)內(nèi)培訓(xùn)中心</p><p> 熟悉了JSP網(wǎng)頁(yè)編程后,接下來(lái)開始使
118、用Servlet框架。使用Servlet框架需要在網(wǎng)頁(yè)配置文件web.xml中添加相應(yīng)的servlet相應(yīng)處理,這里為了方便,我們用一個(gè)Servlet類攔截所有的請(qǐng)求,將其解析成不同的請(qǐng)求,同時(shí)作出相應(yīng)的處理,并跳轉(zhuǎn)到對(duì)應(yīng)的網(wǎng)頁(yè)。其中,會(huì)涉及相關(guān)的數(shù)據(jù)庫(kù)操作和相關(guān)類。</p><p> 這里的跳轉(zhuǎn)用到了頁(yè)面之間跳轉(zhuǎn)的方式:1.連接<a href='連接的地址'>百度</a>
119、; ;2.重定向request.sendRedirect("跳轉(zhuǎn)的路徑");3.轉(zhuǎn)發(fā)RequestDispatcher rd =request.getRequestDispatcher("請(qǐng)求轉(zhuǎn)發(fā)到的路徑");rd.forward(request, response);//把當(dāng)前頁(yè)面的請(qǐng)求和響應(yīng)也傳到下一個(gè)頁(yè)面。需注意重定向和轉(zhuǎn)發(fā)的區(qū)別。</p><p> 2014.3
120、.5 星期三 武漢達(dá)內(nèi)培訓(xùn)中心</p><p> 今天主要是數(shù)據(jù)庫(kù)的操作和相關(guān)類編寫。這里使用的是mysql數(shù)據(jù)庫(kù),雖然對(duì)SQL Server更熟悉,但是感覺(jué)它們差別不是很大。后臺(tái)控制使用實(shí)體類+工具類來(lái)對(duì)數(shù)據(jù)庫(kù)的相應(yīng)表格進(jìn)行增刪改查操作,其中為了方便鏈接和操作,我們單獨(dú)編寫了一個(gè)工具類dao,專門進(jìn)行鏈接工作和執(zhí)行工作。</p><p> 數(shù)據(jù)庫(kù)操作主要分四步:1.加載驅(qū)動(dòng);2.獲取
121、鏈接;3.執(zhí)行sql語(yǔ)句,并返回結(jié)果集;4.釋放鏈接。為了明細(xì)系統(tǒng)結(jié)構(gòu),方便查找,我們編寫了工具類和實(shí)體類,對(duì)應(yīng)數(shù)據(jù)庫(kù)的相應(yīng)表格。例如需求分析中數(shù)據(jù)庫(kù)需要設(shè)計(jì)一個(gè)User表,來(lái)存儲(chǔ)用戶信息,其對(duì)應(yīng)的實(shí)體類是只有屬性、set和get方法的javaBean,對(duì)應(yīng)的工具類(DAO:database access object)封裝著一些方法,對(duì)實(shí)體和數(shù)據(jù)庫(kù)表進(jìn)行交互信息,如findUserByName()、findUserById()、sav
122、eUser()、modifyUserById()等。</p><p> 2014.3.6 星期四 武漢達(dá)內(nèi)培訓(xùn)中心</p><p> 在完善了數(shù)據(jù)庫(kù)鏈接和操作后,接著就是在網(wǎng)頁(yè)中進(jìn)行應(yīng)用。今天主要完成了兩項(xiàng)任務(wù):用戶詳情頁(yè)面和用戶列表頁(yè)面。Web服務(wù)器在遇到訪問(wèn)JSP網(wǎng)頁(yè)的請(qǐng)求時(shí),首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以
123、操作數(shù)據(jù)庫(kù)、重新定向網(wǎng)頁(yè)等,以實(shí)現(xiàn)建立動(dòng)態(tài)網(wǎng)頁(yè)所需要的功能。JSP與JavaServlet一樣,是在服務(wù)器端執(zhí)行的,通常返回給客戶端的就是一個(gè)HTML文本,因此客戶端只要有瀏覽器就能瀏覽。今天主要完成了兩項(xiàng)任務(wù):用戶詳情頁(yè)面和用戶列表頁(yè)面。用戶詳情頁(yè)面有三個(gè)內(nèi)容板塊:用戶個(gè)人信息、上傳圖片和查閱用戶圖片。用戶信息根據(jù)登錄名從數(shù)據(jù)庫(kù)表中查詢,然后以列表的形式顯示。用戶列表則查詢所有用戶的信息,同樣以列表的形式顯示,右邊還有一個(gè)“詳情”的鏈
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 武漢招考網(wǎng)登陸界面
- 武漢招考網(wǎng)登陸界面
- labview登陸界面課程設(shè)計(jì)
- android簡(jiǎn)單的登陸界面的設(shè)計(jì)開發(fā)
- [圖解]access數(shù)據(jù)庫(kù)也能這么做--“登陸界面”四步成
- 登陸說(shuō)明
- 登陸.txt
- 低密度水陸界面的景觀生態(tài)設(shè)計(jì)方法與途徑——以鄂爾多斯日月湖景區(qū)為例.pdf
- 后臺(tái)登陸.txt
- 后臺(tái)登陸.txt
- 后臺(tái)登陸.txt
- 后臺(tái)登陸.txt
- 后臺(tái)登陸.txt
- 后臺(tái)登陸.txt
- 后臺(tái)登陸.txt
- 后臺(tái)登陸.txt
- 登陸密碼.txt
- 登陸密碼.txt
- 登陸密碼.txt
- 臺(tái)灣醫(yī)療加速“登陸”
評(píng)論
0/150
提交評(píng)論