1、JavaWeb概念
Java web,是用java技術來解決相關web互聯網領域的技術的總稱。web包括:web服務器和web客戶端兩部分。java在最早web客戶端的應用有java applet程序,不過這種技術在很久之前就已經被淘汰了。java在服務器端的應用非常豐富,
比如Servlet,jsp和第三方框架等等。java技術對web領域的發展注入了強大的動力
簡單的說,就是使用java語言實現瀏覽器可以訪問的程序內容。稱之為Java Web。
javaweb開發是基於請求和響應的:
請求:瀏覽器(客戶端)向服務器發送信息
響應:服務器向(客戶端)瀏覽器回送信息
請求和響應是成對出現的。
2、web資源分類:
所謂web資源即放在Internet網上供外界訪問的文件或程序,又根據它們呈現的效果及原理不同,將它們划分為靜態資源和動態資源。靜態web資源:固定不變數據文件(靜態網頁 HTML、CSS文件、文本、音頻、視頻)
靜態web技術:HTML+CSS+JavaScript
動態web資源:一段服務程序,運行后,生成的數據文件
動態web技術:servlet,jsp,PHP, .net ,ruby、Python等等
3、常見的web服務器
web服務器簡介:
Tomcat:由Apache組織提供的一種Web服務器,提供對jsp和Servlet的支持。它是一種輕量級的javaWeb容器(服務器),也是當前應用最廣的JavaWeb服務器(免費)。
Jboss:是一個遵從JavaEE規范的、開放源代碼的、純Java的EJB服務器,它支持所有的JavaEE規范(免費)。
GlassFish: 由Oracle公司開發的一款JavaWeb服務器,是一款強健的商業服務器,達到產品級質量(應用很少,收費)。
Resin:是CAUCHO公司的產品,是一個非常流行的應用服務器,對servlet和JSP提供了良好的支持,性能也比較優良,resin自身采用JAVA語言開發(收費,應用比較多)。
WebLogic:是Oracle公司的產品,是目前應用最廣泛的Web服務器,支持JavaEE規范,而且不斷的完善以適應新的開發要求,適合大型項目(收費,用的不多,適合大公司)。
3.1、Tomcat服務器
開源小型web服務器 ,完全免費,主要用於中小型web項目,只支持Servlet和JSP 等少量javaee規范(就是JavaWeb編程接口)
3.2、tomcat服務器與servlet版本的關系
servlet:sun公司提供的用於開發動態web資源的技術。jsp:(java server page),java提供的一門開發web網頁的技術。
tomcat軟件:Java開發的。java軟件運行的時候需要jdk。
向下兼容。tomcat7也支持servlet3.0/jsp2.2規范,可以支持javaee6.0當前企業常用的版本 6.* / 7.*/8.*
3.3、tomcat下載和安裝說明
到http://tomcat.apache.org 下載1) Tomcat首頁
2)Tomcat下載
3)下載后的包
4)安裝:解壓
5)tomcat的安裝目錄介紹:
bin:可以執行文件。
conf:tomcat服務器的配置文件
lib:tomcat啟動后需要依賴的jar包
logs:tomcat工作之后的日志文件
webapps:是tomcat布暑工程的目錄。work:jsp文件在被翻譯之后,保存在當前這個目錄下,session對象被序列化之后保存的位置
3.4、Tomcat服務器啟動(**重點)
注意事項:
1、JAVA_HOME:環境變量。並且配置到jdk的目錄,其完整過程如下:
打開控制台(cmd命令打開窗口)。輸入java -version測試
2、啟動tomcat目錄。 tomcat目錄/bin/startup.bat(window啟動文件) 找到startup.bat 雙擊運行。會有一個黑窗口,黑窗口不要關閉。(如果關閉,相當於把tomcat停止了。)
3、在瀏覽器地址欄中輸入:http://localhost:8080 或者 http://127.0.0.1:8080localhost ,如果看到如下頁面,證明啟動成功
3.5、配置tomcat的端口(****重點)
tomcat默認的端口是8080(訪問端口)
http的默認端口是80,如果訪問的時候輸入http://www.baidu.com相當於http://www.baidu.com:80。當真正在項目上線之后,通常采用80,修改方法如下:
1)找到tomcat目錄/conf/server.xml
2)修改port的值,將port端口的值修改為80
3)然后在瀏覽器中輸入 http://127.0.0.1:80 或 http://127.0.0.1 訪問測試![]()
訪問成功!!!
3.6、catalina run 啟動Tomcat
Tomcat啟動,還有一種啟動的方法就是在命令行中,先把你的當前目錄切換 到你tomcat目錄\bin目錄下,如下是我的位置
再執行catalina run 這個命令啟動Tomcat。這個命令有什么好處。當Tomcat啟動失敗的時候,會有一閃而過的情況,
當我們使用catalina run 這個命令啟動Tomcat的時候,哪怕有錯誤,我們也可以清楚的看到tomcat失敗的原因。不會一閃而過。
3.7、tomcat關閉
有三種方法。第一種:Ctrl+C鍵 關閉Tomcat服務器
第二種:點擊Tomcat窗口的右上角關閉按鈕 (暴力停止服務器)
第三種:找到tomcat目錄/bin/shutdown.bat文件,雙擊執行關閉Tomcat。
4、常用的布署工程到Tomcat中的兩種方式
把我們自己書寫的html,servlet這些信息,部署到tomcat的方式。
4.1、第一種方法:在tomcat目錄/conf/server.xml 配置---了解
在conf/server.xml文件的host元素中配置,例如:在host標簽內書寫如下內容
<Context path="/atguigu" docBase="D:\atguigu"/>
<Context path=”瀏覽器要訪問的目錄---虛擬目錄” docBase=”網站所在磁盤目錄”/>
配置好之后,要重啟服務器。
缺點(Tomcat7.0之后):如果配置錯誤:tomcat會啟動失敗。(如果tomcat里面存放的其他的網站),其他網站也會停機。
4.2、第二種方式:將網站目錄復制到tomcat/webapps目錄(常用,必須掌握)
有一個網站(一個文件夾),把文件夾復制到tomcat的webapps目錄下。文件夾的名字,就是網站或者工程的訪問目錄.相當於之前配置 <Context path=”” 的配置
4.3、把網站目錄壓縮成war包部署到tomcat中
war包:就是一個壓縮文件 zip格式的壓縮文件。 只不過擴展名不是.zip 而是.war把我們的項目進行壓縮zip,改成war,把war文件拷貝到tomcat/webapps目錄下
步驟1、把文件夾中的內容壓縮成zip的格式,點擊一個要部署的文件夾下面,全選 然后壓縮
步驟2、修改文件的后綴名為.war
步驟3.把war文件復制到webapps目錄下。tomcat會自己把war的文件進行解壓
4.4、webapps目錄下/ROOT工程的訪問
當我們在瀏覽器中直接輸入http://ip地址:端口號 那么 默認訪問的是Tomcat目錄/webapps/ROOT目錄如果webapps下面有一個ROOT的項目。那么在訪問的時候,直接可以省略項目的名字/ 表示找到root目錄
5、整合Tomcat和Eclipse開發工具中(***常用必須掌握)
5.1、打開Eclipse的Server視圖窗口
第一種情況,直接打開Servers窗口
第二種情況,搜索Servers窗口打開![]()
圖一,打開總的eclipse視圖
圖二:輸入Server過濾出服務器窗口選項
Servers服務器窗口已成功打開,如下圖:![]()
5.2、創建Tomcat 服務器
1)在Servers窗口中,點擊 創建 server 的文字提示連接。如下圖:
2)創建一個新的Tomcat服務器實例![]()
3)點擊Browse按鈕,打開目錄選擇窗口。選擇Tomcat 解壓目錄
5)Tomcat目錄選擇好之后,點擊 【Next】按鈕繼續操作![]()
7)Tomcat 服務器創建成功!!!
5.3、啟動Eclipse中的Tomcat服務器
1)Debug模式啟動Tomcat服務器提示當前為Debug模式啟動!!!
Tomcat啟動成功的控制台提示!!!![]()
Run模式啟動顯示
Tomcat啟動成功的控制台提示!!!![]()
5.4、停止 Eclipse 中的Tomcat 服務器
暴力停止 Tomcat (相當於電腦被拔掉電源一樣。沒有執行關機的准備操作。)正常停止 Tomcat (相當於點擊操作系統中的關機按鈕,執行關機保存操作,然后關機)![]()
5.5、配置Eclipse 中的Tomcat 布暑的Web工程路徑
1)打開Servers窗口,雙擊Tomcat v6.0 Server 服務器打開 Tomcat的配置窗口這里是Eclipse把工程發布后的三種不同的選項。![]()
2)Tomcat 位置-選項介紹說明:
2.1、User workspance metadata (does not modify Tomcat installation) 將在eclipse的工作區間目錄下eclipse的工作空間目錄\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\ 有一份tomcat的拷貝所有布暑的web工程都會布暑到eclipse的工作空間目錄\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps目錄中
2.2、 User Tomcat installation (takes control of Tomcat installation) 在原Tomcat目錄下做更改操作所有布暑的web工程都會發布到Tomcat目錄下的\wtpwebapps目錄中
2.3、 User custom location ( does not modify Tomcat installtion ) 自定義一個目錄去布暑Web工程
比如操作如下:
一:選擇自定義的布暑目錄
二:選擇你自定義的目錄,然后點擊確定。之后Tomcat的一些目錄會被拷貝過來。布暑的工程也在這個目錄下的wtpwebapps目錄下
三:選中你要布暑的工程,右鍵選擇菜單 Run As --->>> Run on Server 將工程布暑到剛剛自定義的目錄下。
四:選擇你當前的web工程需要使用的哪個服務器運行。
如果勾選中 Always use this server when running this project 表示下次運行服務器的時候默認使用當勾時時候選擇的服務器運行。
六:在瀏覽器中輸入http://127.0.0.1:8080/day06/index.html 測試查看
6 HTTP協議介紹
6.1、 HTTP協議
1.HTTP(hypertext transport protocol),即超文本傳輸協議。這個協議詳細規定了瀏覽器和萬維網服務器之間互相通信的規則。2.客戶端與服務端通信時傳輸的內容我們稱之為報文。
3.HTTP就是一個通信規則,這個規則規定了客戶端發送給服務器的報文格式,也規定了服務器發送給客戶端的報文格式。實際我們要學習的就是這兩種報文。客戶端發送給服務器的稱為”請求報文“,服務器發送給客戶端的稱為”響應報文“。
大白話說,什么是協議。是雙方相互約定好的規則;比如:租房協議:租房協議就是租客和房東之間相互約定好的租房規則
6.2、請求的協議格式
請求的HTTP協議格式:請求行
請求頭
空行
請求體
GET請求協議格式 (get請求沒有請求體)
POST請求協議格式![]()
6.3、常見請求頭的說明
GET /Hello/index.jsp HTTP/1.1:GET請求,請求服務器資源的路徑 Hello/index.jsp, 協議為http 版本為1.1;
Host:localhost:請求的主機名為localhost;
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0…:與瀏覽器和OS相關的信息。有些網站會顯示用戶的系統版本和瀏覽器版本信息,這都是通過獲取User-Agent頭信息而來的;
Accept: */*:告訴服務器,當前客戶端可以接收的數據類型, */*,就表示什么都可以接收;
Accept-Language: zh-CN:當前客戶端支持的語言,可以在瀏覽器的工具選項中找到語言相關信息;
Accept-Encoding: gzip, deflate:支持的壓縮格式。數據在網絡上傳遞時,可能服務器會把數據壓縮后再發送;
Connection: keep-alive:客戶端支持的鏈接方式,保持一段時間鏈接,默認為3000ms;
6.4、get請求和post請求都分別是哪些?
GET請求
1)、輸入瀏覽器地址欄輸入地址,直接按回車
2)、點擊<a>超鏈接
3)、GET請求 表單提交
4)、script src=””,引入外部文件
5)、img src=”路徑”,引入圖片
6)、引入外部css。。。
POST請求
1)只有表單提交的時候method=post,提交表單就是發post請求
6.5、響應的協議格式
響應的HTTP協議格式響應首行
響應頭信息
空行
響應體
6.6、常見的響應碼
響應碼對瀏覽器來說很重要,它告訴瀏覽器響應的結果;200:請求成功,瀏覽器會把響應體內容(通常是html)顯示在瀏覽器中;
404:請求的資源沒有找到,說明客戶端錯誤的請求了不存在的資源;
500:請求資源找到了,但服務器內部出現了錯誤;
302:請求重定向,當響應碼為302時,表示服務器要求瀏覽器重新再發一個請求,服務器會發送一個響應頭Location,它指定了新請求的URL地址;
7、servlet(重點*****)
7.1、servlet簡介
servlet 是運行在 Web 服務器中的小型 Java 程序。servlet 通常通過 HTTP(超文本傳輸協議)接收和響應來自 Web 客戶端的請求。要實現此接口,可以編寫一個擴展 javax.servlet.GenericServlet 的一般 servlet,或者編寫一個擴展 javax.servlet.http.HttpServlet 的 HTTP servlet。
此接口定義了初始化 servlet 的方法、為請求提供服務的方法和從服務器移除 servlet 的方法。這些方法稱為生命周期方法,它們是按以下順序調用的:
1.構造 servlet,然后使用 init 方法將其初始化。Servlet:
2.處理來自客戶端的對 service 方法的所有調用。
3.從服務中取出 servlet,然后使用 destroy 方法銷毀它,最后進行垃圾回收並終止它。
1、接受瀏覽器發送過來的消息。
2、給瀏覽器返回消息。瀏覽器認識html。可以動態去輸出html
7.2、servlet快速入門
7.2.1、如何創建動態的Web工程
1)先創建 動態的Web工程2) 配置工程的選項![]()
3)勾選生成web.xml配置文件![]()
4)動態web工程創建完成!!!
5)web工程的介紹和說明![]()
7.2.2、手動編寫servlet實現
寫servlet做兩件事1、實現servlet接口。 由sun公司定義的一個接口。(定義一個規范)sun公司定義一個servlet的規范。定義了servlet應該有哪些方法,以及方法需要的參數。
2、把類部署到web服務器中(tomcat)。
1、實現servlet接口(javax.servlet.Servlet)
2、重寫service方法(service方法每次請求都會調用一次)
- package com.atguigu.web;
- import java.io.IOException;
- import javax.servlet.Servlet;
- import javax.servlet.ServletConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- public class Hello implements Servlet{
- @Override
- public void destroy() {
- // TODO Auto-generated method stub
- System.out.println("Servlet銷毀了!");
- }
- @Override
- public ServletConfig getServletConfig() {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public String getServletInfo() {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public void init(ServletConfig arg0) throws ServletException {
- // TODO Auto-generated method stub
- System.out.println("ServerConfig 初始化了");
- }
- @Override
- public void service(ServletRequest arg0, ServletResponse arg1)
- throws ServletException, IOException {
- // TODO Auto-generated method stub
- System.out.println("hello servlet service方法被調用");
- }
- }
當瀏覽器輸入地址,訪問servlet的時候,servlet會執行servcie方法。
3、在WebContent/WEB-INF/web.xml中配置servlet的訪問路徑 。瀏覽器訪問servlet的路徑
web.xml(新建web工程的時候,eclipse自動創建出來的)的位置:在web.xml的根標簽下,直接書寫如下內容。
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
- <display-name>day06</display-name>
- <servlet>
- <servlet-name>Hello</servlet-name>
- <servlet-class>com.atguigu.web.Hello</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>Hello</servlet-name>
- <url-pattern>/hello</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.htm</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- <welcome-file>default.html</welcome-file>
- <welcome-file>default.htm</welcome-file>
- <welcome-file>default.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
4、把項目部署到tomcat中,去啟動tomcat。在地址欄中輸入信息,訪問servlet
控制台打印:![]()
7.2.3、訪問servlet的細節
瀏覽器地址欄中輸入:http://localhost:8080/day06/hello訪問過程分析:

7.2.4、servlet生命周期
Servlet的生命周期1.調用 init 方法 初始化Servletinit方法:當服務器創建一個serlvet的時候,會去調用init方法。當我們第一次去訪問一個servlet的時候,會去創建這個servlet對象。並且只會創建一次。如果配置了load-on-startup 表示服務器啟動的時候就創建servlet實例。
2.調用 Servlet中的service方法 處理請求操作
3.調用 destory方法 執行Servlet銷毀的操作
service方法:客戶端每一次請求,tomcat都會去調用servcie方法。處理用戶的請求。並且給其響應。每一次請求都會調用servcie方法。
estroy 方法:當服務器銷毀一個servlet的時候,會調用里面的destory方法。當我們的web服務器,正常關閉的時候,會去調用destroy方法。否則不會調用destroy的方法。
7.3、使用Eclipse創建Servlet程序(重點*****)
1)通過Eclipse自動新建一個Servlet程序2)修改Servlet的訪問url地址![]()
3)勾選需要生成的Servlet方法![]()
4) 查看自動生成的結果內容!!!
5) 在瀏覽器中輸出http://127.0.0.1:80/day06/helloServlet 訪問測試![]()
訪問成功![]()
7.4、Servlet是單例的。Servlet中的變量,它有線程安全問題。