java學習筆記—HttpServletResponse(23)

來源:互聯網
上載者:User

標籤:

擷取用戶端資訊

1 編寫ClientServlet.java

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setCharacterEncoding("utf-8");request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();// 擷取用戶端資訊out.println("getMethod(): "+request.getMethod()+"<br/>");out.println("getRequestURL(): "+request.getRequestURL()+"<br/>");out.println("getRequestURI(): "+request.getRequestURI()+"<br/>");out.println("getProtocol(): "+request.getProtocol()+"<br/>");out.println("getQueryString(): "+request.getQueryString()+"<br/>");out.println("getRemoteAddr(): "+request.getRemoteAddr()+"<br/>");out.println("getRemoteHost(): "+request.getRemoteHost()+"<br/>");out.println("getRemotePort(): "+request.getRemotePort()+"<br/>");out.println("getServletPath(): "+request.getServletPath()+"<br/>");out.println("getContextPath(): "+request.getContextPath()+"<br/>");}

以上的方法可以發現通過使用request可以擷取servlet和servletContext的路徑。那麼在實際的開發中我們的網站的名字一般都需要進行改變。因此以後在web項目中如果使用到網站名那麼一定要使用request.getContextPath()擷取出來而不是寫死。這樣可以提高後期的維護性。

2 擷取伺服器資訊

編寫一個GetServerInfo.java

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setCharacterEncoding("utf-8");request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();// 擷取用戶端資訊out.println("getLocalAddr(): " + request.getLocalAddr() + "<br/>");out.println("getLocalName(): " + request.getLocalName() + "<br/>");out.println("getLocalPort(): " + request.getLocalPort() + "<br/>");}

3 請求轉寄

  1. 訪問路徑

http://localhost:8080/demo1?name=jack&password=root

實現一個處理使用者請求的Demo1Servlet

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {        // 擷取使用者的請求的參數        String name = request.getParameter("name");        String psw = request.getParameter("password");        // 判斷使用者輸入的資訊        if(name != null && psw != null && "jack".equals(name) && "root".equals(psw)){            // 登陸成功需要將使用者資訊傳遞給歡迎頁面            request.setAttribute("name", name);            // 登陸成功將頁面轉寄到歡迎頁面            request.getRequestDispatcher("/demo2").forward(request, response);        }else{         request.getRequestDispatcher("/regist.html").forward(request, response);        }}

  2. 編寫一個轉寄後的Demo2Servlet

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {        response.setCharacterEncoding("utf-8");        request.setCharacterEncoding("utf-8");        response.setContentType("text/html;charset=utf-8");        PrintWriter out = response.getWriter();        // 擷取轉寄過來的資料        String name = (String) request.getAttribute("name");        out.println("歡迎光臨:"+name);    }
 轉寄和重新導向的區別
1.    實現方式不同轉寄  request.getRequestDispatcher("/regist.html").forward(request, response);重新導向 response.sendRedirect(“/day07/regist.html”)2.    請求次數不同轉寄只發送一次請求重新導向發送2次請求3.    地址欄變化不同轉寄地址欄不變重新導向地址欄變化4. 轉寄的時候可以通過request對象攜帶資料。
Web中路徑問題

如果在web項目中需要使用路徑,如:轉寄、重新導向還有超連結等。

原則:”一切web路徑以/開始”

那麼/的路徑一定是相對路徑,那麼/到底代表哪一個相對路徑是需要智慧的。

如果該路徑是給伺服器使用的,那麼/代表當前網站的根目錄。如果該路徑是給瀏覽器使用的,那麼/代表當前Tomcat的webapps目錄。

 

java學習筆記—HttpServletResponse(23)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.