日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5.Servlet 对象(request-response)

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

?


/*ServletResponse*/

/*responese常見應用*/

  1.向客戶端輸出中文數據 (分別以OutputStream 和 PrintWriter輸出)?

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

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

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

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

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

?

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

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

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

  3.Servlet的service方法結束后,Servlet引擎將檢查getWriter或getOutputStream方法返回的輸出流對象是否已經調用過close方法。

   如果沒有,Servlet引擎將調用close方法關閉輸出流對象。

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

4./*Request*/

request的常用方法:

  (獲得客戶機信息) (URL(網絡上的web應用)和URI(所有web應用)的關系 : 狗和動物)

  getRequestURL 返回客戶端發出請求時的完整URL

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

  getQueryString 返回請求行中的參數部分

  getRemoteAddr 返回發出請求的客戶機的IP地址

  getRemoteHost 返回發出請求的客戶機的完整主機名

  getRemotePort 返回客戶機所使用的網絡端口號

  getLocalAddr 返回web服務器的IP地址

  getLocalName 返回web服務器的主機名

  getMethod 得到客戶機請求方式

  /*request獲取請求頭和請求數據 RequestDemo2 test.html*/


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


  /*request亂碼問題*/

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

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

?

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

  servlet收到請求 返回數據,數據封裝到javabean中,javabean中的數據存到request域中,通過轉發(forword)技術將轉到jsp頁面,jsp頁面從request域中取出數據顯示


請求轉發的細節: ( /*只有在客戶端沒有輸出時,才可以調用forword方法*/)

1.forword方法用于將請求轉發到 RequestDispatcher 對象封裝的資源

2.如果在forword方法之前,在servlet程序寫入的部分內容已經被真正傳遞到了客戶端 (流的關閉以及多個forword跳轉都可能導致),forword方法將拋出異常?

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

 forword方法就可以被正常執行,原來寫入到輸入緩沖區的內容將被清空

  例:String value = "aaaa";

  response.getWriter().write(value); //此時 數據還沒有寫入到客戶機中,如果這個時候forword的話,response中的內容將被清空,轉發正常執行

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

?

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

1 //用include實現頁面包含(包含一些公共的頁面) (一般在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")) { //如果頁面時直接訪問,沒有經過跳轉||或者不是以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);}}

?

轉載于:https://www.cnblogs.com/xuzekun/p/7356872.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。