1.簡介
JDBC接口:Java代碼和數(shù)據(jù)庫之間交互的規(guī)則
Servlet接口:服務(wù)器軟件和Java代碼之間交互的規(guī)則
http協(xié)議:瀏覽器和服務(wù)器軟件之間交互的規(guī)則
2.Web開發(fā)常用的概念
Web資源:
存在于Web服務(wù)器, 供外界訪問的資源就是Web資源.
例如: 存在于Web服務(wù)器內(nèi)部的: html,js,圖片, 視頻等資源.
分類:
靜態(tài)資源: 指web頁面中供人們?yōu)g覽的數(shù)據(jù)是始終不變的.
例如: 圖片, 視頻, 音頻, html文件, js文件等.
例如:優(yōu)酷上掛的電影采盒,寫的html頁面蜓堕。
動態(tài)資源: 指web頁面中供人們?yōu)g覽的數(shù)據(jù)是由程序產(chǎn)生的, 不同的時間點訪問web頁面看到的內(nèi)容各不相同.
Javaweb領(lǐng)域的動態(tài)資源: 指通過Java代碼生成html, 例如: JSP/Servlet, ASP, PHP等.
例如:12306買票:不同時刻票數(shù)不同注盈。
常用的Web服務(wù)器:
Tomcat:它是一個免費倦炒,開源的web服務(wù)器,支持servlet規(guī)范和jsp規(guī)范喷众,它不支持JavaEE的13種規(guī)范伦忠, 所屬公司為: Apache公司固以。
//tomcat軟件早期屬于sun公司滤蝠,是sun公司的架構(gòu)師詹姆斯·鄧肯·戴維森開發(fā)的豌熄,后來sun公司為了推動Java語言的發(fā)展,無償將Tomcat捐助給Apache公司物咳。
Weblogic: 大型的收費服務(wù)器锣险, 它完美支持JavaEE的所有規(guī)范,所屬公司:Oracle览闰。
Websphere:大型的收費服務(wù)器芯肤,它完美支持JavaEE的所有規(guī)范,所屬公司: IBM压鉴。
3.Servlet簡介
Servlet 概述:服務(wù)器認(rèn)識Java代碼的規(guī)則
步驟:
1.新建一個類實現(xiàn)Servlet接口
2.重寫接口中的所有方法
3.在web.xml中注冊和映射
eg: <!--設(shè)置Demo1Servlet的信息-->
<!--設(shè)置具體的要訪問的: Java代碼-->
<servlet>
<servlet-name>Demo1Servlet</servlet-name>
<servlet-class>com.itheima_01.Demo1Servlet</servlet-class>
</servlet>
<!--設(shè)置瀏覽器訪問Java代碼的具體: 路徑-->
<servlet-mapping>
<servlet-name>Demo1Servlet</servlet-name>
<url-pattern>/demo1Servlet</url-pattern>
</servlet-mapping>
注意:
request: 請求, 瀏覽器給服務(wù)器傳輸?shù)臄?shù)據(jù).
response: 響應(yīng), 服務(wù)器給瀏覽器傳輸?shù)臄?shù)據(jù).
4.Servlet的細(xì)節(jié):
4.1 根據(jù)ip和端口號, 找到對應(yīng)的軟件: tomcat.
4.2 tomcat根據(jù)項目名找到對應(yīng)的項目, 進(jìn)而可以找到web.xml文件.
4.3 再根據(jù)web.xml文件中的資源路徑找到對應(yīng)類的全路徑.
4.4 服務(wù)器將其(第三步)找到的 全路徑的類.
5.Servlet生命周期
5.1構(gòu)造Servlet,然后使用init方法將其初始化
5.2處理來自客戶端的對service()方法的所有調(diào)用.
5.3從服務(wù)中取出Servlet,然后使用destroy()方法銷毀它,最后進(jìn)行垃圾回收并終止它.
規(guī)律:
1) 每次訪問Servlet, 都會調(diào)用service()方法.
2) 第一次訪問, 會調(diào)用構(gòu)造和初始化方法, 只會調(diào)用一次.
3) 當(dāng)前Servlet類被銷毀時才會調(diào)用銷毀方法.
6. servlet和httpServlet的關(guān)系
每次我們都需要新建一個類, 然后去實現(xiàn)Servlet接口, 重寫接口中所有的方法, 最后在配置web.xml文件. 這樣做比較麻煩, 我們就想著, 能不能優(yōu)化這個步驟呢?
新建一個 servlet即可(程序會自動讓該類去繼承HttpServlet, 然后自動配置web.xml文件).
關(guān)系:
Servlet接口:
//定義了服務(wù)器和Java代碼交互的規(guī)則
GenericServlet類:
//一般的servlet, 只是實現(xiàn)了方法, 注意: 不針對任何協(xié)議.
HTTPServlet類:
//針對HTTP協(xié)議做的實現(xiàn).
//HTTP有8種不同的請求方式, 其中g(shù)et和post是最常見的請求方式.
自定義的Servlet:
//例如:Demo1Servlet類
//只需要重寫: doGet()方法和doPost()方法即可.
service()方法和 doGet(),doPost()方法的聯(lián)系?
1. 在service()方法中, 獲取請求的方式.
2. 判斷:
如果是get請求方式, 調(diào)用doGet()方法.
如果是post請求方式, 調(diào)用doPost()方法.
7. 給瀏覽器響應(yīng)中文內(nèi)容
doGet()方法:
作用: 處理get方式的請求
哪些請求方式屬于get方式?
1. <form>表單, method="get"
2. 超鏈接<a>
3. 通過地址欄直接訪問.
doPost()方法:
作用: 處理post方式的請求
哪些請求方式屬于post方式?
表單<form>, method="post"
配置服務(wù)器編解碼一致://response.setContentType("text/html;charset=utf-8");
8. URL-Pattern的書寫方式
我們目前寫的<url-pattern>是全路徑方式訪問, 可以寫多個.
//全路徑訪問方式: http://ip:端口號/項目名/文件名
例如:
<servlet-mapping>
<servlet-name>Demo3</servlet-name>
<url-pattern>/demo3</url-pattern>
<url-pattern>/demo3/aaa</url-pattern>
<url-pattern>/demo3/aaa/bbb</url-pattern>
<url-pattern>/demo3/aaa/bbb/ccc</url-pattern>
</servlet-mapping>
可以優(yōu)化為: 通過 通配符匹配, 要求前半部分一樣.
格式:
// <url-pattern>/名字/*</url-pattern>
特點:
前半部分(*之前的部分)一樣,
后半部分(*之后的部分)可以隨便寫(因為 * 代表所有)
也可以優(yōu)化為: 通過 擴展名匹配, 要求后綴名一樣.
格式:
<url-pattern>*.do</url-pattern>
//后綴名可以自定義.
優(yōu)先級如下:
全路徑 > 通配符 > 擴展名
總結(jié):
如果級別相同, 取相似度最高的.
9. 獲取參數(shù)
用戶在瀏覽器可能通過<form>標(biāo)簽提交到服務(wù)器一些數(shù)據(jù), 怎么知道用戶提交的是什么標(biāo)簽, 什么值呢?
這就需要用到: 獲取參數(shù).
HTTPServletRequest類中的方法:
String getPrrameter(String name); //根據(jù)表單項name的屬性值, 獲取非多選框的值.
String[] getParameterValues(String name); //根據(jù)表單項name的屬性值, 獲取多選框的值.
Map getParameterMap(); //由服務(wù)器創(chuàng)建的map, 表單項的name屬性值作為key, 用戶填寫或者選擇的值作為值.
面試題:
1. Writer, 字節(jié)緩沖流, 字符緩沖流的默認(rèn)緩沖區(qū)的大小分別是多少?
2KB 8kb(8192字節(jié)) 16KB(8192字符)