文章轉載自 https://www.cnblogs.com/1906859953Lucas/p/10821840.html
練習成品下載 https://www.lanzous.com/i9fljkj
對新手的提醒注意點(因為我也是新新手,以下是我忽略的坑):
1、需要提前安裝JDK環境 https://www.cnblogs.com/fengfengyue/p/11632256.html
2、需要配置環境變量 CATALINA_HOME :解壓目錄
3、程序要發布在webapps文件中
前提:假設你已經裝好了jdk
1.1 安裝一個eclipse或者MyEclipse(本文以eclipse為例),其實所謂的安裝就是網上去下載一個eclipse,然后解壓一下就好了。
1.2安裝tomcat,網上下載一個,然后解壓一下。我這次使用的tomcat容器配的是8080端口。
什么是JavaWeb項目,它能干嘛?
JavaWeb項目就是一個應用程序,你不要以為它有多么神秘。你每天打開的QQ就一個應用程序,你在手機上打開的微信,百度地圖等等,這些都是應用程序。
而Web項目是什么呢?
它也是一個應用程序,只不過它的客戶端是運行在瀏覽器上的。
我們打開瀏覽器,訪問一個地址,比如 http://www.jianshu.com/
有了web,我只需要有一個瀏覽器,然后就能通過互聯網獲取我想要的資源了。這樣不是很美妙嗎?
近幾年H5非常流行,尤其是移動端,因為手機瀏覽器基本上都支持css3。一樣的道理,我們肯定也不希望在手機上安裝一大堆應用,卡都卡死了,如果能直接訪問一個網頁,就能獲得我想要的服務就好了。
而且現在WIFI也普遍了,如果以后流量能沒有限制,那么APP的熱度很可能會逐漸被web取代。
手工搭建web項目
現在,為了說明服務器和web項目的概念,我們先不用eclipse,來手工搭建一個web項目。
服務器,正常情況下就是一台配置高一點的電腦,除非是那種大型的專用服務器。
一般來說,所謂的服務器,就是電腦。
比如我現在有一台電腦,給他裝了一個linux系統或者windos系統,然后我說,好了,從今以后,這就是服務器了。現在服務器一般都是用linux系統的。
那么tomcat又是什么?
tomcat其實也是一個應用程序,你網上下載的tomcat往往是一個壓縮包,然后我們解壓以后就相當於安裝好了。
可以這么理解:
服務器就是一台電腦,而tomcat是一個容器,專門存放web項目的容器。
以下我都將tomcat稱為tomcat容器。
我們看到在tomcat容器根目錄下,有一個webapps文件夾
里面是這樣的:
好的,現在我要發布一個項目了,我只需要把一個已經做好的web項目往里面一丟就行了。
除了webapps,我們還發現一個bin目錄。一般來說,可執行的文件都放在bin目錄下。
打開bin,找到一個startup.bat文件。這就是啟動tomcat的東西,雙擊它,tomcat就被啟動了。
然后,瀏覽器可以訪問tomcat里面的項目。在瀏覽器輸入http://127.0.0.1:8080/
現在我們來手工搭建一個web項目,首先,在webapps目錄下新建一個文件夾,是的,就是文件夾,不管你項目是什么,肯定還是放在文件夾里面的。
項目名稱就叫做webapp。
打開webapp,根據web項目的規范,我們需要有一個WEB-INF文件夾。
然后,在WEB-INF文件夾里面,必須要有一個web.xml文件。
xml文件,就是一個描述性的文件,我現在的觀點如下:
XML = JavaBean = Json = HashMap
它無非就是描述一些東西,保存一些數據而已。
好的,我們在里面新建一個web.xml。這個文件非常重要,正因為它的存在,tomcat容器才會知道這個文件夾里面竟然是一個web項目。
否則,tomcat容器是不知道這個web項目的,它只會將myapp文件夾看做是一個文件夾而已。
我們用記事本打開web.xml,將以下代碼拷貝進去。
1
2
3
4
5
6
7
8
9
10
11
12
|
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<web-app>
<display-name>web</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>
default
.html</welcome-file>
<welcome-file>
default
.htm</welcome-file>
<welcome-file>
default
.jsp</welcome-file>
</welcome-file-list>
</web-app>
|
XML的一個作用就是配置文件,web.xml本身就是一個配置文件。在web項目中,我們應用xml最多的也就是配置一些參數。
配置參數,就是給屬性賦值嘛,沒什么神秘的。
包括我們學習JavaSE,歸根到底,一直在做的一件事就是new對象,然后調用方法,調用方法的目的一方面是做一些事情,另一方面不還是給屬性賦值嘛。
你可以把web.xml看做是一個java類,類名叫做 webApp。它里面有兩個屬性,分別是display-name和welcome-file-list。
display-name是發布名稱,也就是項目的名字。
welcome-file-list 是歡迎頁面,就是說,當你在瀏覽器直接訪問這個myapp項目,默認跳轉的頁面。
想象一下,應該會變得非常好理解。
XML就是一個數據描述語言,我們通過web.xml描述這個項目的構成和配置。
好的,接下來,我們是不是要給他一個歡迎頁啊。嗯,我們在webapp目錄下添加一個簡單的歡迎頁,里面就打印一個HelloWorld。
1
2
3
4
5
6
7
8
9
10
11
12
|
<%@ page language=
"java"
contentType=
"text/html; charset=UTF-8"
pageEncoding=
"UTF-8"
%>
<!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"
>
<html>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<title>Insert title here</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
這是一條JSP的page指令,如果你用面向對象的思維來看待這個玩意,就是new了一個page對象,並且給它里面的language,contentType,charset,pageEncoding屬性分別賦了值。
language表示JSP頁面所用的語言,默認是java,其實你寫不寫都沒有關系,因為目前來說JSP它只支持Java。
contentType="text/html; charset=UTF-8":設置頁面的內容是文本或者html頁面,字符設置為UTT-8。
pageEncoding="UTF-8":頁面編碼設置為UTF-8。
好的,現在我們在bin目錄,雙擊運行startup.bat
啟動完畢。
打開瀏覽器,在地址欄輸入http://localhost:8080/myapp/
回車
哇,是不是出來了。
太棒了。
這就是手工搭建一個web項目的過程。
只要你符合web項目的規范,包括文件夾的名字,文件的名字,就會被tomcat容器識別為一個web項目。
接下來,我們來寫服務器代碼。
在WEB-INF下面新建一個文件夾,名字叫做classes,這個也是規范,就叫這個名字,否則tomcat容器識別不了。
里面在創建一個java文件,名字就叫Hello吧
用記事本打開,將下面的代碼拷貝進去。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public
class
Hello extends HttpServlet {
protected
void
doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
protected
void
doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.
out
.println(
"已經進入服務器..."
);
}
}
|
這是一個比較簡單的HttpServlet 程序,說到servlet,他的意思就是服務器小程序。
原來,在英文中,但凡是let結尾的單詞,都有微小的意思。比如servlet,server是服務器,let結尾,那么就是服務器小程序。
servlet是Server Applet的縮寫,我們再來看Applet,app是應用程序,又是let結尾,所以應該就是小的應用程序。
我們用命令行的方式將java文件編譯成class文件。
在編譯之前,我們先去tomcat容器的lib目錄找一個jar:
找到servlet-api.jar,復制一份,拷貝到classes目錄下。
然后,我們在該classes目錄下,按住shift,鼠標右鍵,選擇在此處打開命令行窗口。
輸入javac -classpath servlet-api.jar Hello.java
class文件就出來了
再次打開web.xml,我們還需要把這個servlet配上去,不然tomcat怎么知道這個servlet需要加入我們的web項目呢?
web.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<web-app>
<display-name>web</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>
default
.html</welcome-file>
<welcome-file>
default
.htm</welcome-file>
<welcome-file>
default
.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-
class
>Hello</servlet-
class
>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
|
雙擊startup.bat,啟動tomcat容器
然后,在瀏覽器的地址欄輸入http://localhost:8080/myapp/hello
發現網頁上一片空白,回顧我們的servlet程序,按理說控制台會打印一句話的
看看控制台:
你應該也已經發現了,我們手工搭建web項目的話,是不是很麻煩呀?所以,這也是為什么我們現在都用eclipse,或者MyEclipse來開發項目了。
這些IDE工具就是為了解決手工編譯的麻煩而出現的。