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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

03 HttpServletRequest_HttpServletResponse

發布時間:2024/1/17 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 03 HttpServletRequest_HttpServletResponse 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
HttpServletRequest:一次來自客戶端的請求的相關信息 請求行 request.getMethod() 獲取http請求方式 request.getRequestURI() 獲取統一資源標識符 request.getRequestURL() 獲取統一資源定位符 request.getQueryString() 獲取查詢字符串 request.getProcotol() 獲取協議版本 request.getScheme() 獲取協議名 請求頭 request.getHeader() 獲取請求頭信息 request.getHeaderNames() 獲取所有請求頭的名字 實體內容 request.getParameter() 獲取請求實體中的參數、或URL后的請求參數 request.getInputStream() 獲取請求參數,當表單提交的enctype="multipart/form-data" 網絡相關信息 request.getRemoteAddr() 獲取客戶端的IP地址 request.getRemotePort() 獲取客戶端的端口號 request.getLocalAddr() 獲取服務器端的IP地址 request.getLocalPort() 獲取服務器端的端口號 HttpServletResponse:一次發送給客戶端的響應的相關信息 狀態行 應答頭 response.setHeader() 設置應答頭 response.setContentType("text/html; charset=utf-8") 設置響應內容及字符集 響應實體 response.getWriter() 獲取打印流,輸出字符數據 response.getOutputStream() 獲取字節輸出流,輸出二進制數據 一、客戶端請求服務器的數據有亂碼 1.get方式請求 ①修改tomcat/conf/server.xml,在<Connector> 標簽中添加屬性useBodyEncodingForURI="true" ②在獲取請求數據之前,設置 request.setCharacterEncoding("utf-8"); 2.post方式請求 在獲取請求數據之前,設置 request.setCharacterEncoding("utf-8"); 二、服務器返回給客戶端的數據有亂碼 response.setContentType("text/html; charset=utf-8"); 請求轉發 request.getRequestDispathcer("path").forward(reqeust,response); 請求轉發的特點: 1.地址欄沒有發生變化 2.用戶只發起了一次請求 3.請求轉發只能轉發本服務器以內的資源 4.由于請求是同一個對象,所以可以利用該request做servlet之間數據的傳輸 重定向 response.sendRedirect("path") 重定向的特點: 1.地址欄會發生改變 2.用戶發起了兩次請求 3.重定向可以訪問服務器以外的資源 4.重定向由于請求多次的,所以HttpServletRequest不是同一個對象,故不能使用它傳遞數據 一、分析 1.找出一個url中的項目名稱 項目名稱前面的“/”是服務器地址,例:http://127.0.0.1:8080/ 項目名稱后面的“/”是項目地址,例:http://127.0.0.1:8080/proejctname/ 二、判斷 1.判斷一次請求行為是誰發出的 如果是瀏覽器行為,則表示項目名稱前面的“/”,即服務器地址 如果是服務器內部行為,則表示項目名稱后面的“/”,即項目地址 1.服務器內部行為:請求轉發 2.瀏覽器行為:重定向、頁面中form提交、頁面中a標簽、js中通過location.href定位一個路徑 Cookie:在瀏覽器中保存用戶的信息 使用:由服務器創建,發送到瀏覽器保存,之后隨著請求發回到服務器 1.創建cookie Cookie cookie = new Cookie("name","value"); 2.發送cookie到瀏覽器 response.addCookie(cookie對象); 3.獲取來自客戶端的cookie Cookie[] cookies = request.getCookies(); 使用注意: 1.cookie第一次是由servlet發送到瀏覽器中,第一次不能獲取cookie 2.不同的瀏覽器存放的cookie不是同一個 3.如果設置了cookie的maxage,則cookie會保存在瀏覽器所在電腦的硬盤上,如果沒設置該屬性,則保存在瀏覽器的內存中 Session:在服務器中保存用戶信息 使用:在服務器端創建Session,來保存當前訪問服務器的用戶的信息 1.獲取session(如果已經創建了session,則返回當前session)或創建session: HttpSession session = request.getSession(); 2.設置session最大不活躍時間 session.setMaxInactiveInteval() //以秒為單位 3.使用session保存信息 session.setAttribute(String key,Object value); session.getAttribute(String key); 4.立即銷毀session session.invalidate(); HttpServletRequest:封裝了一次來自客戶端的Http的請求信息 請求消息包含幾個部分? 1請求行 private void getRequestLine(HttpServletRequest request,HttpServletResponse response) { //請求方式 String method = request.getMethod();System.out.println(method); //資源路徑String uri =request.getRequestURI();String url=request.getRequestURL().toString();System.out.println(uri);System.out.println(url); //請求參數字符串String queryString =request.getQueryString();System.out.println(queryString); //協議及版本號String protocol = request.getProtocol();System.out.println(protocol);String scheme = request.getScheme();System.out.println(scheme);}

?

2請求頭 private void getRequestHead(HttpServletRequest request,HttpServletResponse response) {// 根據header的key獲取其valueString user_agent = request.getHeader("User-Agent");System.out.println(user_agent);// 查詢header所有的keynameEnumeration<String> enu = request.getHeaderNames();while (enu.hasMoreElements()) {System.out.println(enu.nextElement());}}

?

3 實體內容 private void getRequestBody(HttpServletRequest request,HttpServletResponse response) throws IOException {// 獲取請求實體中的數據// 請求實體中的數據有三種形式:// 1.application/x-www-form-urlencoded// 2.multipart/form-data// 3.text/plain// 對于1、3// getParameter() //無論post方式還是get方式都可以獲取用戶的請求數據String value = request.getParameter("username");System.out.println(value);String coment = request.getParameter("coment");System.out.println(coment);ServletInputStream in= request.getInputStream();FileOutputStream out = new FileOutputStream("d:\\1.txt");int len = 0;byte[] flush = new byte[1024];while ((len = in.read(flush)) != -1) {out.write(flush, 0, len);}out.close();in.close();}

?

4網絡信息 private void getIntenetInfo(HttpServletRequest request,HttpServletResponse response) {System.out.println("訪問服務器的地址為:" + request.getRemoteAddr() + ":"+ request.getRemotePort());System.out.println("服務器的本地地址為:" + request.getLocalAddr() + ":"+ request.getLocalPort());}}

?

響應消息分為幾步? public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 狀態行// 協議版本 http狀態碼 htt狀態描述// 應答頭// 響應實體// 設置應答頭response.setHeader("content-type", "image/jpeg; charset=utf-8");// 向用戶輸出字符數據/** PrintWriter out = response.getWriter(); out.write("<h1>你好世界!</h1>");* out.flush(); out.close();*/// 我們只能打開一個流為用戶輸出數據FileInputStream in = new FileInputStream("D:\\1.jpg");ServletOutputStream out = response.getOutputStream();int len = 0;byte[] flush = new byte[1024 * 1024];while ((len = in.read(flush)) != -1) {out.write(flush, 0, len);}out.flush();out.close();in.close();}

?

轉載于:https://www.cnblogs.com/aknife/p/10846819.html

總結

以上是生活随笔為你收集整理的03 HttpServletRequest_HttpServletResponse的全部內容,希望文章能夠幫你解決所遇到的問題。

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