2015年javaee第168期就業(yè)教程_第1頁
2015年javaee第168期就業(yè)教程_第2頁
2015年javaee第168期就業(yè)教程_第3頁
2015年javaee第168期就業(yè)教程_第4頁
2015年javaee第168期就業(yè)教程_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

北京傳智播客教育HttpServletResponse鐵男北京傳智播客教育簡介Web服務(wù)器收到客戶端的http請求,會針對每一次請求,分別創(chuàng)建一個用于代表請求的request對象、和代表響應(yīng)的response對象request和response對象即然代表請求和響應(yīng),那我們要獲取客戶機提交過來的數(shù)據(jù),只需要找request對象就行了。要向客戶機輸出數(shù)據(jù),只需要找response對象就行了北京傳智播客教育HttpServletResponseHttpServletResponse對象服務(wù)器的響應(yīng)。這個對象中封裝了向客戶端發(fā)送數(shù)據(jù)、發(fā)送響應(yīng)頭,發(fā)送響應(yīng)狀態(tài)碼的方法。北京傳智播客教育HttpServletResponse北京傳智播客教育response代碼案例重定向(登陸頁面)頁面定時刷新(頁面讀秒操作)禁用瀏覽器緩存(三個頭信息)向頁面輸出中文(亂碼問題)實現(xiàn)文件下載實現(xiàn)驗證碼北京傳智播客教育response指定狀態(tài)碼&頭信息狀態(tài)碼(StatusCode)setStatus(int)常用狀態(tài)碼:200、302、304、404、500頭信息(HeaderInfo)addHeader(String,String)在原有值添加setHeader(String,String)替換原有值北京傳智播客教育response狀態(tài)碼和頭信息應(yīng)用通過response實現(xiàn)請求重定向。請求重定向指:一個web資源收到客戶端請求后,通知客戶端去訪問另外一個web資源,這稱之為請求重定向302+Location------response.sendRedirect案例:用戶登陸時,用戶名密碼錯誤,重定向回登陸頁面發(fā)送http頭,控制瀏覽器定時刷新網(wǎng)頁(refresh)多學(xué)一招:HTML<meta>標(biāo)簽來控制瀏覽器行為北京傳智播客教育Response禁用緩存發(fā)送http頭,控制瀏覽器禁止緩存當(dāng)前文檔內(nèi)容向頁面輸出時間,使用IE瀏覽器查看效果。設(shè)置三個Http頭信息禁用瀏覽器緩存Cache-Control:no-cachePragma:no-cacheExpires:Thu,01Dec199416:00:00GMT(非常特殊,轉(zhuǎn)換特定日期格式才可以)北京傳智播客教育Response向頁面輸出中文字節(jié)流輸出中文亂碼和瀏覽器的編碼有關(guān)設(shè)置瀏覽器默認打開的時候的編碼集獲得字節(jié)數(shù)組的時候,傳入一個編碼集字符流輸出中文response的字符流的緩沖區(qū)是ISO-8859-1編碼.設(shè)置response緩沖區(qū)的編碼.設(shè)置瀏覽器的默認打開的時候字符集編碼.Tip:response開發(fā)細節(jié)向客戶端輸出字符中文的簡寫方式response.setContentType("text/html;charset=UTF-8");字節(jié)流與字符流是互斥的同一個頁面只能使用一種流,不能同時向頁面響應(yīng)。使用字符流輸入數(shù)字,有可能存在問題想輸入數(shù)字時,使用字符串”1”北京傳智播客教育北京傳智播客教育response生成響應(yīng)注意事項getOutputStream和getWriter方法分別用于得到輸出二進制數(shù)據(jù)、輸出文本數(shù)據(jù)的ServletOuputStream、Printwriter對象。getOutputStream和getWriter這兩個方法互相排斥,調(diào)用了其中的任何一個方法后,就不能再調(diào)用另一方法。Servlet程序向ServletOutputStream或PrintWriter對象中寫入的數(shù)據(jù)將被Servlet引擎從response里面獲取,Servlet引擎將這些數(shù)據(jù)當(dāng)作響應(yīng)消息的正文,然后再與響應(yīng)狀態(tài)行和各響應(yīng)頭組合后輸出到客戶端。Serlvet的service方法結(jié)束后,Servlet引擎將檢查getWriter或getOutputStream方法返回的輸出流對象是否已經(jīng)調(diào)用過close方法,如果沒有,Servlet引擎tomcat將調(diào)用close方法關(guān)閉該輸出流對象。調(diào)用close的時候,應(yīng)該會調(diào)用flushBuffer

北京傳智播客教育Response文件下載超鏈接下載如果瀏覽器不能識別的格式,會彈出下載窗口。但是如果瀏覽器識別的話,會默認打開文件。后臺程序下載設(shè)置頭信息response.setHeader(“Content-Disposition”,”attachment;filename=”+文件名稱);通過response.getOutputStream()向瀏覽器端輸出北京傳智播客教育輸出驗證碼圖片的大體步驟在內(nèi)存中生成圖片可以使用BufferedImage對象該對象可以獲取畫筆對象 getGraphics()隨機生成字母或數(shù)字可以使用Random對象把生成的數(shù)字或字母寫在圖片上通過畫筆中的方法把圖片生成到頁面上可以使用ImageIO對象北京傳智播客教育輸出驗證碼圖片建立BufferedImage對象:指定圖片的長度寬度和類型BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);取得Graphics對象,用來繪制圖片

Graphicsgraphics=image.getGraphics();繪制背景顏色graphics.setColor(Color.WHITE);graphics.fillRect(0,0,width,height);繪制邊界graphics.setColor(Color.BLUE);graphics.drawRect(0,0,width-1,height-1);生成隨機數(shù)Randomrandom=newRandom();random.nextInt(n);//生成0到n的隨機數(shù)前閉后開繪制干擾線graphics.drawLine(x1,y1,x2,y2);北京傳智播客教育輸出驗證碼圖片設(shè)置字體

graphics.setFont(newFont("TimesNewRoman",Font.PLAIN,18));如果驗證碼是中文,要使用中文的字體庫通過詞庫生成隨機驗證碼內(nèi)容"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";漢字:\u4e00——\u9fa5graphics.drawString(str,x,y);設(shè)置旋轉(zhuǎn)Graphics2Dgraphics=(Graphics2D)image.getGraphics();graphics.rotate(theta,x,y);釋放此圖形的上下文以及它使用的所有系統(tǒng)資源

graphics.dispose();通過ImageIO對象的write靜態(tài)方法將圖片輸出

ImageIO.write(image,"jpg",resp.getOutputStream());北京傳智播客教育HttpServletRequest鐵男北京傳智播客教育HttpServletRequestHttpServletRequest對象代表客戶端的請求,當(dāng)客戶端通過HTTP協(xié)議訪問服務(wù)器時,HTTP請求中的所有信息都封裝在這個對象中,開發(fā)人員通過這個對象的方法,可以獲得客戶這些信息。通過Request對象進行的常用操作獲取客戶機信息獲取請求頭信息獲取請求參數(shù)利用請求域傳遞對象重定向和轉(zhuǎn)發(fā)的區(qū)別北京傳智播客教育HttpServletRequest北京傳智播客教育request獲取客戶機信息getRequestURL方法返回客戶端發(fā)出請求完整URLgetRequestURI方法返回請求行中的資源名部分getQueryString方法返回請求行中的參數(shù)部分getRemoteAddr方法返回發(fā)出請求的客戶機的IP地址getMethod得到客戶機請求方式getContextPath獲得工程虛擬目錄名稱思考:如何獲得當(dāng)前請求訪問資源路徑?北京傳智播客教育request獲取請求頭信息獲得客戶機請求頭getHeader(name)方法---StringgetHeaders(Stringname)方法---Enumeration<String>getHeaderNames方法---Enumeration<String>獲得具體類型客戶機請求頭getIntHead(name)方法---intgetDateHead(name)方法---long(日期對應(yīng)毫秒)案例:通過referer信息防盜鏈北京傳智播客教育request獲取請求參數(shù)getParameter(name)---String通過name獲得值getParameterValues---String[]通過name獲得多值checkboxgetParameterNames---Enumeration<String>獲得所有namegetParameterMap---Map<String,String[]>key:namevalue:多值數(shù)據(jù)非空校驗處理中文亂碼postsetCharacterEncoding//放在getParameter前才有效getnewString(str.getBytes(“ISO-8859-1”),”utf-8”)設(shè)置tomcatConnectorURIEncoding=“utf-8”北京傳智播客教育URL特殊字符轉(zhuǎn)義規(guī)則常用轉(zhuǎn)義規(guī)則空格換成加號(+)+換成%2B正斜杠(/)分隔目錄和子目錄換成%2F問號(?)分隔URL和查詢換成%3F百分號(%)制定特殊字符換成%25#號指定書簽換成%23&號分隔參數(shù)換成%26.URLEncoder和.URLDecoder北京傳智播客教育request利用請求域傳遞對象request對象同時也是一個域?qū)ο?,開發(fā)人員通過request對象在實現(xiàn)轉(zhuǎn)發(fā)時,把數(shù)據(jù)通過request對象帶給其它web資源處理setAttribute方法getAttribute方法removeAttribute方法getAttributeNames方法request對象提供了一個getRequestDispatcher方法,該方法返回一個RequestDispatcher對象,調(diào)用這個對象的forward方法可以實現(xiàn)請求轉(zhuǎn)發(fā),從而共享請求中的數(shù)據(jù)北京傳智播客教育請求重定向和請求轉(zhuǎn)發(fā)的區(qū)別

RequestDispatcher.forward方法只能將請求轉(zhuǎn)發(fā)給同一個WEB應(yīng)用中的組件;而HttpServletResponse.sendRedirect方法還可以重定向到同一個站點上的其他應(yīng)用程序中的資源,甚至是使用絕對URL重定向到其他站點的資源。如果傳遞給HttpServletResponse.sendRedirect

方法的相對URL以“/”開頭,它是相對于服務(wù)器的根目錄;如果創(chuàng)建RequestDispatcher對象時指定的相對URL以“/”開頭,它是相對于當(dāng)前WEB應(yīng)用程序的根目錄。調(diào)用HttpServletResponse.sendRedirect方法重定向的訪問過程結(jié)束后,瀏覽器地址欄中顯示的URL會發(fā)生改變,由初始的URL地址變成重定向的目標(biāo)URL;調(diào)用RequestDispatcher.forward

方法的請求轉(zhuǎn)發(fā)過程結(jié)束后,瀏覽器地址欄保持初始的URL地址不變。HttpServletResponse.sendRedirect方法對瀏覽器的請求直接作出響應(yīng),響應(yīng)的結(jié)果就是告訴瀏覽器去重新發(fā)出對另外一個URL的訪問請求;RequestDispatcher.forward方法在服務(wù)器端內(nèi)部將請求轉(zhuǎn)發(fā)給另外一個資源,瀏覽器只知道發(fā)出了請求并得到了響應(yīng)結(jié)果,并不知道在服務(wù)器程序內(nèi)部發(fā)生了轉(zhuǎn)發(fā)行為。RequestDispatcher.forward方法的調(diào)用者與被調(diào)用者之間共享相同的request對象和response對象,它們屬于同一個訪問請求和響應(yīng)過程;而HttpServletResponse.sendRedirect方法調(diào)用者與被調(diào)用者使用各自的request對象和response對象,它們屬于兩個獨立的訪問請求和響應(yīng)過程。北京傳智播客教育Request的開發(fā)細節(jié)使用轉(zhuǎn)發(fā)的方法后,response的緩沖區(qū)會被清空。response.getWriter().write("aaa");request.getRequestDis

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論