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>
javaWeb之tomcat
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.