web-tomcat

tomcat初級學習

一、tomcat的目錄結構說明

  1.bin:可運行程序的目錄 startup.bat   shutdown.bat 等

  2.conf:配置文件目錄  tomcat-users.xml  server.xml

  3.lib:tomcat 運行時需要的依賴包

  4.logs:tomcat運行時的日誌文件存放目錄

  5.temp:tomcat運行時需要的臨時目錄

  6.webapps:我們將來存放我們自己開發web應用程序的默認目錄。重要!

  7.work:tomcat運行時的工作目錄


二、

Tomcat運行web應用程序:

1:靜態資源的方式:

     第一步: 在tomcat的webapps目錄下新建一個 文件夾,起名 webapp1

 

     第二步:進入webapp1目錄下,新建一個html頁面(.html/.htm),index.html

 

       

<!DOCTYPE html>

<html>

<head>

         <title>webapp1 - title</title>

</head>

<body>

  <h1>hello tomcat</h1>

</body>

</html>

 

 

第三步:保存,(有必要時,重啓tomcat服務器)讓tomcat運行我們的webapp1應用程序。

第四步:通過瀏覽器訪問我們的webapp1應用

        http://localhost:8080/webapp1/

     or http://localhost:8080/webapp1/index.html

     or  通過ip地址或者域名

       http://192.168.91.180:8080/webapp1/index.htm

      如果在局域網內,訪問自己架設的web網站,需要修改hosts文件

     C:\Windows\System32\drivers\etc\hosts 文件的內容,添加域名解析記錄

       例如:192.168.91.180newedu.com

 

     注意,因爲系統安全策略的問題, 默認情況下hosts文件沒有修改權限。

    需要添加可修改的權限

 

    

訪問web應用有一個默認訪問首頁的配置問題:

      默認情況下,tomcat,自動訪問 index.html/index.htm

 

2:動態資源的方式

      第一步: 在tomcat的webapps目錄下新建一個 文件夾,起名 webapp2

 

     第二步:進入webapp2目錄下,新建一個jsp頁面,index.jsp

 

       

<%@page language="java"

import="java.util.*"

pageEncoding="utf-8" %>

<!DOCTYPE html>

<html>

<head>

         <title>webapp1 - title</title>

</head>

<body>

 

 

  <h1>hello tomcat- dynamical page </h1>

  ${header["User-Agent"]}

</body>

</html>

 

 

第三步:保存,(有必要時,重啓tomcat服務器)讓tomcat運行我們的webapp2應用程序。

第四步:通過瀏覽器訪問我們的webapp2應用

 

      http://localhost:8080/webapp2/index.jsp

 

     WEB-INF下面的資源不能被用戶直接訪問;但是除了WEB-INF這個目錄其他的自己建立的目錄,都是可以被訪問的

例如:  /abc/  建了一個jsp頁面Index.jsp

  如果要訪問index.jsp,就需要訪問http://localhost:8080/webapp2/abc/index.jsp

 

   WEB-INF中可以放置 web.xml 文件,web.xml裏面可以對我們的webapp2項目做特殊配置:

比如說,歡迎頁面,或者叫首頁

(如何修改動態網站的歡迎頁面?)

  

<?xml version="1.0" encoding="ISO-8859-1"?>

 

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

  version="3.1"

  metadata-complete="true">

 

  <display-name>webapp2---jsp page</display-name>

  <description>

     Welcome to Tomcat

  </description>

  <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>123.jsp</welcome-file>

  </welcome-file-list>

 

</web-app>

 

 

Tomcat的主要工作:

 

    1: 提供一個web服務,提供給外部用戶,訪問;我們就可以添加自己的webapp,來達到架設自己網站的目的

   2:tomcat 將jsp 翻譯 成java代碼;

這個動作什麼時候 發生呢?

n  在用戶第一次訪問該jsp頁面時,自動將jsp頁面轉換爲一個java文件,

例如: index.jsp 轉換爲  index_jsp.java; 應該有一個類名index_jsp

      3:tomcat 將java代碼進行編譯compile;

      4:tomcat 初始化我們的index_jsp.java 類

      5:tomcat 調用index_jsp.java中的方法。

      

       注意:用戶在第2次訪問 jsp頁面時,直接執行 5步,直接調用index_jsp.java中的方法。

       面試題:爲什麼jsp頁面第一次訪問慢,第二次訪問快?

      

            

 

 

3:Eclipse 集成開發工具與tomcat的配置:

 

 

 

 

Ctl + S 保存,或者點擊上面的關閉按鈕,提示保存並關閉。完成tomcat的配置

 

4:Eclipse + tomcat 常見錯誤:

Address already use  jvm_bind

 

針對於端口被佔用的問題的通用解決辦法:

1) tomcat shutdown

2) tomcat下的目錄webapps 下的所有的無關web項目都刪除

3) 重啓啓動tomcat,即可。

 

5:Jsp頁面中的聲明

<%@ page

language="java"    -- 指定頁面中的開發語言,只能是java,沒有其他值

contentType="text/html;charset=utf-8"   -- 告訴瀏覽器,返回的頁面內容是文本文件類型的html小類型,並且 編碼方式爲utf-8

pageEncoding="utf-8"   (重要)-- 告訴 tomcat 該頁面保存時使用的編碼方式,並且eclipse工具有一個便捷的方式,如果修改了pageEncoding,頁面保存時的編碼方式,隨之改變,避免了亂碼問題的出現,可以與xml文件頭的encoding做類比記憶。

%>

 

 

 

http的協議解析:

    http的協議是一種無狀態的協議,基於tcp/ip協議:

      一個請求,一個響應構成了一次完成的http請求過程。

 

1:Request:

               

請求頭

請求頭的值

中文解釋

Accept

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

告訴tomcat webserver,客戶端瀏覽器可以接受的文檔類型

Accept-Encoding

gzip, deflate, sdch

可以接受gzip的壓縮方式

Accept-Language

zh-CN,zh;q=0.8,en;q=0.6

告訴tomcat,可以接受的語言

Connection

keep-alive

“讓子彈飛一會兒”讓服務於客戶端之間的連接時間延長一會兒,讓更多的資源被傳遞,提供瀏覽器的開始資源響應速度。

Cookie

JSESSIONID=52585D1EE5BDD782BE4B3F73E85B306D; tu=21b986504ef97a36723a58eb211cd330

在客戶端保存一些服務器的返回信息,以供下次訪問時使用,叫”小甜點”

DNT

1

?

Host

newedu.com:8080

Tomcat所在的主機域名以及端口

Upgrade-Insecure-Requests

1

Websocket http協議層面的支持

User-Agent

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36

我們使用的瀏覽器的所在客戶端信息。

Request URL

http://newedu.com:8080/webapp2/index.jsp

GET /webapp2/index.jsp HTTP/1.1

要從服務器訪問的資源名字以及路徑

Request Method

Get/post

請求方法

Remote Address

192.168.91.180:8080

客戶端的訪問的ip地址

 

 2:Response

 

 

 

 

 

Response 狀態

200 OK

Tomat響應的狀態碼

Content-Length

311

Tomcat服務器響應的內容字節長度

Server

Apache-Coyote/1.1

Tomcat的別名

Set-Cookie

JSESSIONID=0FBED8BE3DFBE778B121768FB7868F86; Path=/webapp2/; HttpOnly

Tomcat設置cookie的內容

Content-Type

text/html;charset=utf-8

服務端告訴瀏覽器,返回的內容類型以及編碼方式

Date

Sun, 18 Sep 2016 08:33:16 GMT

響應時間

 

     http的狀態碼分類:

200 – 成功

300 – 轉發

   304 緩存

400 – 客戶端錯誤

    404 –所請求的資源不存在。

500 – 服務端錯誤

 

 

 

3:總結:

   http協議的主要內容:

   一個http的請求協議格式:

         請求資源的路徑 GET /webapp2/index.jsp HTTP/1.1 

            很多的請求頭(鍵值對 map

            空格

            請求體爲空(因爲參數都放到了url中。例如:http://newedu.com:8080/jsp-day01/login.jsp?name=jerry&pwd=jerry

 

            如果使用Post方式,那麼參數就被放置到請求體中

             name=jerry&pwd=jerry

 

 

    一個http的響應協議格式:

             響應請求的狀態碼 HTTP/1.1 200 OK
             很多響應頭
             空格
             響應體(一般情況下,是準備要顯示的html頁面內容)

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章