摘要:方法的參數不但可以使相對于上下文根的路徑,而且可以是相對于當前的路徑。如和都是合法的路徑。
轉發(fā)與重定向區(qū)別是什么
在調用方法上
轉發(fā) 調用 HttpServletRequest 對象的方法
request.getRequestDispatcher("test.jsp").forward(req, resp);
重定向 調用 HttpServletResponse 對象的方法
response.sendRedirect("loginsuccess.jsp");
在URL顯示上
轉發(fā):URL沒有變化 重定向:URL會發(fā)生變化
在HTTP請求次數上
轉發(fā):請求1次 重定向:請求2次
在行為上
轉發(fā):服務器行為 重定向:客戶端行為
在數據傳遞上
轉發(fā): 直接傳遞請求數據 重定向: 必須通過session/application全局中間數據緩存JSP/Servlet 注意事項
JSP/Servlet 初始化時機
JSP :只有當客戶端第一次請求JSP時,才需要將其轉換、編譯以及實例化
Servlet : 只有當服務器啟動時(web.xml中配置load-on-startup=1,默認為0)或者第一次請求該servlet時,才會加載和實例化
Servlet四大對象
ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse
ServletConfig:代表當前Servlet的配置信息(web.xml) 獲取ServletConfig方法: ServletConfig sc = this.getServletConfig(); ServletContext:代表當前Application 獲取ServletContext方法: ServletContext sc = this.getServletContext(); HttpServletRequest:代表請求信息 HttpServletResponse:代表響應信息
ServletContext生命周期與作用
Tomcat 啟動時,為每個web項目創(chuàng)建對應的ServletContext對象
ServletContext對象何時銷毀?第一種:把web應用移除;第二種:把Tomcat服務器停止
作用:是管理WEB資源,讀取資源文件等 (請不要使用java文件方式去讀取)
獲取RequestDispatcher對象的方法與區(qū)別
2種方法: 1、使用ServletRequest對象 request.getRequestDispatcher(); 2、使用ServletContext對象 context.getRequestDispatcher(); 區(qū)別: ServletContext.getRequestDispatcher(String path)方法的參數必須以斜杠(/)開始, 被解釋為相對于當前上下文根(context root)的路徑。 例如:/myservlet是合法的路徑,而../myservlet是不合法的路徑。 ServletRequest.getRequestDispatcher(String path)方法的參數不但可以使相對于上下文根的路徑, 而且可以是相對于當前Servlet的路徑。如/myservlet和myservlet都是合法的路徑。 如果路徑以斜杠(/)開始,則被解釋為相對于當前上下文根的路徑; 如果沒有以斜杠(/)開始,則被解釋為相對于當前Servlet的路徑。
JavaWEB四大域
1、context(代表整個應用都可以使用,servletContext) 2、request 3、session 4、page如何讀取web資源文件
Servlet方式
方式1: InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/config/db.properties"); Properties props = new Properties(); props.load(in); 方式2: String path= this.getServletContext().getRealPath("/WEB-INF/config/db.properties"); FileInputStream fis = new FileInputStream(path); Properties props = new Properties(); props.load(fis);
非Servlet方式(類裝載器 只能加載classses目錄下)
方式1(類加載器 加載與讀) InputStream in = UserServlet.class.getClassLoader().getResourceAsStream("db.properties"); Properties props = new Properties(); props.load(in); 方式2 (類加載器 只加載 用傳統的方式讀) String path = UserServlet.class.getClassLoader().getResource("db.properties").getPath(); FileInputStream fis = new FileInputStream(path); Properties props = new Properties(); props.load(fis);
javaweb讀取配置文件的4種方法
輸出中文亂碼問題(2種方法)方法1:設置響應頭
response.setHeader("Content-Type", "text/html;charset=utf-8");
方法2:設置響應體
response.setHeader("Content-Type", "text/html"); String str = "中國"; OutputStream os = response.getOutputStream(); os.write("".getBytes()); os.write(str.getBytes("utf-8"));
注意事項
字符流與字節(jié)流的區(qū)別(字節(jié)流是字符流的基礎)
字節(jié)流應用更廣泛:二進制數據(視頻、音頻、圖片、文本)
字符流應用更專注:文本(字符串)
獲取字節(jié)流: OutputStream os = response.getOutputStream(); 獲取字符流: PrintWriter pw = response.getWriter(); 設置服務器編碼方式: 字節(jié): str.getBtyes("UTF-8") //告訴服務器使用UTF-8編碼字符 字符: response.setCharacterEncoding("utf-8"); //告訴服務器使用UTF-8編碼字符 設置客戶端編碼方式: response.setContentType("text/html;charset=utf-8");下載文件問題
設置HTTP的頭信息
response.setHeader("content-disposition", "attachment;filename=" + filename); 如果下載的是中文文件,上面這種寫法會出行亂碼并且下載不了,所以必須使用下面這種: response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(filename,"UTF-8"));
一、為什么要用URLEncoder
客戶端在進行網頁請求的時候,網址中可能會包含非ASCII碼形式的內容,比如中文。
而直接把中文放到網址中請求是不允許的,所以需要用URLEncoder編碼地址,
將網址中的非ASCII碼內容轉換成可以傳輸的字符
不會被編碼的內容
1.大寫字母A-Z
2.小寫字母a-z
3.數字 0-9
4.標點符 - _ . ! ~ * " (和 ,)
讀取資源文件到內存(只能獲取文件真實路徑)
String filePath = this.getServletContext().getRealPath("/WEB-INF/upload/xxx.jpg"); InputStream is = new FileInputStream(filePath);
輸出資源文件
OutputStream out = response.getOutputStream(); int len = 0; byte[] buffer = new byte[1024]; while((len =is.read(buffer) ) > 0){ out.write(buffer, 0 ,len); }JSP文件存放位置問題
如果需要先訪問Servlet再跳轉到Jsp的話,需要把JSP頁面放在WEB-INF中 如果JSP可以直接訪問,那直接放置在WEB-INF目錄外層
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69734.html
摘要:列名字段名表單中的屬性名要一至創(chuàng)建數據庫及表開發(fā)應用搭建開發(fā)環(huán)境添加包創(chuàng)建實現類層業(yè)務層接口實現類數據訪問層接口實現類添加工具類表示層要注意注冊頁面登錄頁面 一、JavaWeb開發(fā)模式 C/S:客戶端 / 服務器 (胖客戶端)B/S:瀏覽器 / 服務器 (瘦客戶端) JavaBean: 就是一個普通類(實體bean),包含三樣標準:一個無參構造、私有屬性、公共的getter和se...
摘要:我的學習筆記匯總標簽筆記分為兩大部分和筆記內容主要是對一些基礎特性和編程細節(jié)進行總結整理,適合了解基礎語法,想進一步深入學習的人如果覺得不錯,請給,這也是對我的鼓勵,有什么意見歡迎留言反饋目錄基礎鞏固筆記反射基礎鞏固筆記泛型基礎鞏 我的java&javaweb學習筆記(匯總) 標簽: java [TOC] 筆記分為兩大部分:javase和javaweb javase javawe...
摘要:張三標簽可以自定義。區(qū)非法字符嚴格地講,在中僅有字符和是非法的。添加包依賴在查找指定節(jié)點的時候,根據語法規(guī)則來查找后續(xù)的代碼與以前的解析代碼一樣。這在生活中是不可能出現的。元素的格式化情況。網頁游戲,優(yōu)點客戶端只要有瀏覽器就可以了。 1.Xml概念 eXtendsible markup language 可擴展的標記語言 2.XML 有什么用? 1.可以用來保存數據 2.可以用來...
摘要:張三標簽可以自定義。區(qū)非法字符嚴格地講,在中僅有字符和是非法的。添加包依賴在查找指定節(jié)點的時候,根據語法規(guī)則來查找后續(xù)的代碼與以前的解析代碼一樣。這在生活中是不可能出現的。元素的格式化情況。網頁游戲,優(yōu)點客戶端只要有瀏覽器就可以了。 1.Xml概念 eXtendsible markup language 可擴展的標記語言 2.XML 有什么用? 1.可以用來保存數據 2.可以用來...
閱讀 2954·2021-11-17 09:33
閱讀 3118·2021-11-16 11:52
閱讀 482·2021-09-26 09:55
閱讀 2975·2019-08-30 15:52
閱讀 1313·2019-08-30 15:44
閱讀 1257·2019-08-30 13:59
閱讀 796·2019-08-30 13:08
閱讀 1157·2019-08-30 10:50