JavaWeb笔记01
文章目錄
- JavaWeb(狂神說Java)
- 1.基本概念
- 1.1前言
- 1.2web應用程序
- 1.3靜態web
- 1.4 動態web
- 2.web服務器
- 2.1技術講解
- 2.2web服務器
- 3.Tomcat
- 3.1安裝Tomcat
- 3.2啟動與配置
- 文件夾作用
- 啟動和關閉
- 3.3配置
- 3.4高難度面試題
- 3.5發布一個web網站
- 4.Http
- 4.1什么是HTTP
- 4.2兩個時代
- 4.3HTTP請求
- 1.請求行
- 2.消息頭
- 4.4HTTP響應
- 1.響應體
- 2.響應狀態碼(重點)
- 常見面試題(伴隨javaweb學習過程中)
- 5.Maven
- 5.1Maven項目架構管理工具
- 5.2下載安裝Maven
- 5.3配置環境變量
- 5.4阿里云鏡像
- 5.5本地倉庫
- 5.6在IDEA中maven的操作
- 創建maven項目(通過模板創建)
- 創建普通maven項目
- 5.7標記文件夾功能
- 5.8配置Tomcat
- 5.9 pom文件
- 5.10IDEA操作
JavaWeb(狂神說Java)
Java Web
1.基本概念
1.1前言
本文是看b站上面的遇見狂神說記錄的筆記
web開發:
-
web 是網頁開發的意思,表示我們可以從網頁上面獲取資源 www.baidu.com
-
靜態web
-
html css
-
提供給所有人看的數據始終不會發生變化
-
-
動態web
-
淘寶,幾乎所有的網站都是動態web
-
提供給所有人看的數據是會發生變化的,每一個人在不同的時間,不同的地點,看到的信息各不相同
-
技術棧: Servlet/JSP, ASP,PHP
在Java中,動態web資源開發的技術稱為JavaWeb
-
1.2web應用程序
web應用程序:可以提供瀏覽器訪問的程序
- 像a.html,b.html等等多個web資源,這些web資源都可以被外界訪問,對外提供服務
- 我們所能夠訪問的任何一個頁面或者資源,都是存在于這個世界的某一個角落的計算機上面的
- url:統一資源定位符 ? 后面回過頭看
- 這個統一的web資源會被放在同一個文件夾下面,但是這些web應用程序,我們不能直接訪問它,需要借助Tomcat服務器
- 一個web應用由多個部分組成(靜態web,動態web)
- html css js
- jsp servlet
- java程序
- jar包
- 配置文件(Properties)
web應用程序編寫完成以后,如果想要提供給外界來訪問,需要一個服務器來統一管理
1.3靜態web
- .html,.htm這些都是網頁的后綴,如果服務器上一直存在這些東西的話,我們就可以直接進行讀取
-
靜態web存在的缺點
-
web頁面無法動態更新,所有人看到的都是一樣的頁面
- 輪播圖,點擊特效:做了一個偽動態的效果
- 我們可以用JavaScript來做出動態效果
-
它不能和數據庫進行交互,數據無法持久化,用戶不能交互
-
1.4 動態web
頁面會動態展示,它的展示效果因人而異
缺點:
- 加入服務器的動態web資源出現了錯誤,我們就需要重新編寫我們的后臺程序,重新發布
- 這就意味著要停機維護
優點
-
web頁面可以動態更新
-
它可以和數據庫進行交互 (數據持久化 比如說注冊信息)
2.web服務器
2.1技術講解
JSP/Servlet:
B/S:瀏覽器,服務器
C/S客戶端和服務端
- sun公司主推的b/s架構
- 基于Java語言的(所有的大公司,或者一些開源的組件,都是用Java寫的)
- 可以承載三高問題帶來的影響:高性能,高并發,高可用
2.2web服務器
接收用戶請求,給用戶返回響應
服務器是一種被動的操作,用來處理用戶的一些請求和給用戶一些相應信息
Tomcat
Tomcat實際上運行的是JSP頁面和Servlet
工作3-5年后,可以嘗試寫Tomcat服務器
下載Tomcat:
1.安裝或解壓
2.了解配置文件以及目錄結構
3.知道這個東西的作用
3.Tomcat
3.1安裝Tomcat
1.Tomcat官網https://tomcat.apache.org/
3.2啟動與配置
文件夾作用
bin目錄:用來放啟動和關閉的腳本文件
conf:配置
lib:放依賴的jar包
logs:發存放網站的
一個文件夾代表一個web應用?
啟動和關閉
點擊bin目錄—startup.bat—雙擊就啟動起來了
注意:startup.bat打開以后不要關閉
然后在網站輸入localhost:8080
這樣就可以進入tomcat網站
訪問測試 http://localhost:8080
可能遇到的問題:
1.Java環境沒有配置 因為Tomcaat是Java寫的
2.閃退問題:需要配置兼容性
3.亂碼問題:需要在配置文件中設置
點擊conf
3.3配置
- Tomcat的默認端口號是:8080
- mysql:3306
- http:80
- https:443
<Connector port="8081" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
可以配置主機的名稱
- 默認的主機名是:localhost–>127.0.0.1
- 默認網站應用存放的位置位:webapps
<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true">
3.4高難度面試題
請你談談網站是怎么進行訪問的
1.輸入一個域名:然后按回車
2.檢查本機的:C:\Windows\System32\drivers\etc\hosts配置文件下有沒有這個域名的映射
1.有:直接返回對應的ip地址,這個地址中,有我們需要訪問的web程序
? 2.沒有:去DNS服務器找 (DNS就是管理所有域名的地方)
? 找到的話就返回,找不到的話就返回找不到
理解:
客戶端發起請求,假設發送的請求是:www.baidu.com,這個請求不是直接拿到的
客戶端有一個hosts配置文件,他在:C:\Windows\System32\drivers\etc
客戶端會先去hosts看看有沒有這個域名的配置文件
3.5發布一個web網站
不會就先模仿
- 把自己寫的網站,放在服務器(Tomcat)中指定的web應用程序夾(webapps)下,
就可以訪問網站應有的結構
---webapps :Tomcat服務器的web目錄-ROOT-kuangstudy :網站的目錄名-WEB -INF-classes :Java程序-lib:web應用所依賴的jar包-web.xml:網站配置文件-index.html:網站默認的首頁-static :靜態資源文件-css-style-js-img...
4.Http
4.1什么是HTTP
HTTP(超文本傳輸協議),是一個簡單的請求-響應協議,它通常運行在TCP之上
- 文本:html,字符串…
- 圖片,聲音,視頻,定位,地圖
- 默認端口號:80
HTTPS:安全的
默認端口號:443
4.2兩個時代
- http1.0
- HTTP/1.0:客戶端可以和web服務器連接后,只能獲得一個web資源
- 當我們請求第二次的時候,也不能獲得資源,因為斷開連接了
- http2.0
- HTTP/1.1:客戶端可以和web服務器連接后,可以獲得多個web資源
4.3HTTP請求
-
客戶端–發送請求(Request)–服務器
我們輸入百度地址,點擊回車,在網頁上查看請求過程
Request URL:https://www.baidu.com/ 請求地址
Request Method:GET 請求方法
Status Code:200 OK 狀態碼
Remote(遠程) Address:14.215.177.39:443
Reffer Policy:no-referrer-when-downgrade
Accept:text/html
Accept-Encoding:gzip,deflate,br
Accept-Language:zh-CN,zh;q=0.9 語言
Cache-Control:max-age=0
Connection:keep-alive
1.請求行
- 請求行中的請求方式:GET
- 請求方式:**GET ** , POST ,HEAD,DELETE,PUT,TRACT
- get:請求方式所能夠攜帶的參數比較少,大小有限制,會在瀏覽器的URL地址欄顯示數據信息,不安全,但是效率高
- post:請求方式所能夠攜帶的參數沒有限制,大小沒有限制,不會在瀏覽器的URL地址顯示數據信息,但是安全
2.消息頭
Accept: 告訴瀏覽器,它所支持的數據類型
Accept-Encoding:支持哪一種編碼方式
Accept-Language: 告訴瀏覽器,它的語言環境
Cache-Control: 緩存控制
Connection: 告訴瀏覽器,請求完成是斷開還是保持連接
HOST:主機
4.4HTTP響應
- 服務器端----響應—客戶端
百度:
Cache-Control:private 緩存控制
Connection:Keep-Alive 連接
Content-Encoding:gzip 編碼
Content-Type:text/html 類型
1.響應體
Accept: 告訴瀏覽器,它所支持的數據類型
Accept-Encoding:支持哪一種編碼方式
Accept-Language: 告訴瀏覽器,它的語言環境
Cache-Control: 緩存控制
Connection: 告訴瀏覽器,請求完成是斷開還是保持連接
HOST:主機Refresh: 告訴客戶端,多久刷新一次
Location: 讓網頁重新定位
2.響應狀態碼(重點)
200:請求響應成功
3**:請求重定向
- 重定向:你重新到我給你指定的新位置去
4**:找不到資源 404
- 資源不存在
5**:服務器代碼錯誤 500
? 502叫網關錯誤
常見面試題(伴隨javaweb學習過程中)
當你的瀏覽器中地址欄輸入地址并回車的一瞬間到頁面能夠顯示回來,經歷了什么?
5.Maven
為什么要學習這個技術
1.在javaweb開發中,需要使用大量的jar包,需要手動導入
2.如何能夠讓一個東西自動幫我們導入和配置這個jar包
? 由此,Maven就誕生了
Maven是國外的
5.1Maven項目架構管理工具
我們目前就是用來導入jar包的
Maven的核心思想:約定大于配置
- 有約束,不要去違反
Maven會規定號我們要怎么去編寫我們的java代碼,必須按照這個要求來,主要是規范我們代碼要寫在哪一個目錄下面
5.2下載安裝Maven
官網 https://maven.apache.org
下載完成后,解壓即可
5.3配置環境變量
在我們的系統環境變量中
配置如下變量:
- M2_HOME maven目錄下面的bin目錄
- MAVEN_HOME :maven目錄
- 在系統的path中配置MAVEN_HOME %MAVEN_HOME%\bin
- 測試maven是否安裝完畢
5.4阿里云鏡像
- 鏡像:mirrors
- 作用:加速我們的下載
- 國內建議使用阿里云的鏡像
<mirrors><mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>https://maven.aliyun.com/repository/public </url></mirror></mirrors>
5.5本地倉庫
在本地的倉庫,原創倉庫
建立一個本地倉庫:localRepository
<localRepository>D:\Program Files\apache-maven-3.8.4-bin\apache-maven-3.8.4\maven-repo
</localRepository>
5.6在IDEA中maven的操作
創建maven項目(通過模板創建)
1.創建MavenWeb項目
2.等待項目初始化完畢
出現 BUILD SUCCESS 說明成功
3.觀察maven項目多了什么東西
4.idea中的maven設置
4.idea中的maven設置
idea項目創建成功以后,看一眼maven的配置
點擊菜單欄View->Tool Windows->Maven projects
創建普通maven項目
這個只有在Web應用下才會有
5.7標記文件夾功能
5.8配置Tomcat
解決警告問題
為什么會有警告問題
必須要配置:為什么會出現這個問題:我們訪問一個網站的時候,需要指定一個文件夾的名字
然后啟動Tomcat
5.9 pom文件
pom.xml是maven的核心配置文件
<?xml version="1.0" encoding="UTF-8"?><!--Maven的版本和頭文件 --><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!--這里就是我們剛剛配置的GAV--><groupId>com.kuang</groupId><artifactId>javaweb-01-maven</artifactId><version>1.0-SNAPSHOT</version><!--java的打包方式jar:java應用war:JavaWeb應用--><packaging>war</packaging><name>javaweb-01-maven Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><!--配置文件--><properties><!--項目的默認編碼--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--編譯版本--><maven.compiler.source>1.8</maven.compiler.source><!--配置文件--><maven.compiler.target>1.8</maven.compiler.target></properties><!--項目依賴--><dependencies><!--靜態依賴的jar包配置文件--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version></dependency></dependencies><!--項目構建用的東西--><build><finalName>javaweb-01-maven</finalName><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.2.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin></plugins></pluginManagement></build>
</project>
maven的高級之處在于,它會子哦對那個幫你導入這個jar包所需要的其他jar包
maven的約定大于配置,它規定好我們的Java代碼要寫在哪一個包下面,如果我們不這樣做的話,甚至都建不了Java
maven由于它的約定大于配置,我們之后可能會遇到我們寫的配置文件,無法被導出或者生效問題,解決方案:
<!--在build中配置resources:來防止我們資源導出失敗-->
<build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>
5.10IDEA操作
總結
以上是生活随笔為你收集整理的JavaWeb笔记01的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 类和对象的内存分配机制
- 下一篇: 解决:Plugin ‘maven-com