1. 程式人生 > >Java-web(初識)

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);
	}

}