完成一個JavaWeb專案的全過程(從軟體安裝到程式碼)
第一大步驟:軟體安裝教程;
1.eclipse安裝
https://www.cnblogs.com/ForestDeer/p/6647402.html
2.tomcat安裝
https://blog.csdn.net/u014543872/article/details/79568712
3.資料庫安裝
http://www.cnblogs.com/sshoub/p/4321640.html
4.Sqlyang破解版下載
http://www.onlinedown.net/soft/24926.htm
第二大步驟:
1.如何利用eclipse建立一個java web專案?
https://blog.csdn.net/qq_25646191/article/details/78776136
2.根據教程實現一個完整的javaweb專案
https://www.cnblogs.com/optblogs/p/7880996.html
3.javaweb學習路線
https://www.cnblogs.com/aishangJava/p/5970576.html
https://blog.csdn.net/yl1712725180/article/details/79329865
第三步驟:我最近的學習感受+一個程式詳解+知識點
模組一:
I.簡介JavaWEB程式
JavaWeb專案就是一個應用程式,你不要以為它有多麼神祕。你每天開啟的QQ就一個應用程式,你在手機上開啟的微信,百度地圖等等,這些都是應用程式。
不同的是,QQ是一個本地客戶端程式,它需要你在自己的電腦上安裝一個客戶端,然後你開啟QQ,可以登入,聊天。
QQ肯定也分客戶端和服務端,我們電腦上裝的就是客戶端,你要知道的一點是,我們傳送訊息,傳送到哪裡去了呢?
沒錯,肯定是傳送到QQ的伺服器上了,那裡儲存著我們的所有資料。
想想也不可能在本地,因為我們在電腦上傳送的訊息,在手機QQ上不是也能看到嗎?這就說明,肯定是上傳到它的伺服器然後儲存下來了。
而Web專案是什麼呢?
它也是一個應用程式,只不過它的客戶端是執行在瀏覽器上的。
我們開啟瀏覽器,訪問一個地址,比如 http://www.jianshu.com/
這個就是我們的訪問路徑,我們通過這個URL向簡書的伺服器提交請求,然後伺服器進行處理,給你迴應。
接下來,我們就看到出來一個網頁。
我們在這個網頁上可以寫文章,點贊,收藏,等等。
我們的每一步操作,其實都和伺服器做了一個互動。
比如一個登入功能,當我們滑鼠點選那個登入按鈕,瀏覽器就向伺服器提交了一個請求,伺服器進行處理,然後操作資料庫。最終,它會得出一個結果,就是說,到底能不能讓你登入,總會有個說法。
如果你密碼寫錯了,它可能就會得出一個使用者名稱或密碼錯誤的結論。然後,這個資訊會從伺服器返回到前臺,前臺就是瀏覽器。
所謂的前臺就是你的瀏覽器,沒什麼神祕的。
前臺接受到後臺傳過來的資訊後,進行一些處理,然後給你個提示,比如,告訴你使用者名稱或密碼錯誤。
這就是一個完整的互動過程。
現在隨著網速越來越好,瀏覽器的效能越來越強大,我想web肯定是未來的大趨勢。畢竟,誰都不希望在電腦上安裝一大堆客戶端吧。
只用一個瀏覽器多好。
有了web,我只需要有一個瀏覽器,然後就能通過網際網路獲取我想要的資源了。這樣不是很美妙嗎?
II.不建議一開始就看視訊,先把那些基礎理論知識過一次,心裡有點踏實了,到了需要敲大量程式碼的階段再看視訊。
模組二:擡頭看路
Javaweb學習總結
http://www.cnblogs.com/xdp-gacl/p/3729033.html
Java Web專案開發到底需要掌握哪些技術?
https://blog.csdn.net/javaniuniu/article/details/51880901
零基礎如何系統學習Java Web?
https://www.zhihu.com/question/31151832
模組三:知識點
javaweb製作流程的形象理解
1.有關資料庫的知識點:
【MYSQL的概述】
- 什麼是資料庫:
資料庫就是一個檔案系統,需要通過標準SQL語句才能訪問.
【MYSQL的安裝和解除安裝】
安裝和解除安裝的過程記錄下伺服器安裝的路徑和資料檔案存放的路徑.解除安裝的時候將這個兩個路徑下的檔案一併都刪除掉.
【建立資料庫】
語法:
* create database 資料庫名;
【檢視資料庫】
* 檢視資料庫伺服器中的所有的資料庫:show databases;
【刪除資料庫】
* drop database 資料庫名稱;
【修改資料庫】
* alter database 資料庫名
【其他的資料庫操作命令】
* 切換資料庫:use 資料庫名;
* 檢視正在使用的資料庫:select database();
【建立表】
create table 表名(
欄位名 型別(長度) 約束,
欄位名 型別(長度) 約束
);
單表約束:
* 主鍵約束:primary key
* 唯一約束:unique
* 非空約束:not null
建立一個分類表:
分類ID int型別主鍵 自動增長
分類名稱 字串型別 長度20
create table category(
cid int primary key auto_increment,
cname varchar(20)
);
***** 注意:建表之前一定先選擇資料庫.
【查看錶】
檢視資料庫中的所有表:show tables;
查看錶結構:desc 表名;
【刪除表】
drop table 表名;
【修改表】
alter table 表名 add 列名 型別(長度) 約束; --修改表新增列.
alter table 表名 modify 列名 型別(長度) 約束; --修改表修改列的型別長度及約束.
alter table 表名 change 舊列名 新列名 型別(長度) 約束; --修改表修改列名.
alter table 表名 drop 列名; --修改表刪除列.
rename table 表名 to 新表名; --修改表名
【插入記錄】
語法:
* insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列
* insert into 表 values (值1,值2,值3..); --向表中插入所有列
【修改記錄】
語法:
* update 表名 set 欄位名=值,欄位名=值 [where 條件];
【刪除記錄】
語法:
* delete from 表名 [where 條件];
【查詢記錄】
語法:
* select [distinct]*[列名,列名] from 表 [where 條件].
建立商品表:
建立商品表:
create table products(
pid int primary key auto_increment,
pname varchar(20),
price double,
pnum int,
cno int,
pdate timestamp
);
【多表查詢】
- 交叉連線查詢(基本不會使用-得到的是兩個表的乘積)
語法:
* select * from A,B;
2.有關前端頁面的知識點:
【HTML的概述】
- 什麼是HTML
HTML:Hyper Text Markup Language 超文字標記語言
l 超文字:比文字功能更加強大
l 標記語言:通過一組標籤對內容進行描述的一門語言
- 為什麼學習HTML
HTML是設計頁面基礎
- 在哪些地方可以使用HTML
設計頁面的時候都可以使用HTML
- 如何使用HTML
HTML的語法和規範
l HTML檔案的副檔名是.html或者是.htm
l HTML檔案是由頭和體組成
l HTML這組標籤是不區分大小寫
l HTML的標記通常是由開始標籤和結束標籤組成:<b>內容</b> <br/>
【HTML的字型標籤】
<font>標籤
<font 屬性名=”屬性值”>文字</font>
l size:控制字型大小.最小1 最大7
l color:控制字型顏色. 使用英文設定 ,使用16進位制數設定
l face:控制字型.
【HTML的排版標籤】
<hn>標題標籤
<h1>b標題</h1>
<p>段落標籤
<p>一段文字</p>
<br/>換行標籤
<br/>代表換行
<hr/>水平線標籤
<b>字型加粗
<b>文字</b>
<i>斜體標籤
<i>斜體</i>
【HTML的圖片標記】
<img />
l src:圖片的路徑
l width:圖片寬度
l height:圖片的高度
l alt:圖片提示
圖片路徑:
l 分成相對路徑和絕對路徑
l 相對路徑:
n ./ :代表當前路徑
n ../ :代表上一級路徑
【超連結標籤】
<a>超連結</a>
l href:超連結跳轉的路徑
l target:開啟方式
n _self:在自身頁面開啟
n _blank:開啟一個新視窗
表格的屬性:
l border :表格邊框
l width :表格寬度
l height :表格高度
l align :水平方向對齊方式 left center right
l bgcolor :背景色
3.使用JDBC完成對於分類的CRUD的操作
【JDBC的回顧】
- JDBC的概念:
JDBC:Java Data Base Connectivity.
- 驅動:
- JDBC的開發步驟:
步驟一:註冊驅動.
步驟二:獲得連線.
步驟三:建立執行SQL語句物件.
步驟四:釋放資源.
- JDBC的API的詳解:
DriverManager:
* 註冊驅動:
* 獲得連線:
Connection:
* 獲得執行SQL語句物件.
* Statement createStatement();
* PreparedStatement prepareStatement(String sql);
* CallableStatement prepareCall(String sql);
* 進行事務管理:
* setAutoCommit(boolean flag);
* commit();
* rollback();
Statement:
* 執行SQL語句:
* int executeUpate(String sql); --執行insert update delete語句.
* ResultSet executeQuery(String sql); --執行select語句.
* boolean execute(String sql); --執行select返回true 執行其他的語句返回false.
ResultSet:
* 遍歷結果集:next();
* 獲得結果集中的資料.getXXX(int c); getXXX(String name);
1 package com.itheima.jdbc.utils; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.IOException; 6 import java.sql.Connection; 7 import java.sql.DriverManager; 8 import java.sql.ResultSet; 9 import java.sql.SQLException; 10 import java.sql.Statement; 11 import java.util.Properties; 12 13 /** 14 * JDBC的工具類 15 * @author apple 16 * 17 */ 18 public class JDBCUtils { 19 public static final String DRIVERCLASS; 20 public static final String URL; 21 public static final String USERNAME; 22 public static final String PASSWORD; 23 24 static{ 25 // 獲得屬性檔案中的資料. 26 Properties properties = new Properties(); 27 try { 28 properties.load(new FileInputStream("src/db.properties")); 29 } catch (FileNotFoundException e) { 30 e.printStackTrace(); 31 } catch (IOException e) { 32 e.printStackTrace(); 33 } 34 35 DRIVERCLASS = properties.getProperty("jdbc.driverClass"); 36 URL = properties.getProperty("jdbc.url"); 37 USERNAME = properties.getProperty("jdbc.username"); 38 PASSWORD = properties.getProperty("jdbc.password"); 39 } 40 41 // 載入驅動: 42 public static void loadDriver(){ 43 try { 44 Class.forName(DRIVERCLASS); 45 } catch (ClassNotFoundException e) { 46 // TODO Auto-generated catch block 47 e.printStackTrace(); 48 } 49 } 50 51 // 獲得連線: 52 public static Connection getConnection(){ 53 loadDriver(); 54 Connection conn = null; 55 try { 56 conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); 57 } catch (SQLException e) { 58 // TODO Auto-generated catch block 59 e.printStackTrace(); 60 } 61 return conn; 62 } 63 64 // 釋放資源: 65 public static void release(Statement stmt,Connection conn){ 66 if(stmt != null){ 67 try { 68 stmt.close(); 69 } catch (SQLException e) { 70 // TODO Auto-generated catch block 71 e.printStackTrace(); 72 } 73 stmt = null; 74 } 75 76 if(conn != null){ 77 try { 78 conn.close(); 79 } catch (SQLException e) { 80 e.printStackTrace(); 81 } 82 conn = null; 83 } 84 } 85 86 public static void release(ResultSet rs,Statement stmt,Connection conn){ 87 if(rs!= null){ 88 try { 89 rs.close(); 90 } catch (SQLException e) { 91 e.printStackTrace(); 92 } 93 rs = null; 94 } 95 if(stmt != null){ 96 try { 97 stmt.close(); 98 } catch (SQLException e) { 99 // TODO Auto-generated catch block 100 e.printStackTrace(); 101 } 102 stmt = null; 103 } 104 105 if(conn != null){ 106 try { 107 conn.close(); 108 } catch (SQLException e) { 109 e.printStackTrace(); 110 } 111 conn = null; 112 } 113 } 114 }程式碼實現之抽取工具類:
4. 什麼是XML
XML全稱為Extensible Markup Language,意思是可擴充套件的標記語言。XML語法上和HTML比較相似,但HTML中的元素是固定的,而XML的標籤是可以由使用者自定義的。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5"> 3 <servlet> 4 <servlet-name>HelloMyServlet</servlet-name> 5 <servlet-class>cn.itcast.HelloMyServlet</servlet-class> 6 </servlet> 7 <servlet-mapping> 8 <servlet-name>HelloMyServlet</servlet-name> 9 <url-pattern>/hello</url-pattern> 10 </servlet-mapping> 11 </web-app>配置檔案
1 <?xml version="1.0" encoding="UTF-8"?> 2 <persons> 3 <person id="p001"> 4 <name>張三</name> 5 </person> 6 <person id="p002"> 7 <name>李四</name> 8 </person> 9 </persons>存放資料
1.1.1.1 XML 語法
l XML文件宣告
<?xml version="1.0" encoding="UTF-8"?>
- 文件宣告必須為<?xml開頭,以?>結束;
- 文件宣告必須從文件的0行0列位置開始;
- 文件宣告只有三個屬性:
a) versioin:指定XML文件版本。必須屬性,因為我們不會選擇1.1,只會選擇1.0;
b) encoding:指定當前文件的編碼。可選屬性,預設值是utf-8;
c) standalone:指定文件獨立性。可選屬性,預設值為yes,表示當前文件是獨立文件。如果為no表示當前文件不是獨立的文件,會依賴外部檔案。
l 元素
<servlet>
- 元素是XML文件中最重要的組成部分,
- 普通元素的結構開始標籤、元素體、結束標籤組成。例如:<hello>大家好</hello>
- 元素體:元素體可以是元素,也可以是文字,例如:<b><a>你好</a></b>
- 空元素:空元素只有開始標籤,而沒有結束標籤,但元素必須自己閉合,例如:<c/>
- 元素命名:
a) 區分大小寫
b) 不能使用空格,不能使用冒號:
c) 不建議以XML、xml、Xml開頭
- 良好的XML文件,必須有一個根元素。
l 屬性
<web-app version="2.5">
- 屬性是元素的一部分,它必須出現在元素的開始標籤中
- 屬性的定義格式:屬性名=屬性值,其中屬性值必須使用單引或雙引
- 一個元素可以有0~N個屬性,但一個元素中不能出現同名屬性
- 屬性名不能使用空格、冒號等特殊字元,且必須以字母開頭
l 註釋
XML的註釋與HTML相同,即以“<!--”開始,以“-->”結束。註釋內容會被XML解析器忽略!
l 轉義字元
XML中的轉義字元與HTML一樣。
因為很多符號已經被XML文件結構所使用,所以在元素體或屬性值中想使用這些符號就必須使用轉義字元,例如:“<”、“>”、“’”、“””、“&”。
5.Servlet
【Servlet的概述】
- 什麼是Servlet:
是執行在伺服器端的一小的Java程式,接收和響應從客戶端傳送請求.
- Servlet的作用:
處理客戶端的請求,並且對請求作出響應.
- 使用Servlet:
Servlet的入門:
* 編寫一個類實現Servlet介面.
public class ServletDemo1 implements Servlet{
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
// System.out.println("");
response.getWriter().println("Hello Servlet...");
}
...
}
* 配置Servlet到WEB伺服器.
<!-- 配置Servlet -->
<servlet>
<!-- Servlet的名稱 -->
<servlet-name>aaa</servlet-name>
<!-- Servlet的類的全路徑 -->
<servlet-class>com.itheima.servlet.demo1.ServletDemo1</servlet-class>
</servlet>
<!-- 配置Servlet的對映 -->
<servlet-mapping>
<!-- Servlet的名稱 -->
<servlet-name>aaa</servlet-name>
<!-- Servlet的訪問路徑 -->
<url-pattern>/servletDemo1</url-pattern>
</servlet-mapping>