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