javaWeb之tomcat

1. 課程簡介
    JDBC接口: Java代碼和數據庫之間交互的規則.
    Servlet接口: 服務器軟件和Java代碼之間交互的規則.
    Http協議: 瀏覽器和服務器軟件之間交互的規則.

2. Web開發的常用概念
    Web資源: 
        存在於Web服務器, 供外界訪問的資源就是Web資源.
        //例如: 存在於Web服務器內部的: html,js,圖片, 視頻等資源.

        分類:
            靜態資源: 指web頁面中供人們瀏覽的數據是始終不變的.
                //例如: 圖片, 視頻, 音頻, html文件, js文件等.
                //例如:優酷上掛的電影,我們之前寫的html頁面。

            動態資源: 指web頁面中供人們瀏覽的數據是由程序產生的, 不同的時間點訪問web頁面看到的內容各不相同. 
                //Javaweb領域的動態資源: 指通過Java代碼生成html, 例如: JSP/Servlet, ASP, PHP等.
                //例如:12306買票:不同時刻票數不同。

    常用的Web服務器:
        Tomcat:它是一個免費,開源的web服務器,支持servlet規範和jsp規範,它不支持JavaEE的13種規範, 所屬公司爲: Apache公司。
        //tomcat軟件早期屬於sun公司,是sun公司的架構師詹姆斯·鄧肯·戴維森開發的,後來sun公司爲了推動Java語言的發展,無償將Tomcat捐助給Apache公司。
        Weblogic: 大型的收費服務器, 它完美支持JavaEE的所有規範,所屬公司:Oracle。
        //如果將來想自己開公司, 可以看下Oracle公司的發展史, 會有幫助的.
        Websphere:大型的收費服務器,它完美支持JavaEE的所有規範,所屬公司: IBM。
        JBOSS: 是一個基於J2EE的開放源代碼的應用服務器。


3. tomcat的安裝和關閉
    下載:
        http://tomcat.apache.org

    tomcat文件夾中的各個文件夾解釋:
        bin: 裏邊記錄的是tomcat的一些指令.
            //掌握: startup.bat, shutdown.bat
        conf: 配置文件.
            //掌握: server.xml, web.xml
        libs: 引入的jar包.
        logs: 日誌文件
        temp: 臨時文件.
        webapps: 裏邊放的是我們寫的Java項目
        work: 和JSP相關的.  //目前先了解, Day13講解.

        1. tomcat是綠色版軟件, 解壓直接使用.
        2. 找到tomcat\bin\startup.bat, 雙擊運行.
        3. 打開瀏覽器, 輸入 ip:端口號, 如果提示tomcat頁面則說明安裝成功.
            /*
                例如: 192.168.81.66:8080
                如果操作本機, 可以下如下的形式:
                    127.0.0.1:8080
                    localhost:8080
            */
        //注意: 安裝路徑不要出現中文,空格,特殊符號等.  


    遇到的問題:
        1) 發生閃退: 
            沒有配置JAVA_HOME環境變量, 配置下即可.
        2) 端口號被佔用了
            方式一: 
                A: 在DOS命令窗口中輸入: netstat -nao, 查找佔用該端口號的程序的 pid值.
                B: 打開任務管理器, 選擇"詳細信息", 找到該pid值對象的應用程序.
                C: 關閉該應用程序, 然後重新開啓tomcat程序即可.

            方式二:
                A: 找到tomcat\conf\server.xml文件.
                B: 修改端口號即可.


4. tomcat發佈項目
    直接把項目複製到: tomcat\webapps文件夾中即可.

    然後在瀏覽器中輸入: http://IP:端口號/項目名/指定的html頁面,  即可訪問指定的頁面.

    畫圖演示: tomcat訪問html文件的原理圖.


5. 配置新的Eclipse
    1) 切換新的工作空間.
    2) 修改工作空間的編碼集.
        //碼錶改爲: utf-8
    3) 顯示行號
    4) 修改字體大小
    5) 配置Eclipse的智能提示鍵.


6. Eclipse集成tomcat
    1) 加載tomcat服務器文件.
    2) 調出servers視圖.
    3) 配置tomcat服務器.
        A: 選擇"use tomcat installation", 即: 使用tomcat的安裝路徑.
        B: 選擇: tomcat\webapps路徑.
        C: 啓動時間改爲145秒.
    4) 保存配置文件.
    5) 啓動tomcat服務器即可.


7. Eclipse發佈web項目
    1) 新建一個文本項目: Dynamic Web Project(動態的Web項目)
        //注意: 選擇Tomcat7.0, version選擇: 2.5
    2) 修改試圖爲: Java試圖.
        window -> perspective -> open perspective -> Java
    3) 在WebContent目錄下新建一個HTMl頁面. 
        /*
            注意: 
                項目下的"WebContent"文件夾是通過瀏覽器不能直接訪問的.
                因爲裏邊記錄的是項目的一些配置信息.
        */

    4) 調出"servers"服務器試圖.
        wiundow -> show view -> other -> Servers
    5) 選擇"Tomcat v7.0 Server at localhost" --> 右鍵, 選擇"項目名" --> add --> finish --> 啓動tomcat服務器即可.
    6) 同一網絡內的電腦即可通過: http://ip:端口號/項目名/要訪問的頁面 的方式進行訪問指定頁面了.

    補充演示: 
        Eclipse發佈web項目和手動發佈項目的區別:
            Eclipse發佈web項目:
                1. 相當於把WebContent文件夾複製到Webapps文件夾中.
                2. 然後修改文件夾名爲: 項目名.
                3. 同時會同步將.java文件編譯成.class文件, 放入WEB-INF/classes文件中.
            手動發佈項目:
                只有前兩步, 沒有上述的第三步操作.

8. Servlet的快速入門
    Servlet概述: 服務器認識Java代碼的規則.

    步驟: //大白話: 就是掩飾瀏覽器訪問Java代碼
        1) 新建一個類(HelloServlet)實現Servlet接口.
            //該類可以放在 com.itheima.web包下(後邊講分層詳細講解)
        2) 重寫接口中所有的抽象方法.
            //在service()方法中, 給瀏覽器寫一句回執信息(先不要寫中文).
            response.getWriter().print("this is HelloServlet' Method" + new Date().toLocaleString());
        3) 在web.xml中 註冊和映射.
            <!-- 確定訪問的Java代碼 -->
                <servlet>
                    <!-- 起別名,可以隨便寫 -->
                    <servlet-name>abc</servlet-name>
                    <!-- 確定唯一的Java代碼, 要寫全類名 -->
                    <servlet-class>com.itheima.web.HelloServlet</servlet-class>
                </servlet>

            <!-- 確定瀏覽器訪問Java代碼的路徑 -->
                <servlet-mapping>
                    <!-- 起別名, 要和上邊的別名一致 -->
                    <servlet-name>abc</servlet-name>
                    <!-- 
                        第一個"/"表示:         http://ip:端口號/項目名/  
                        "/helloServlet"表示:  http://ip:端口號/項目名/HelloServlet
                        -->
                    <url-pattern>/HelloServlet</url-pattern>
                </servlet-mapping>

    注意: 
        request: 請求, 瀏覽器給服務器傳輸的數據.
        response: 響應, 服務器給瀏覽器傳輸的數據.

        ctrl + shift + 字母R: 可以快速搜素項目下的文件.


9. Servlet的細節:
    1) 根據ip和端口號, 找到對應的軟件: tomcat.
    2) tomcat根據項目名找到對應的項目, 進而可以找到web.xml文件.
    3) 再根據web.xml文件中的資源路徑找到對應類的全路徑.
    4) 服務器將其(第三步)找到的 全路徑的類.


10. Servlet的生命週期
    1) 構造Servlet, 然後使用init方法將其初始化.
    2) 處理來自客戶端的對 service()方法的所有調用.
    3) 從服務中取出Servlet, 然後使用destroy()方法銷燬它, 
       最後進行垃圾回收並終止它.


    規律:
        1) 每次訪問Servlet, 都會調用service()方法.
        2) 第一次訪問, 會調用構造和初始化方法, 只會調用一次.
        3) 當前Servlet類被銷燬時纔會調用銷燬方法.


11. servlet和httpServlet的關係
    每次我們都需要新建一個類, 然後去實現Servlet接口, 重寫接口中所有的方法, 最後在配置web.xml文件. 這樣做比較麻煩, 我們就想着, 能不能優化這個步驟呢?
    新建一個 servlet即可(程序會自動讓該類去繼承HttpServlet, 然後自動配置web.xml文件). 

    關係:
        Servlet接口:      
            //定義了服務器和Java代碼交互的規則

        GenericServlet類:    
            //一般的servlet, 只是實現了方法, 注意: 不針對任何協議.

        HTTPServlet類:
            //針對HTTP協議做的實現.
            //HTTP有8種不同的請求方式, 其中get和post是最常見的請求方式.

        自定義的Servlet:  
            //例如:Demo1Servlet類
            //只需要重寫: doGet()方法和doPost()方法即可.


        service()方法和 doGet(),doPost()方法的練習?
            1. 在service()方法中, 獲取請求的方式.
            2. 判斷:
                如果是get請求方式, 調用doGet()方法.
                如果是post請求方式, 調用doPost()方法.


12. 給瀏覽器響應中文內容  
    doGet()方法:
        作用: 處理get方式的請求

        哪些請求方式屬於get方式?
            1. <form>表單, method="get"
            2. 超鏈接<a>
            3. 通過地址欄直接訪問.

    doPost()方法:
        作用: 處理post方式的請求

        哪些請求方式屬於post方式?
            表單<form>, method="post"

    //response.setContentType("text/html;charset=utf-8");



13. servlet模板
    發現新建Servlet類後,自動生成的註釋很麻煩, 我們自己新建一個Servlet模板.
    window -> preferences -> java -> editor -> templates --> 
    add -> name值: servlet,描述信息: servlet模板, 代碼直接粘貼即可 -> 
    保存並應用.


14. URL-Pattern的書寫方式
    我們目前寫的<url-pattern>是全路徑方式訪問, 可以寫多個.
        //全路徑訪問方式: http://ip:端口號/項目名/文件名
        例如:
            <servlet-mapping>
                <servlet-name>Demo3</servlet-name>
                <url-pattern>/demo3</url-pattern>
                <url-pattern>/demo3/aaa</url-pattern>
                <url-pattern>/demo3/aaa/bbb</url-pattern>
                <url-pattern>/demo3/aaa/bbb/ccc</url-pattern>
            </servlet-mapping>

    可以優化爲: 通過 通配符匹配, 要求前半部分一樣.
        格式: 
            // <url-pattern>/名字/*</url-pattern>
        特點: 
            前半部分(*之前的部分)一樣, 
            後半部分(*之後的部分)可以隨便寫(因爲 * 代表所有)

    也可以優化爲: 通過 擴展名匹配, 要求後綴名一樣.
        格式:
            // <url-pattern>*.do</url-pattern>
            //後綴名可以自定義.

    優先級如下:      //建議
        全路徑  >  通配符  >  擴展名

    總結:
        如果級別相同, 取相似度最高的.


15. 獲取參數
    用戶在瀏覽器可能通過<form>標籤提交到服務器一些數據, 我們怎麼知道用戶提交的是什麼標籤, 什麼值呢?
    這就需要用到: 獲取參數.

    HTTPServletRequest類中的方法:
        String getPrrameter(String name);   //根據表單項name的屬性值, 獲取非多選框的值.
        String[] getParameterValues(String name);  //根據表單項name的屬性值, 獲取多選框的值.
        Map getParameterMap();  //由服務器創建的map, 表單項的name屬性值作爲key, 用戶填寫或者選擇的值作爲值.



16. 登陸案例: 需求分析和數據準備.
    1)分析:
        A: 用戶在瀏覽器中輸入用戶名和密碼, 點擊提交按鈕進行提交.
        B: 數據提交到後臺(服務器)後, 再去數據庫查找有無該條數據.
        C: 如果有就提示登錄成功, 如果沒有就提示登錄失敗.

    2) 數據準備:
        create database day10_db;

        use day10_db;

        create table user(
            id int primary key auto_increment,
            username varchar(50) unique not null,
            password varchar(50) not null,
            nickname varchar(50)
        );

        insert into user values(null, 'zhangsan','123','張三');

    3) 新建一個Dynamic Web Project項目.
        A: 把要用的jar包拷貝到lib文件夾中
        B: 把c3p0-config.xml文件複製到src文件夾下.
        C: 把工具類拷貝到com.itheima.utils包下.
        D: 新建一個JavaBean類(User), 字段名要和數據庫表名一致.

17. 登錄案例        
    1) 在WebContent文件夾下新建一個: login.html頁面.
        <form action="/day1002/loginServlet" method="post">
            用戶名: <input type="text" name="username" /> <br />
            密碼: <input type="password" name="password" /> <br />
            <input type="submit" value="登錄" />
        </form>














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章