Java-web(初識)
JavaWeb開發(伺服器端 看懂前端)
* 使用者(瀏覽器)訪問服務端的什麼東西?
* 靜態Web資源 HTML CSS JS
* 使用者在訪問靜態資源的時候 這些資源不會變
* 動態Web資源 JSP Servlet
* 使用者在訪問動態資源的時候
* 訪問的內容是由資源生成的
* 例如:不同使用者訪問不同的資源
*
* 使用者提供網址來請求伺服器端
* 請求就是伺服器端上面的靜態資源和動態資源
* 請求完成之後會給瀏覽器一個響應結果
*
* 伺服器
* Tomcat伺服器(黃貓) sun公司 開源的 免費的
* 輕量級伺服器 公司裡常用的伺服器
* 注意:寫的Java程式碼 和 前端HTML頁面
* 全都是放在伺服器上執行(伺服器端開發 是開發到伺服器上執行的程式碼
* 而不是開發一個伺服器出來)
*
* JavaEE規範伺服器的一套規則(類與介面)
* JSP和servlet 就是這套規範一部分
*
* tomcat伺服器下資料夾
* bin 存放編譯指令的(開啟關閉服務)
* conf 存放tomcat自己配置檔案的
* lib 存放tomcat依賴jar包
* logs 存放是使用者訪問服務的日誌(檢視錯誤)
* temp 存放臨時檔案的
* webapps 預設存放 應用程式的資料夾(你的工程)
* work 存放Tomcat自己工作檔案
* wtpwebapps 與 Eclipse關聯後 工程存放的資料夾
*
* 利用命令列(終端開啟tomcat服務)
* 1.前往tomcat 的 bin資料夾下
* 2.開啟檔案管理許可權(讀寫)
* sudo chmod 755 *.sh
* 3.開啟服務(Windows下 執行的是 .bat字尾的指令)
* sudo sh ./startup.sh
* 注意:不要重複開啟服務 否則會出現埠被佔用錯誤
* (關了才能開)
* --------- 伺服器上的資源
* 訪問網址:
* http://IP地址:埠號/專案名稱/訪問的資源
* 通過這個網址 檢視tomcat服務是否啟動
* http://localhost:8080
*
* 訪問的網址
* URL 統一資源定位符
* http://localhost:8080/test/HelloWorld.html
* URI 統一資源識別符號
* /test/HelloWorld.html
*
*
* 4.關閉服務
* sudo sh ./shutdown.sh
*
* 工程被編譯到伺服器
* 實際上是把工程目錄下的WebContent
* 資料夾下的內容編譯進去
* (WebContent 本身不會出現)
*
* META-INF 擴充套件應用程式資料夾(暫時沒用)
* WEB-INF 存放著工程的所有資源
* lib 存放工程使用的jar包
* (不用新增路徑 會自動編譯到伺服器上)
* web.xml 工程的配置檔案
* classes
* 工程編譯到伺服器上出現的
* 裡面儲存的是 你工程中的類的.class檔案
* 注意:WEB-INF資料夾下存放的資源 是不能直接通過為網址去訪問的
*
* Servlet(小服務程式) 是個Java介面
* 訪問伺服器 實際上訪問就是
* Servlet(容器 有訪問動態資源)
* javax.servlet.Servlet 包下的
* 注意:如果報錯或提示不出來
* 在library修改或添tomcat到你的工程中
*
* Servlet的生命週期方法
* 例項化——>初始化——>服務方法銷——>毀方法
* Servlet只建立一次
* 當你再次訪該Servlet時
* 不會建立新的Servlet
* 只會重複呼叫服務方法 Servlet方法
*
* 簡單談談servlet的訪問流程?
* 使用者發出請求
* (http://localhost:8080/sh-web-01/demo01)
* 系統如何促進出對應servlet出來?
* 1.通過使用者請求的網址
* 伺服器會獲取到 專案的名稱 /sh-web-01/demo01
* 2.找到你對應專案後 從專案中找到
* 該專案的web.xml檔案
* 3.從web.xml檔案 可以找到訪問servlet的路徑(/demo01)
* 4.通過servelt的路徑 找到使用者
* 要訪問哪一個servlet的名字(demo01)
* 5.通過servlet名字 就能找到 要建立
* 的servlet 屬於哪個類
* 6.系統就會通過反射建立該類的物件
* 然後 就走生命週期的4個方法
*
* 建立servlet的第一種方式
* 直接上線servlet介面
public class Demo01 implements Servlet {
// 例項化方法(建立物件的無參構造方法)
public Demo01() {
System.out.println("例項化物件的無參構造方法");
}
// 初始化方法(初始化Servlet的配置資訊)
public void init(ServletConfig arg0) throws ServletException {
System.out.println("例項化init方法 被呼叫");
}
// 服務方法(處理使用者的請求 處理完成後 相應給使用者)
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("service方法被呼叫");
}
// Servlet的銷燬方法
// 1.伺服器關閉(停止)會呼叫
// 2.該應用程式被移除也會被呼叫
public void destroy() {
System.out.println("destroy銷燬方法被呼叫了");
}
// 獲取Servlet配置資訊的方法
public ServletConfig getServletConfig() {
return null;
}
// 獲取Servlet的版本 作者等資訊的方法
public String getServletInfo() {
return null;
}
}
直接繼承HttpServlet
利用模板設計模式
public class Demo03 extends HttpServlet {
//重寫 doGet 和 doPost方法
// 注意:從瀏覽器傳送的請求都是get請求
// 注意:重寫完成之後 不要呼叫父類的doGet方法
// 否則一樣會發送錯誤出來
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 兩種請求公用一個處理方法
doGet(req, resp);
}
}
利用模板 快速建立
public class Demo04 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("demo04...doget");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}