1. 程式人生 > >Java學習路程(JavaEE)之伺服器

Java學習路程(JavaEE)之伺服器

1.使用者如何訪問網站
1).通過URL網址訪問網站(傳送請求)
2).實際上訪問網站就是訪問該網站的伺服器,訪問的是伺服器上的靜態資源或動態資源
靜態資源:HTML div CSS 不管什麼使用者訪問內容不會改變
動態資源:jsp servlet根據不同的使用者返回不同的資訊
3).通過程式碼去訪問資料庫(JDBC)進行增刪改查
4)將查詢的結果集返回給伺服器
5).伺服器將查詢的結果響應回瀏覽器
2.Tomcat伺服器(開源的輕量級伺服器)
Tomcat下的資料夾:
bin:存放Tomcat的操作指令
conf:伺服器的配置檔案
temp:伺服器執行時產生的臨時檔案
logs:存放伺服器的日誌資訊(開啟關閉伺服器以及執行時產生的錯誤)
work:伺服器自己的工作資料夾
3.利用Tomcat操作指令啟動和關閉伺服器
1).開啟cmd控制檯
2).切換碟符 輸入d:
3).cd 去往Tomcat下的bin資料夾
4).執行伺服器開啟服務的指令 startup.bat
5).設定環境變數 JAVAHOME和JDKHOME
6).訪問Tomcat伺服器預設網頁
訪問地址:

http://IP地址:伺服器埠號(8080)/工程的名字/訪問的資源
7).關閉伺服器 shutdown.bat
4.伺服器上的工程目錄
1).網頁資源HTML頁面
2).META-INF 可以配置工程的擴充套件應用
3).WEB-INF 工程的所有資源
classes資料夾: 專案程式碼的.class檔案
lib資料夾: 工程中使用的jar包 (web工程不用新增jar包的路徑)
web.xml: 工程配置檔案(配置Servlet)
注意:如果你的html頁面沒有放在WebContent下而是放在WEB-INF下這時該資源無法通過網址直接訪問,需要使用Servlet間接訪問
5.Servlet的作用
1).接收使用者傳送的請求
2). 處理請求
3).將處理完的請求響應會瀏覽器
6.建立Servlet有三種方式
方法一:
1.實現Servlet介面
2.實現介面中的生命週期方法(構造方法 init方法 service方法 destroy方法)
注意:需要去工程中的web.xml檔案中配置該servlet的訪問路徑
配置Servlet

  </servlet>
   <!-- 配置servlet的訪問路徑 -->
   <servlet-mapping>
    <!-- 設定給哪個servlet配置路徑 注意:要與配置時 名字相同 -->
   	<servlet-name>demo01</servlet-name>
   	<url-pattern>/demo01</url-pattern>
   </servlet-mapping>
  <servlet>
  	<servlet-name>demo02</servlet-name>
  	<servlet-class>com.lanou3g.Demo02</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>demo02</servlet-name>
  	<url-pattern>/demo02</url-pattern>
  </servlet-mapping>
  <servlet>
  	<!-- 給servlet設定一個名字 -->
  	<servlet-name>demo03</servlet-name>
  	<servlet-class>com.lanou3g.Demo03</servlet-class>
  </servlet>
   <!-- 配置servlet的訪問路徑 -->
   <servlet-mapping>
   	<servlet-name>demo03</servlet-name>
   	<url-pattern>/demo03</url-pattern>
   </servlet-mapping>
 public class Demo01 implements Servlet{
		//構造方法
		public Demo01(){
			System.out.println("構造方法");
		}
		// 初始化servlet的配置資訊
		public void init(ServletConfig arg0) throws ServletException {
			// TODO Auto-generated method stub
			System.out.println("init初始化方法");
		}
		// servlet的服務方法 (處理請求)
		public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
			// TODO Auto-generated method stub
			System.out.println("servlet的服務方法");
		}
		// servlet的銷燬方法
		public void destroy() {
			// TODO Auto-generated method stub
			System.out.println("destroy銷燬方法");
		}
		//獲取當前servlet的配置資訊
		public ServletConfig getServletConfig() {
			// TODO Auto-generated method stub
			return null;
		}
		//獲取servlet的版本作者資訊
		public String getServletInfo() {
			// TODO Auto-generated method stub
			return null;
		}
	}

方法二:
繼承GenericServlet類並實現service方法

  public class Demo02 extends GenericServlet{
	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		System.out.println("demo02的服務方法");
	}
  }

方法三:
繼承HttpServlet類(利用模板設計模式)

 public class Demo03 extends HttpServlet{
		//重寫doGet
		//注意重寫方法後不要呼叫父類中的方法,父類中的方法會給瀏覽器傳送錯誤資訊
		@Override
		protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
			// TODO Auto-generated method stub
			System.out.println("get");
		}
		//重寫doPost
		@Override
		protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
			// TODO Auto-generated method stub
			doGet(req, resp);
		}
	}

注意:
1).當用戶第一次請求系統會創建出Servlet物件並且只建立一次
2).當用戶再次請求同一個Servlet時不會再建立新的Servlet物件而是多次呼叫服務方法
3).當停止伺服器呼叫銷燬方法
4).不管多少使用者(瀏覽器)訪問都只會建立一個Servlet
7.訪問Servlet的流程
1).伺服器接收使用者請求的網址
2).通過網址中的工程名在wtpwebapps檔案中找到對應的工程
3).在工程中找到web.xml檔案進行讀取
4).通過使用者的訪問網址中找到該路徑對應的servlet-name
5).通過servlet-name找到對應的servlet-class
6).通過servlet-class系統反射出該類的物件
7).呼叫servlet的生命週期方法