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伺服器預設網頁
訪問地址:
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的生命週期方法