Tomcat學習筆記—-本地部署servlet動態資源

codingcoge發表於2018-06-07

前言:

連結:Tomcat學習筆記–簡單瞭解和Web應用的目錄結構以及常見的Web應用時出現404錯誤

有問題:什麼是動態資源?

靜態資源:當使用者多次訪問這個資源,資源的原始碼永遠不會改變的資源
動態資源:當使用者多次訪問這個資源,資源的原始碼可能會發生改變。

Servlet : 用java語言來編寫動態資源的開發技術。

Servlet特點:

1)普通的java類,繼承HttpServlet類,覆蓋doGet方法
2)Servlet類只能交給tomcat伺服器執行(開發者自己不能執行)  
所以要配置web.xml具體下面會講

靜態訪問URL舉例:http://localhost:8080/xx/zz.html
動態訪問URL舉例:http://localhost:8080/xx/One
區別看到沒 動態結尾沒有字尾名,這個下面會解釋的。

進入正題:

第一步:建立一個servlet

為了 瞭解Tomcat部署的流程,我是照著例子手動敲了一個servlet例子。

編寫一個servlet程式,繼承HttpServlet

但是繼承HttpServlet需要一個jar包:servlet-api.jar
具體可以在 apache-tomcat-9.0.8lib中找到 新增到專案中然後build path即可

package first.one;

import java.io.IOException;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class first extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("codingCoge 的第一個動態頁面,純手寫,沒有用工具哈 時間是"+new Date());
    }

}

第二步:建立Web應用的目錄結構在Tomcat中:

apache-tomcat-9.0.8webapps中建立專案,名字自擬定。我這裡是xx
專案下建立 WEB-INF資料夾 是用來存放servlet之類的資料,是不可以被外人看到的。
你也可以在xx下面新增靜態的資源如開頭提到的:zz.html

靜態訪問URL舉例:http://localhost:8080/xx/zz.html

不過這裡要構造的是動態的。
具體的不多說了,看這個好了
連結:建立Web應用的目錄結構在Tomcat中

第三步:部署servlet到Tomcat環境中:

把servlet檔案存放到Web應用的目錄結構中的classes檔案中。
記住 :要把包也導進來 ,我這裡是這樣的:

apache-tomcat-9.0.8webappsxxWEB-INFclassesfirstone.first.class

one.first就是包名

第四步:配置web.xml檔案:

是schema約束的xml檔案 具體的可以去
W3school瞭解下

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    
  <servlet>
    <servlet-name>first</servlet-name>
    <servlet-class>first.one.first</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>first</servlet-name>
    <url-pattern>/One</url-pattern>
  </servlet-mapping>
  
</web-app>

注意:

1. One前面要+`/`  不然404錯誤
<url-pattern>/One</url-pattern>
2. 寫類名而不是   .class結尾
<servlet-class>first.one.first</servlet-class>

重點:

<servlet-name>first</servlet-name>  是內部名稱,可以自定義  
但是一般都是servlet類名,不要太隨便起的
  <url-pattern>/One</url-pattern>是url地址

順序:重中重:

http://localhost:8080/xx/One

 先訪問 <servlet-mapping>
    <url-pattern>/One</url-pattern>
  </servlet-mapping>
導航到:
<servlet-mapping>
     <servlet-name>first</servlet-name> //內部地址
</servlet-mapping>

再根據同名導航到:
 <servlet>
    <servlet-name>first</servlet-name>  //同名導航到這
    <servlet-class>first.one.first</servlet-class>  //再到這
  </servlet>
    

最後:

http://localhost:8080/xx/One

顯示的是:servlet所在地址

apache-tomcat-9.0.8webappsxxWEB-INFclassesfirstonefirst.class


相關文章