爲什麼學習B/S技術?
客戶端 服務器 C(Client)/S(Server)有侷限性,必須安裝客戶端
瀏覽器 服務器 B(Browser)/S(Server)無需安裝客戶端軟件,也無需更新
B/S與C/S的比較:
|
B/S架構 |
C/S架構 |
軟件安裝 |
瀏覽器 |
在響應速度和安全性上需要花費更多設計成本 |
升級維護 |
客戶端零維護 |
客戶端需要單獨維護和升級 |
平臺相關 |
與操作系統平臺的關係最小化 |
對客戶端操作系統一般有限制 |
性能安全 |
在響應速度和安全性上需要花費更多設計成本 |
能充分發揮客戶端處理能力,客戶端響應快 |
什麼是B/S技術:
B/S架構(瀏覽器/服務器):程序完全部署在服務器上
B/S技術的工作原理:
B/S架構採用請求/響應模式進行交互
URL(Uniform Resource Locator統一資源定位符):
URL的組成
http :// localhost:8080 / news/index.html
http:協議部分
localhost:8080:主機IP地址:端口號
news/index.html:項目資源地址
服務器:
圖片服務器
文件服務器
數據庫服務器
緩存服務器
應用服務器
Java Web ---> Web服務器
Web服務器:
是可以向發出請求的瀏覽器提供文檔的程序
提供網上的信息瀏覽服務
常用的Web服務器:
Microsoft:IIS
Apache: Tomcat
(Tomcat是開源的,小型的免費的)
Oracle:WebLogic
IBM:WebSphere
(前兩個商用的,安全級別更高)
Nginx
(穩定性高,佔用內存小,併發能力強)
Tomcat服務器:
Apache Jakarta的開源項目
輕量級應用服務器
開源、穩定、資源佔用小
JSP/Servlet容器
Tomcat的目錄結構:
目錄 |
說明 |
/bin |
存放各種平臺下用於啓動和停止Tomcat的腳本文件 |
/conf |
存放Tomcat服務器的各種配置文件 |
/lib |
存放Tomcat服務器所需的各種JAR文件 |
/logs |
存放Tomcat的日誌文件 |
/temp |
Tomcat運行時用於存放臨時文件 |
/webapps |
當發佈Web應用時,默認情況下會將Web應用的文件存放於此目錄中 |
/work |
Tomcat把由JSP生成的Servlet放於此目錄下 |
操作Tomcat注意事項:
1. startup.bat啓動後,不許關閉,一定是最小化
2. 如果Tomcat啓動時,窗口一閃而過
找到jdk D:\大數據\Java\Java jdk
環境變量path D:\大數據\Java\Java jdk\bin;
建立環境變量JAVA_HOME:D:\大數據\Java\Java jdk
CTRL+C:快速停止服務器
3. http://localhost:8080 端口號:8080 頁面進入到Tomcat啓動成功界面
4. 端口號修改:conf/server.xml
示例:
5. 如何在Tomcat中部署靜態網站
將網頁複製到webapps文件夾中去,然後startup.bat啓動後,再網頁中輸入http://localhost:8080/news/index.html
使用集成開發工具創建Web項目:
- 在MyEclipse中創建Web項目:File -> New -> Web Project
- 爲項目命名並調整相關設置
- 查看項目目錄結構
部署Web項目方法一:
1. 配置Tomcat
a. Window -> Preferences -> MyEclipse -> Servers -> Tomcat
b. 選擇Tomcat版本及安裝路徑
c. 設置爲可用狀態(Enable)
d. 指定Tomcat運行Java的運行環境
2. 部署Web項目
a. 單擊MyEclipse菜單欄上的部署圖標
b. 選擇需要部署的項目
c. 選擇Tomcat服務器並確認
部署Web項目方法二:
部署應用程序到Tomcat的webapps目錄:生成War包
部署Web項目方法三:
修改server.xml
<Context path="” docBase="”/>
提示:路徑中最好不要包含中文
JSP(Java Server Pages)概述:
- 運行在服務器端的Java頁面
- 使用HTML嵌套Java代碼實現
工作原理:
JSP中的page指令:
通過設置內部的多個屬性定義整個頁面的屬性
語法:
<%@ page 屬性1="屬性值" 屬性2="屬性值1,屬性值2"…屬性n="屬性值n"%>
常用屬性:
屬性 |
描述 |
默認值 |
language |
指定JSP頁面使用的腳本語言 |
java |
import |
通過該屬性來引用腳本語言中使用到的類文件 |
無 |
contentType |
用來指定JSP頁面所採用的編碼方式 |
text/html, ISO-8859-1 |
JSP中的聲明:
語法:
<%! Java代碼%>
示例:JSP頁面中定義方法對日期進行格式化
<%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=utf-8"%>
<html>
<%!
String formatDate(Date d){
SimpleDateFormat formater =
new SimpleDateFormat("yyyy年MM月dd日");
return formater.format(d);
}
%>你好,今天是
<%=formatDate(new Date()) %>
</body>
</html>
注:
方法聲明後可在頁面中多處調用
JSP中的out對象:
- out對象是JSP的內置對象:無需實例化即可使用
- 實現數據的輸出顯示
- out對象的方法
屬性 |
說明 |
|
向頁面輸出顯示 |
printIn |
向頁面輸出顯示,在結尾處添加換行 |
但是在實際頁面中print和println沒有區別,因爲在頁面中不會解析出println的換行;想要換行必須加<br/>
JSP中的註釋:
- HTML的註釋:<!-- html註釋-->
- JSP註釋:<%-- JSP註釋--%>
- 在JSP腳本中註釋:<%//單行註釋%>;<%/*多行註釋*/%>
網頁輸出文本:
1. 用Java語言輸出文本:
<% out.println("<h1>課工場Java Web高能充電</h1>"); %>
2. 直接用HTML輸出文本:
<h1>課工場Java Web高能充電</h1>
3. 使用<% out,print(); %>或<% out.printIn(); %>實現顯示頁面全部內容,這樣做的弊端:
①JAVA代碼與HTML標籤混在一起,可讀性不好,不利於修改
②顯示數據來自於數據庫,數據庫裏的數據不能寫死,要用變量來讀取寫在數據庫的內容
③因爲不方便所以這種方法用的比較少
4. 用變量的方法輸出文本:
<% String title="課工場Java Web高能充電"; %>
<h1> <%=title%></h1>
好處:直接在數據庫裏讀的時候直接調用後臺方法。
注:變量聲明的時候要在最後加一個分號(;),在調用的時候前面要寫(<%=),但是最後不能寫分號(;)
特殊字符轉義:
在JSP中特殊字符如:“”;<>;等。要用轉義字符(\)來轉義從而使用
<%String title="課工場\"Java Web\"高能充電";%>
<h1> <%=title%></h1>
示例解析:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page%>:這是一個配置指令會說明三個指令
language:說明編程語言,這裏用的是Java語言
import:代表頁面裏導入的一個包,這裏導入的是java.util.*包
pageEncoding:指的是頁面的編碼格式,這裏用的是UTF-8語言
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%......%>:要在這裏寫Java代碼,叫做Java的小腳本
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--<link rel="stylesheet" type="text/css" href="styles.css">-->
</head>
<body>
This is my JSP page. <br>
</body>
</html>
剩下的都是普通的html標籤
JSP頁面元素:
Web容器處理JSP文件請求:
第一次處理需要經過3個階段:
- 翻譯階段
- 編譯階段
- 執行階段
第一次請求之後,Web容器可以重用已經編譯好的字節碼文件:
如果對JSP文件進行了修改,Web容器會重新對JSP文件進行翻譯和編譯。
JSP聲明全局變量和方法:
<%//jsp中的局部變量和全局變量
int i = 9; %>
<h1><%=i++%></h1>
<%! int j = 9; %>
<h1><%=j++%></h1>
每次刷新i的值不會改變,j的值會每次加1
其中i是局部變量(JSP裏設定局部變量的方法:<%......%>),j是全局變量(JSP裏設定全局變量的方法:<%!......%>)
全局變量在源文件的位置:
要是設定一個方法用的符號是<%!......%>
如:
<%! public int add(){
return 8+9; } %>
方法在源文件的位置:
在頁面裏寫方法的做法不常見,後臺方法一般都寫在src裏
Web程序調試和排錯:
1. 404錯誤---找不到訪問的頁面或資源
①運行時,URL輸入錯誤
排錯方法:檢查URL
排除錯誤:使用正確的URL
②將頁面放在WEB-INF下
排錯方法:檢查文件的存放位置(META-INF,WEB-INF文件夾下的內容無法對外發布)
排除錯誤:把index.html文件拖至WebRoot文件夾下
③外部啓動Tomcat,未部署Web應用
排錯方法:檢查Web應用是否正確部署
排除錯誤:部署Web應用
2. 500錯誤---JSP頁面代碼有誤
JSP頁面代碼有錯誤
排錯方法:檢查myeclipse裏的報錯信息
排除錯誤:直接修改
3. 頁面無法顯示
未啓動Tomcat
排錯方法:檢查Tomcat服務能否正確運行
排除錯誤:
- 啓動Tomcat服務
- 如果控制檯上顯示Tomcat服務已啓動,觀察端口號是否與預期端口號一致,按照實際端口號重新運行
總結: