日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

5.Servlet 对象(request-response)

發(fā)布時間:2025/3/17 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5.Servlet 对象(request-response) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?


/*ServletResponse*/

/*responese常見應(yīng)用*/

  1.向客戶端輸出中文數(shù)據(jù) (分別以O(shè)utputStream 和 PrintWriter輸出)?

  2.文件下載和中文文件的下載 ( /*ResponseDemo3*/)

  3.完成類似驗證碼的功能 (輸出一張隨機圖片)

  4.用refresh控制瀏覽器自動刷新?

  5.控制瀏覽器緩存(保存一定時間)

  6.實現(xiàn)重定向 (一般能不采用 就 不采用)(因為重定向是轉(zhuǎn)到其他地址,所以重定向的地址需要比 轉(zhuǎn)發(fā) 的地址 /*多上web應(yīng)用名稱*/)

?

Response的小細節(jié):
  1.getOutputStream 和 getWriter方法分別用于得到輸出二進制數(shù)據(jù)、輸出文本數(shù)據(jù)的ServletOutputStream、PrintWriter對象

  2.getOutputStream 和 getWriter 這兩個方法互相排斥,調(diào)用了其中的任何一個方法后,就不能再調(diào)用另外一個方法

  (轉(zhuǎn)到另外的頁面上,如果是通過重定向轉(zhuǎn)的,就可以同時使用(因為重定向 向服務(wù)器發(fā)送了兩次請求,有兩個response,兩次調(diào)用的是不同的))

  3.Servlet的service方法結(jié)束后,Servlet引擎將檢查getWriter或getOutputStream方法返回的輸出流對象是否已經(jīng)調(diào)用過close方法。

   如果沒有,Servlet引擎將調(diào)用close方法關(guān)閉輸出流對象。

  (即程序里面可以不用去 close )

4./*Request*/

request的常用方法:

  (獲得客戶機信息) (URL(網(wǎng)絡(luò)上的web應(yīng)用)和URI(所有web應(yīng)用)的關(guān)系 : 狗和動物)

  getRequestURL 返回客戶端發(fā)出請求時的完整URL

  getRequestURI 返回請求行中的資源名部分

  getQueryString 返回請求行中的參數(shù)部分

  getRemoteAddr 返回發(fā)出請求的客戶機的IP地址

  getRemoteHost 返回發(fā)出請求的客戶機的完整主機名

  getRemotePort 返回客戶機所使用的網(wǎng)絡(luò)端口號

  getLocalAddr 返回web服務(wù)器的IP地址

  getLocalName 返回web服務(wù)器的主機名

  getMethod 得到客戶機請求方式

  /*request獲取請求頭和請求數(shù)據(jù) RequestDemo2 test.html*/


  /*通過表單搜集用戶數(shù)據(jù)*/ /*主要是HTML方面的 暫時先不寫了*/


  /*request亂碼問題*/

    通過表單提交中文字符產(chǎn)生的亂碼問題 : 1. get(手工) 2.post

    通過超鏈接提交中文字符 : 想要避免亂碼問題 (手工)

?

/*MVC設(shè)計*/ //MVC (m model (javabaen) ; v view (jsp) ; c controller (servlet) ) 處理請求的是處理請求的 封裝數(shù)據(jù)的是封裝數(shù)據(jù)的 顯示數(shù)據(jù)的是顯示數(shù)據(jù)的

  servlet收到請求 返回數(shù)據(jù),數(shù)據(jù)封裝到j(luò)avabean中,javabean中的數(shù)據(jù)存到request域中,通過轉(zhuǎn)發(fā)(forword)技術(shù)將轉(zhuǎn)到j(luò)sp頁面,jsp頁面從request域中取出數(shù)據(jù)顯示


請求轉(zhuǎn)發(fā)的細節(jié): ( /*只有在客戶端沒有輸出時,才可以調(diào)用forword方法*/)

1.forword方法用于將請求轉(zhuǎn)發(fā)到 RequestDispatcher 對象封裝的資源

2.如果在forword方法之前,在servlet程序?qū)懭氲牟糠謨?nèi)容已經(jīng)被真正傳遞到了客戶端 (流的關(guān)閉以及多個forword跳轉(zhuǎn)都可能導(dǎo)致),forword方法將拋出異常?

3.如果在調(diào)用forword方法之前,向servlet引擎的緩沖區(qū)(response)中寫入了內(nèi)容,只要寫入到緩沖區(qū)的內(nèi)容還沒有真正輸出到客戶端,

 forword方法就可以被正常執(zhí)行,原來寫入到輸入緩沖區(qū)的內(nèi)容將被清空

  例:String value = "aaaa";

  response.getWriter().write(value); //此時 數(shù)據(jù)還沒有寫入到客戶機中,如果這個時候forword的話,response中的內(nèi)容將被清空,轉(zhuǎn)發(fā)正常執(zhí)行

  request.getRequestDispatcher("/index.jsp").forward(request, response);

?

request實現(xiàn)頁面包含 (用include實現(xiàn)頁面包含(包含一些公共的頁面) ,一般不使用,因為這是動態(tài)包含(一般在jsp中做靜態(tài)包含更好 ))?

1 //用include實現(xiàn)頁面包含(包含一些公共的頁面) (一般在jsp中做包含 ) 2 public class RequestDemo6 extends HttpServlet { 3 4 public void doGet(HttpServletRequest request, HttpServletResponse response) 5 throws ServletException, IOException { 6 7 request.getRequestDispatcher("/public/Head.jsp").include(request, response); 8 String value = "body"; 9 response.getWriter().write(value); 10 request.getRequestDispatcher("/public/Foot.jsp").include(request, response); 11 } 12 13 public void doPost(HttpServletRequest request, HttpServletResponse response) 14 throws ServletException, IOException { 15 doGet(request, response); 16 } 17 18 }

?

?

web工程中各類地址的寫法( /*看地址是給誰用的*/)

?

利用referer防盜鏈

//利用referer防盜鏈 public class RequestDemo7 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String referer = request.getHeader("referer");if(referer == null || !referer.startsWith("localhost")) { //如果頁面時直接訪問,沒有經(jīng)過跳轉(zhuǎn)||或者不是以localhost開頭response.sendRedirect("/day06/index.jsp");return;}String data = "日記";response.getWriter().write(data);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

?

轉(zhuǎn)載于:https://www.cnblogs.com/xuzekun/p/7356872.html

總結(jié)

以上是生活随笔為你收集整理的5.Servlet 对象(request-response)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。