国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

JSP Servlet中Request與Response所有成員方法的研究

2019-11-14 22:27:48
字體:
來源:轉載
供稿:網友
jsp Servlet中Request與Response所有成員方法的研究

  HttpServletRequest與HttpServletResponse作為Servlet中doGet、doPost等方法中傳遞的參數,承接了Http請求與響應中的大部分功能,請求的解析與響應的返回都需要靠這兩個對象進行,他們中的所有方法及功能在下邊總結了一下,希望能對學習java Web開發有所幫助。

  1、HttpServletRequest:

    /*     * 記錄各個request.get的值     * request.getAsyncContext();AsyncContext     * 獲取異步傳輸的文本內容     * request.getAttribute(String);Object     * Attribute與Parameter不同,Attr是在程序里用SetA設置進去的,而Par是接收網頁的參數     * 多用于session的設值,session.setA,可以設置自己的類型,getP只能接收String,而getA可以為object     * request.getAttributeNames();Enumeration<String>     * 獲取一個枚舉類型,hasmoreelement,nextelement     * request.getAuthType();String     * 返回身份驗證方法的名稱,basic,SSL,form,client_cert和digest,若沒有身份驗證則為null     * AuthType可在web.xml中配置,使用<login-config><auth-method>xx<real-name>xxx來配置     * 一般用于遠程網頁鏈接,即輸入網頁地址,彈出一個登陸界面,那里的時候才會用     * 讀取文件頭中的Authorization信息     * request.getCharacterEncoding();String     * 返回網頁使用的編碼,在網頁的charset中的值     * request.getContentLength();int     * 只用于POST請求,表示所發送數據的字節數     * request.getContentLengthLong();long     * 同上,用于數據量非常大時,long八個字節     * request.getContentType();String     * 獲取content-type,包括編碼。<meta content="text/html; charset=gb2312" http-equiv="Content-Type"/>     * Content-Type,用于定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個文件     * request.getContextPath();String     * 獲取項目的根目錄名,如本項目應該是/MyTestWeb。返回指定servlet上下文(web應用)的URL的前綴。     * 用絕對路徑時,可以使用getRealPath()(不推薦),request.getSession().getServletContext().getRealPath("/")     * request.getCookies();Cookie[]     * 很明顯,返回網頁的cookies,數組形式cookie是名稱+值的形式保存的     * request.getDateHeader("String");long     * 用于將指定頭信息的部分轉換成方便轉換為時間類型的長整數型,簡化getHeaders     * request.getDispatcherType();DispatcherType     * 未知...     * request.getHeader("headname");String     * 獲取指定頭信息     * request.getHeaderNames();Enumeration<String>     * 獲取名字的枚舉,用于遍歷     * request.getHeaders("headersname");Enumeration<String>     * 獲取一個name的多個值序列,返回請求給出的指定類型的所有HTTP頭標的名稱的枚舉值,它對具有多取值的頭標非常有用。     * request.getInputStream();ServletInputStream繼承自io.InputStream     * 獲取請求內容,可以獲取post方法在網頁中通過send傳遞的內容,但是要通過InputStreamReader實例化     * 同時InputStreamReader也不能直接被讀取為字符串,要使用BufferedReader實例化InputStreamReader     * 之后就可以使用BufferedReader的readline來獲取中間的數據了。     * 或者直接使用InputStream的read方法寫給read的參數,byte數組     * 該方法只能讀取一次,因為是流,所以讀完就沒了     * request.getIntHeader("head");int     * 從頭內容獲取數值     * request.getLocalAddr();String     * 獲取本地地址,根據訪問方法不同而不同,為127.0.0.1或者公網ip     * request.getLocale();Locale(util中)     * 獲取本地位置信息,若ZHCN等等     * request.getLocales();Enumeration<Locale>     * 有多個位置信息時獲取枚舉     * request.getLocalName();String     * 獲取本地IP的名稱,如127.0.0.1就是localhost     * request.getLocalPort();int     * 獲取端口號,本應用就是8081     * request.getMethod();String     * 獲取Http方法,有get,head,put,delete,post,options     * request.getParameter("code");String     * 獲取提交參數,即網址?后面的內容,一一對應關系。即便是POST,這個也只能獲取?后面的參數     * POST與GET的不同是可以send里面寫內容,網址里面傳遞的參數還是一樣的     * request.getParameterMap();Map<String,String[]>     * 返回類型是String[]的原因是參數名稱有可能相同,如果用getPara返回同名參數多個值的會把各個值結合起來     * PS:遍歷Map的方法,Set<Entry<String, String[]>> set = map.entrySet();先獲取EntrySet     * 然后獲取EntrySet的迭代器Iterator<Entry<String, String[]>> it = set.iterator();     * 接著使用迭代的getNext來獲取各個元素Entry<String, String[]> entry = it.next();     * 最后使用Entry.getvalue獲取字符串數組     * request.getParameterNames();Enumeration<String>     * 獲取參數名的枚舉     * request.getParameterValues("code");String[]     * 獲取同名參數的多個值     * request.getPart("file");Part     * 用于上傳文件,一個Part為一個文件,mime類型為multipart/form-data     * 程序中需要添加@MultipartConfig注解     * request.getParts();Collection<Part>     * 獲取一個Part的集合,用于上傳多個文件     * request.getPathInfo();String     * 返回在URL中指定的任意附加路徑信息。不帶參數,一般是相對于Servlet的路徑     * pathinfo返回的字符串是經過Servlet服務器URL Decode過的。     * 輸出:URL中Servlet路徑之后、查詢字符串之前的那部分。     * request.getPathTranslated();String     * 映射到服務器實際路徑之后的路徑信息。     * request.getPRotocol();String     * 獲取協議信息和版本號,即HTTP/1.1     * request.getQueryString();String     * 這是字符串形式的附加到URL后面的查詢字符串,數據仍舊是URL編碼的。     * 在Servlet中很少需要用到未經解碼的數據,一般使用getParameter訪問各個參數。     * request.getReader();BufferedReader     * 獲取BufferedReader,和inputStream那一大堆獲取的內容一樣。。。     * request.getRealPath("/");String     * 獲取絕對路徑,被廢棄了,請使用request.getSession().getServletContext().getRealPath("/")     * request.getRemoteAddr();String     * 客戶端的IP     * request.getRemoteHost();String     * 客戶端的主機名     * request.getRemotePort();int     * 客戶端的端口號     * request.getRemoteUser();String     * 客戶端的用戶名     * request.getRequestDispatcher("");RequestDispatcher     * 請求轉發,獲取請求過來的地址,與該地址共享一個Request     * request.getRequestedSessionId();String     * 返回這個請求相應的session id     * request.getRequestURI();String     * 獲得請求URL,不包含請求內容,不包含域名     * request.getRequestURL();StringBuffer     * 獲取URL,包含域名,不包含請求內容     * 未被Servlet服務器URL Decode過。     * request.getScheme();String     * 返回協議名稱,http     * request.getServerName();String     * 獲得服務器名,本地IP     * request.getServerPort();int     * 獲取服務器端口號     * request.getServletContext();ServletContext     * 獲取該Servlet的相關信息,getServletConfig().getServletContext().getServerInfo()     * request.getServletPath();String     * URL中調用Servlet的那一部分,不包含附加路徑信息和查詢字符串。     * request.getSession();HttpSession     * 獲取Session對話,用于與網頁通信,很有用     * equest.getSession(boolean);HttpSession     * request.getSession(true):若存在會話則返回該會話,否則新建一個會話。     * request.getSession(false):若存在會話則返回該會話,否則返回NULL     * request.getUserPrincipal();Principal     * 返回一個java.security.Principal  對象,該對象包含當前授權用戶的名稱     * 使用request.getUserPrincipal().getName()得到用戶名     * 沒有通過認證就沒有返回值,是用戶登錄后才有值的,通過了JAAS認證,也就是登錄     *      * request.authenticate(HttpServletResponse response);boolean     * 證明是真實的、可靠的或有效的;鑒定,使生效     * request.changeSessionId();String     * Change the session id of the current session associated with this request and return the new session id.     * request.isAsyncStarted();boolean     * 異步傳輸是否開始     * request.isAsyncSupported();boolean     * 是否支持異步傳輸     * isRequestedSessionIdFromCookie();boolean     * SessionId是否是從cookies中獲得的     * request.isRequestedSessionIdFromUrl();boolean     * SessionId是否是從URL中獲取的,已廢棄     * request.isRequestedSessionIdFromURL();boolean     * 同上,這個沒廢棄     * request.isRequestedSessionIdValid();boolean     * 檢查SessionId是否是有效的     * request.isSecure();boolean     * 是否是安全的,即是否使用了安全協議,如https     * request.isUserInRole("role");boolean     * 判斷用戶是否是某個種類的角色,類型可以在web.xml中配置(tomcat-users.xml)     * request.login("user", "passWord");void     * 使用用戶名和密碼進行登錄     * request.logout();void     * 用戶登出     * request.notify();request.notifyAll();void     * 用于線程操作,詳細見教材     * request.removeAttribute("at");void     * 刪除某個屬性值,對應set     * request.setAttribute("at", request);void     * 設置某個屬性值     * request.setCharacterEncoding("utf-8");void     * 設置獲取各個字符時使用的編碼方式,應與網頁的編碼方式一樣     * 僅僅只適用于設置post提交的request body的編碼而不是設置get方法提交的queryString的編碼。     * 該方法告訴應用服務器應該采用什么編碼解析post傳過來的內容。     * request.startAsync(request, response);void     * 開始異步傳輸,可以不帶參數     * request.upgrade();void     * 開始更新?     * request.wait(12);     * 實現了線程的類都有該方法,用于等待     */

  2、HttpServletResponse

/*     * response對象     * response.addCookie(new Cookie("a","aa"));void     * 增加cookie     * response.addDateHeader("date", 23456789l);void     * 在頭部增加日期     * response.addHeader("asf", "sff");void     * 增加頭部信息     * response.addIntHeader("fsf", 12);void     * 在頭部增加數值類型     * response.encodeRedirectUrl("utf-8");廢棄     * response.encodeRedirectURL("utf-8");String     * 通過指定的編碼對URL進項編碼,并攜帶sessionid,跨應用     * response.encodeUrl("utf-8");廢棄     * response.encodeURL("utf-8");String     * 通過指定的編碼對URL進項編碼,并攜帶sessionid,本應用     * 假如有sessionId,且不是從cookie中獲得的,就放到url尾部,否則直接返回原url。     * response.flushBuffer();vodi     * 立即發送緩沖區字符給客戶端即瀏覽器     * response.getBufferSize();int     * 獲取緩沖區大小     * response.getCharacterEncoding();String     * 獲取編碼類型     * response.getContentType();String     * 獲取Content的MIME類型和編碼     * response.getHeaderNames();Collection<String>     * 獲取所有Header的name列表     * response.getHeaders("aa");Collection<String>     * 獲取所有aa的頭的值列表     * response.getLocale();Locale     * 獲取本地信息,如zhcn     * response.getOutputStream();ServletOutputStream繼承自OutputStream     * 獲取輸出流,和inputStream對應,bufferedReader和printWriter對應     * response.getStatus();int     * 獲取response的狀態碼,有200,301,404,500     * response.getWriter();PrintWriter     * 獲取一個PrintWriter,用于向response返回數據,從而向客戶端返回數據,比Stream使用方便     * response.isCommitted();boolean     * 調用PrintWriter對象的close()方法關閉底層輸出流,方法在關閉輸出流之前會先把緩沖區內的數據提交到客戶端。     * 因此在調用PrintWriter 對象的 close()方法之前,response.isCommitted()方法返回 false;     * 而在調用PrintWriter對象的close()方法之后,response.isCommitted()方法返回true。     * response.reset();void     * 清除buffer,設置頁面不緩存,同時清除狀態碼和頭,如果已經發送數據則跑出異常     * response.resetBuffer();void     * 只清除buffer     * response.sendError(1,"123");void     * response.sendError(123);     * response.sendError(1,"123");     * setStatus方法用來設置Servlet向客戶端返回的狀態碼,它用來設置沒有出錯的狀態。     * 如果Servlet運行出錯,Servlet可以使用sendError方法設置狀態碼,     * 如sendError(int sc)方法設置錯誤狀態代碼。sendError(int sc,String msg)方法除了設置狀態碼     * 還向客戶發出一條錯誤信息。     * response.sendRedirect("xx.html");     * 返回一個重定向,并把新的request與response交給重定向的頁面進行處理     * sendRedirect方法向客戶發出臨時重新導向的響應。它生成的響應狀態碼為302。     * 該響應給了客戶一個新的URL分區。如果緩沖器已經被清空,這個方法會彈出一個IllegalStateException例外。     * response.setBufferSize(123);     * 設置緩沖區大小     * response.setCharacterEncoding("utf-8");     * 設置字符編碼     * response.setContentLength(123);     * 設置返回內容的長度,在header中也有     * response.setContentLengthLong(1345l);     * 長度非常長是使用     * response.setContentType("dfd");     * 設置ContentType,包括編碼和類型信息     * 網頁的Http頭中ContentType("text/html; charset=GBK")的作用:     * 告訴瀏覽器網頁中數據是什么編碼/     * 表單提交時,通常瀏覽器會根據ContentType指定的charset對表單中的數據編碼,然后發送給服務器的。     * 這里需要注意的是:這里所說的ContentType是指http頭的ContentType,而不是在網頁中meta中的ContentType。     * response.setDateHeader("asd", 123l);     * 修改日期頭     * response.setHeader("sfds", "sdfsdf");     * 修改頭     * response.setIntHeader("sf", 3123);     * 設置數值頭     * response.setLocale(locale );     * 設置本地環境     * response.setStatus(1);     * 設置Http狀態碼,為出錯的情況用     * response.setStatus(12, "dasd");     * 設置狀態碼并帶一條消息     *      *      *      */

  3、用于測試的代碼

        AsyncContext async = request.getAsyncContext();        String attribute = (String) request.getAttribute("code");        Enumeration<String> enumer = request.getAttributeNames();        String authtype = request.getAuthType();        String character = request.getCharacterEncoding();        int len = request.getContentLength();        long lenl = request.getContentLengthLong();        String contenttype = request.getContentType();        String contextpath = request.getContextPath();        Cookie[] cook = request.getCookies();        long dataHeader = request.getDateHeader("");        DispatcherType dispatcher = request.getDispatcherType();        String header = request.getHeader("headname");        Enumeration<String> headernames = request.getHeaderNames();        Enumeration<String> headersname = request.getHeaders("headersname");        ServletInputStream ins = request.getInputStream();        int i = request.getIntHeader("head");        String add = request.getLocalAddr();        Locale locale = request.getLocale();        Enumeration<Locale> locales = request.getLocales();        String localname = request.getLocalName();        int port = request.getLocalPort();        String method = request.getMethod();        String codep = request.getParameter("code");        Map<String,String[]> map = request.getParameterMap();        Enumeration<String> Pnames = request.getParameterNames();        String[] values = request.getParameterValues("code");        Part pa = request.getPart("file");        Collection<Part> pas = request.getParts();        String pathin = request.getPathInfo();        String trans = request.getPathTranslated();        String protoc = request.getProtocol();        String query = request.getQueryString();        BufferedReader br = request.getReader();        String rp = request.getRealPath("/");        String ra = request.getRemoteAddr();        String rh = request.getRemoteHost();        int rport = request.getRemotePort();        String ru = request.getRemoteUser();        RequestDispatcher rd = request.getRequestDispatcher("");        String rsi = request.getRequestedSessionId();        String uri = request.getRequestURI();        String scheme = request.getScheme();        String servern = request.getServerName();        int sport = request.getServerPort();        ServletContext scon = request.getServletContext();        String spath = request.getServletPath();        HttpSession session1 = request.getSession();        HttpSession session2 = request.getSession(true);        Principal prc = request.getUserPrincipal();                boolean authe = request.authenticate(response);//證明是真實的、可靠的或有效的;鑒定,使生效        String cs = request.changeSessionId();        boolean iss = request.isAsyncStarted();        boolean isss = request.isAsyncSupported();        boolean issr = request.isRequestedSessionIdFromCookie();        boolean irsi = request.isRequestedSessionIdFromUrl();        boolean irss = request.isRequestedSessionIdFromURL();        boolean isiv = request.isRequestedSessionIdValid();        boolean isivs = request.isSecure();        boolean isr = request.isUserInRole("role");        request.login("user", "password");        request.logout();        request.notify();        request.notifyAll();        request.removeAttribute("at");        request.setAttribute("at", request);        request.setCharacterEncoding("utf-8");        request.startAsync();        request.startAsync(request, response);        //request.upgrade();                response.addCookie(new Cookie("a","aa"));        response.addDateHeader("date", 23456789l);        response.addHeader("asf", "sff");        response.addIntHeader("fsf", 12);        boolean ch = response.containsHeader("asf");        String eru = response.encodeRedirectUrl("utf-8");        String eru1 = response.encodeRedirectURL("utf-8");        String eu = response.encodeUrl("utf-8");        String eu1 = response.encodeURL("utf-8");        response.flushBuffer();        int bs = response.getBufferSize();        String ge = response.getCharacterEncoding();        String cont = response.getContentType();        String se = response.getHeader("aa");        Collection<String> ghn = response.getHeaderNames();        Collection<String> ghn1 = response.getHeaders("aa");        Locale sss = response.getLocale();        ServletOutputStream ost = response.getOutputStream();        int rs = response.getStatus();        PrintWriter writer1 = response.getWriter();        boolean isc = response.isCommitted();        response.reset();        response.resetBuffer();        response.sendError(1,"123");        response.sendError(123);        response.sendRedirect("xx.html");        response.setBufferSize(123);        response.setCharacterEncoding("utf-8");        response.setContentLength(123);        response.setContentLengthLong(1345l);        response.setContentType("dfd");        response.setDateHeader("asd", 123l);        response.setHeader("sfds", "sdfsdf");        response.setIntHeader("sf", 3123);        response.setLocale(locale );        response.setStatus(1);        response.setStatus(12, "dasd");

  上面的內容只是作為總結,并沒有說明各個方法的作用以及取出來的對象的作用,比如說Session,是一個很有用的對象,要知道他的用法,請看后面的博文。

  關于Http客戶端,即瀏覽器發送請求及接受響應的各部分內容,請參考后面的博文。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘德县| 库车县| 元阳县| 杭州市| 吉水县| 红桥区| 剑河县| 天台县| 辉县市| 郸城县| 安吉县| 娄烦县| 宜昌市| 青阳县| 三门县| 班玛县| 浮梁县| 禹城市| 堆龙德庆县| 舒兰市| 阆中市| 河曲县| 信丰县| 临朐县| 五原县| 浦城县| 潼关县| 贵溪市| 密云县| 湘阴县| 中阳县| 南澳县| 辛集市| 龙口市| 原平市| 西宁市| 津南区| 遂宁市| 雅安市| 赣州市| 筠连县|