Web常用對象(1)

來源:互聯網
上載者:User

標籤:擷取域對象   封裝   使用   常用方法   htm   設定   oid   inpu   地址   

一、向伺服器發起請求的方式

  1、地址欄輸入(http://ip:port/path)

  2、超連結

  3、Form表單提交

  4、ajax

    通過ajax發出的請求屬於非同步請求,能實現局部重新整理的效果,通過JQuery中的ajax(),get(),post(),getJson()等方法都能發出請求。

  5、請求轉寄(在下面會詳細介紹)

  6、重新導向(在下面會詳細介紹)

 

二、HttpServletRequest對象

  1、介紹

    ·主要作用是用來接收用戶端發送過來的請求資訊,例如請求參數,發送的頭資訊等。

    ·service方法的形參接收的是HTTPServletRequest介面的執行個體化對象,表示該對象主要用在HTTP協議上,是由Tomcat封裝好傳遞過來的

    ServletRequest只有一個子介面HTTPServletRequest介面,但為什麼不將兩個介面合在一起呢?

      原因是現在主要用的協議是HTTP協議,如果以後出現新的協議,想支援新的協議,只要繼承ServletRequest介面就行了。

 

  2、常用形式

    1)常用方法

      

 

 

    2)擷取要求標頭

      

 

    3)擷取用戶端請求參數(用戶端提交的資料)

      

 

  3、請求亂碼的解決方式

    req.setCharacterEncoding("UTF-8");

      這種方法只針對POST有效,必須在接收所有資料前設定

    new String(req.getParameter(name).getBytes("ISO-8859"),"UTF-8");

      這種方式對任何請求都有效,但Tomcat8起,以後的GET方式請求不會出現亂碼,再設定反而會出現亂碼。

          

 

 

 

  4、請求轉寄

      請求轉寄是一種伺服器的行為,當用戶端請求到達後,伺服器進行轉寄,此時會將請求對象進行儲存,地址欄中的URL地址不會改變,

    得到響應後,伺服器端再將響應發送給用戶端,從始至終只有一個請求發出

      

 

  5、Request作為域對象

     作用範圍只在一次請求中有效,經過請求轉寄request域的資料依然存在。

      request.setAttribute(); 設定域對象的內容

      request.getAttribute(); 擷取域對象內容

      request.removeAttribute(String name); 刪除域對象內容

 

三、HTTPServletResponse對象

  1、介紹

    HTTPServletResponse主要功能是伺服器對用戶端的請求進行相應,將Web伺服器處理後的結果返回給用戶端

  

  2、常用方法

    

   

  3、重新整理和頁面自動跳轉

    response頭資訊重新整理

    

    HTML方式重新整理

    

 

  4、資料響應

    getWrite()擷取字元流(只能響應回字元)

      

    getOutputStream()擷取位元組流(能響應一切資料)

      

 

   5、亂碼解決

    resp.setCharacterEncoding("UTF-8") 服務端解碼方式

    resp.setHeader("content-type", "text/html;charset=UTF-8"); 用戶端解碼方式

    要保持發送端和接收端一致,所以兩種方式要同時使用

    可以同時指定伺服器和用戶端的方式:

      resp.setContentType("text/html;charset=utf-8");

 

  6、響應圖片

    

public class Servlet02 extends HttpServlet{        /**     * 響應圖片     */    @Override    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        //設定圖片響應類型        resp.setContentType("image/jpeg");        //得到伺服器的真實路徑        String realPath=req.getServletContext().getRealPath("/");        System.out.println(realPath);                //得到圖片路徑        String filePath=realPath+"s1.jpg";                //通過圖片路徑得到file對象        File file=new File(filePath);                //判斷file對象是否存在,並且是一個標準檔案        if (file.exists() && file.isFile()) {                        //得到輸出資料流            ServletOutputStream out=resp.getOutputStream();            //得到輸入資料流            InputStream is=new FileInputStream(file);            byte[] buf=new byte[1024];            int len=0;            while ((len=is.read(buf))!=-1) {                out.write(buf,0,len);            }            is.close();            out.close();        }else {            resp.setContentType("text/html;charset=UTF-8");            resp.getWriter().write("檔案不存在");        }    }}

 

  7、重新導向跳轉

    重新導向是一種伺服器指導,用戶端的行為。用戶端發出第一個請求,被伺服器接收,經過處理伺服器進行響應,與此同時,伺服器給用戶端一個地址(下次請求的地址 resp.sendRedirect("url");),當用戶端接收到響應後, 立刻、馬上、自動根據伺服器 給的地址進行請求的發送第二個請求,伺服器接收請求並作出響應,重新導向完成。從描述中可以看出重新導向當中有兩個請求存在,並且屬於用戶端行為

   實現方式 

 

   請求轉寄和重新導向比較:

    

 

Web常用對象(1)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.