JavaWeb学习之Path总结、ServletContext、ServletResponse、ServletRequest(3)
生活随笔
收集整理的這篇文章主要介紹了
JavaWeb学习之Path总结、ServletContext、ServletResponse、ServletRequest(3)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、Path總結1、java項目1 File file = new File("");file.getAbsolutePath();* 使用java命令,輸出路徑是,當前java命令停留的盤符* F:\workspaces\20141123\demo\bin* 使用myeclipse或eclipse運行時* F:\workspaces\20141123\demo2 File file = new File("/");file.getAbsolutePath();* 獲得當前盤符* F:\3 URL url = Hello.class.getClassLoader().getResource("");* 獲得路徑,使用類加載器* F:/workspaces/20141123/demo/bin/* 當前類被加載時,所在的文件根目錄4 URL url = Hello.class.getClassLoader().getResource("/");* 不能使用* null2、web項目1、通過servletcontext獲得文件,WebRoot根目錄下的文件ServletContext sc = this.getServletContext();* 獲得實際路徑* sc.getRealPath("/1.html");* 獲得URL* URL url = sc.getResource("/1.html"); * 獲得流【**】* InputStream is = sc.getResourceAsStream("/1.html");如果要獲取WebRoot/page/abc/2.html,則InputStream is = sc.getResourceAsStream("/page/abc/2.html");2、web的相對路徑* 前提:相對當前的頁面1.html* 使用分類:1、abc:與當前頁面同級的目錄或servlet的名稱* <a href="c/c.html">c.html</a><br>2、/abc:相對于web站點,%tomcat%/webapps/* <a href="/day06_web/b/c/c.html">c.html</a><br>3、./abc:當前目錄,與第一種情況相同* <a href="./c/c.html">c.html</a><br>4、../abc:上一次目錄* <a href="../b/c/c.html">c.html</a><br>總結:操作過程當前頁面:http://localhost:8080/day06_web/b/b.html目標頁面:http://localhost:8080/day06_web/b/c/c.html/ -- webapps -- http://localhost:80802、ServletContext* 對當前web項目上下文的描述(對當前web項目所有內容的描述),由tomcat在啟動時創建,tomcat關閉時銷毀。說白了,也就是說可以管理WebRoot下的文件,比如讀取WebRoot下的文件* servlet -- > init(ServletConfig) --> config.getServletContext();* 當前servlet的所在的項目* tomcat為每一個web項目單獨創建一個區域,用來管理整個項目。此區域成為ServletContext* 管理當前項目【*****】ServletContext sc = this.getServletContext();//源碼其實就是config.getServletContext()* 獲得實際路徑,要求必須/開頭* sc.getRealPath("/1.html");//得到WebRoot根目錄下1.html的絕對路徑* 操作數據* add set get remove delete* setAttribute/getAttribute/removeAttribute* ServletContext對象對所有的servlet共享數據* 給當前web項目配置內容【**】* 配置文件的位置:web.xml* 配置內容,例如配置數據庫連接字符串<context-param><param-name>username</param-name><param-value>root</param-value></context-param>* 如何讀取//獲得ServletConetxtServletConetxt sc = this.getServletContext();//獲得所有的配置信息名稱<context-param><param-name>username</param-name>Enumeration<String> names = sc.getInitParameterNames();while(names.hasMoreElements()){String value = sc.getInitParameter(name);System.out.println("context:"+name+":"+value);}* context root* 當前ServletContext所指web項目的根* tomcat --> webapps/webName/* myeclipse -->webName/WebRoot/3、ServletResponse* 服務器對瀏覽器做出的響應,將需要發送給瀏覽器的所有數據全部存放在此對象上。* 發送數據,使用流操作,將所需要的數據,存放在指定的流中,數據將顯示到瀏覽器中HttpServletResponse response ;* 字符流* response.getWriter();* 字節流* response.getOutputStream();* 當使用getOutputStream時,不能使用getWriter* getOutputStream() has already been called for this response* 當使用getWriter時,不能使用getOutputStream* getWriter() has already been called for this response* 總結:兩個流同時只能使用一個* 字節流:getOutputStream,一般在程序中使用具有拷貝功能等* 發送中文* 不能發送* out.print(data); 不能發送中文數據 * 異常信息:java.io.CharConversionException Not an ISO 8859-1 character: 中* 可以發送* out.write(data.getBytes("UTF-8"));* 字符流:getWriter,一般在程序中發送數據內容* 發送中文* out.println("中文");* 亂碼【****】* response.setContentType("text/html;charset=utf-8");* 通知tomcat和瀏覽器發送數據的編碼* 注意:* 設置編碼時,必須放置在需要輸出語句之前,建議放置在doGet或doPost第一行4、ServletRequest* 瀏覽器向服務器的請求(瀏覽器將數據發送給服務器時,數據存放的地方)* 請求方式:GET和POST* GET:發送的數據,追加在請求的URL之上* POST:發送的數據在HTTP請求體中* 瀏覽器發送數據* 表單form,* method屬性:指定的請求方式* action屬性:接收數據的程序路徑* 服務器獲得瀏覽器發送的數據* 獲得單個數據* request.getParameter("username");獲取input type="radio"時,獲取的是選中的值* 獲得一組數據* request.getParameterValues("love");獲取input type="checkbox"時,獲取的是選中的值* 處理中文亂碼* request.setCharacterEncoding("UTF-8");* 注意:* 此方法只對POST請求有效,GET需要單獨處理* 需要放置在獲得數據之前,建議放在第一個行一般建議將處理doGet的方法交給doPost進行處理,在doPost中獲取request.setCharacterEncoding("UTF-8");String userName = request.getParameter("userName");如果非要在doGet中獲取,可以使用以下代碼:第一種方式:String userName = new String(request.getParameter("userName").getBytes("ISO-8859-1"),"UTF-8");第二種方式://得到參數字符串String query = request.getQueryString();//解碼String q = URLDecode.decode(query,"UTF-8");結果:q:uername=中文
?
轉載于:https://www.cnblogs.com/yxlblogs/p/4122356.html
總結
以上是生活随笔為你收集整理的JavaWeb学习之Path总结、ServletContext、ServletResponse、ServletRequest(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git 下载代码
- 下一篇: 多线程(二)线程控制