1. 程式人生 > >java web專案的部署描述檔案--web.xml

java web專案的部署描述檔案--web.xml

java學習記錄(11)

java web專案的部署描述檔案–web.xml

提綱

  1. web.xml是什麼
  2. java web專案的啟動過程
  3. web.xml中的一些標籤的含義
  4. 專案中的web.xml的解釋

1 web.xml是什麼

   java web專案用部署描述檔案來決定URLS與servlets的對映,哪些URLS需要進行驗證等。這個部署描述檔案是web.xml,它在java web專案打包war下面的WEB-INF目錄下面,是java web專案中serverlet標準的一個部分。

2 java web專案的啟動過程

   web.xml有多項標籤,在其載入的過程中順序依次為:context-param >> listener >> fileter >> servlet​。(同類多個節點以出現順序依次載入)
1. ​web.xml先讀取context-param和listener這兩種節點;
2. 然後容器建立一個ServletContext(上下文),應用於整個專案;
​3. 容器會將讀取到的context-param轉化為鍵值對並存入servletContext;
​4. 根據listener建立監聽;
5. 容器會讀取,根據指定的類路徑來例項化過濾器;
6. 此時專案初始化完成;
7. 在發起第一次請求是,servlet節點才會被載入例項化。​

3 web.xml中的一些標籤的含義

(1) XML文件有效性檢查

   不同的版本的web.xml文件書寫有不同的格式。下面是3.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">
</web-app>

(2)display-name

   定義了web相應的名稱,在把war檔案放入到tomcat中在manager中就可以檢視到對應的web名稱。

<display-name>sshTest</display-name>

(3)context-param

   1 context-param 定義了程式執行的上下文的一些引數,這裡定義的是applicationContext.xml的檔案路徑。

<context-param>
        <param
-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext*.xml</param-value> </context-param>

   2 context-param值的獲取,例如上例中的contextConfigLocation,可以在aciton中通過ServletActionContext來獲取相關的引數。

String param_name=ServletActionContext.getServletContext().getInitParameter("contextConfigLocation");
        System.out.println(param_name);

   3 context-param的使用

什麼情況下使用,為什麼使用context-param:
比如:定義一個管理員email地址用來從程式傳送錯誤,或者與你整個應用程式有關的其他設定。使用自己定義的設定檔案需要額外的程式碼和管理;直接在你的程式中使用硬編碼(Hard-coding)引數值會給你之後修改程式帶來麻煩,更困難的是,要根據不同的部署使用不同的設定;通過這種辦法,可以讓其他開發人員更容易找到相關的引數,因為它是一個用於設定這種引數的標準位置。
   4 spring的配置
配置Spring,必須需要listener,而context-param>可有可無,如果在web.xml中不寫context-param>配置資訊,預設的路徑是/WEB-INF/applicationContext.xml,在WEB-INF目錄下建立的xml檔案的名稱必須是applicationContext.xml。如果是要自定義檔名可以在web.xml里加入contextConfigLocation這個context引數:在param-value>裡指定相應的xml檔名,如果有多個xml檔案,可以寫在一起並以“,”號分隔,比如在business-client工程中,我們採用了自定義配置方式,context-param配置如下:

<!-- spring -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

(4)listener

listener 為web應用程式定義監聽器,監聽器用來監聽各種事件,比如:application和session事件,所有的監聽器按照相同的方式定義,功能取決去它們各自實現的介面,常用的Web事件介面有如下幾個:
1) ServletContextListener:用於監聽Web應用的啟動和關閉;
2) ServletContextAttributeListener:用於監聽ServletContext範圍(application)內屬性的改變;
3) ServletRequestListener:用於監聽使用者的請求;
ServletRequestAttributeListener:用於監聽ServletRequest範圍(request)內屬性的改變;
4) HttpSessionListener:用於監聽使用者session的開始和結束;
5) HttpSessionAttributeListener:用於監聽HttpSession範圍(session)內屬性的改變。
listener主要用於監聽Web應用事件,其中有兩個比較重要的WEB應用事件:應用的啟動和停止(starting up or shutting down)和Session的建立和失效(created or destroyed)。應用啟動事件發生在應用第一次被Servlet容器裝載和啟動的時候;停止事件發生在Web應用停止的時候。Session建立事件發生在每次一個新的session建立的時候,類似地Session失效事件發生在每次一個Session失效的時候。為了使用這些Web應用事件做些有用的事情,我們必須建立和使用一些特殊的“監聽類”。它們是實現了以下兩個介面中任何一個介面的簡單java類:javax.servlet.ServletContextListener或javax.servlet.http.HttpSessionListener,如果想讓你的類監聽應用的啟動和停止事件,你就得實現ServletContextListener介面;想讓你的類去監聽Session的建立和失效事件,那你就得實現HttpSessionListener介面。

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener> 

(5)filter

<!-- struts2 -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

(6)welcome-file-list

   初始頁,包含多個以此嘗試

<welcome-file-list>
    <!-- /WEB-INF/jsp/login.jsp -->

        <welcome-file>/index.html</welcome-file>
    </welcome-file-list>

參考連結

相關推薦

java web專案部署描述檔案--web.xml

java學習記錄(11) java web專案的部署描述檔案–web.xml 提綱 web.xml是什麼 java web專案的啟動過程 web.xml中的一些標籤的含義 專案中的web.xml的解釋 1 web.xml是什麼    jav

eclipse中web專案部署以後jsp的java檔案找不到問題(Tomcat配置serverlocations)

我的開發環境:eclipse kepler (4.3)+tomcat7.0.42. 在我想看eclipse中web專案jsp檔案被tomcat轉換成java以後的java原始檔的位置。發現正常情況下的webapps以下。沒有看到我部署的專案 同一時候,work資料夾(jsp的工

web專案部署到tomcat特定路徑、埠(配置server.xml檔案

前言 本文將解決以下問題: 如何將Linux下任意位置的專案(虛擬目錄)部署到tomcat? 如何將專案部署到伺服器特定埠? 如何在一個伺服器上部署多個web應用? 本例中系統:Linux v

maven web 專案部署到tomcat 下面無web.xml檔案

發現問題的原因:寫了一個簡單的Spring MVC 專案,web.xml,springmvc.xml 配置都是對的,專案部署到tomcat下面啟動正常,無任何錯誤,但是啟動tomcat 後,通過瀏覽器訪問controller,但是無論如何都無法訪問,tomcat無任何日誌。

Java Web專案部署至Linux伺服器的步驟及問題詳解

        部門接手公司內部需求的一個小專案,從設計到研發自主完成,期間遇到了不少困難。部署過程也是坎坷,特此寫篇文章記錄一下,也為新手們填個坑~高手請跳過~~ 一、部署環境搭建(此步驟參考)      

Java專案部署目錄結構與部署方法 打包方法attilax總結 目錄 1.1. Java web專案部署目錄結構 1 2. Springboot專案部署結構 2 3. Java專案的開發模式下目錄

Java專案部署目錄結構與部署方法 打包方法attilax總結   目錄 1.1. Java web專案部署目錄結構 1 2. Springboot專案的部署結構 2 3. Java專案的開發模式下目錄結構與路徑 2 3.1. 原則上儘可能與jee規範一致比較好 2

Eclipse、MyEclipse新建(含Activiti的)web專案沒有自動生成web.xml檔案(下面告訴你兩種新增Web.xml)?!

一遇到問題,嘗試在程式碼上尋找出處,但........接著我去百度,答案會因為問題的字數多少和重點位置而五花八門, 真的弄得我一下午暈頭轉向的!!!                                         不過我還是帶著一定要找到答案的決心堅持點一

在阿里雲上配置Java Web專案部署環境

①安裝前準備 ②配置環境 1.jdk的安裝 1.1 gzip: stdin: not in gzip format 問題的解決 後來找到了問題,我是用wget命令直接下載的JDK,這是問題的根源。 去Oracle官網下載過jdk的童鞋應該都知道,下載之前需要

Java Web專案部署環境搭建

下面是大致流程,具體到每一項可以到網上很容易搜到具體操作。本文不談細節,如有需要,可以聯絡本博主 1、JDK安裝與配置 http://blog.csdn.net/ccnuacmhdu/article

圖片教程:寫好的Java Web專案部署到阿里雲伺服器

最近學習使用阿里雲,作為一個小白可謂歷盡艱辛才把寫好的Java web專案部署到了阿里雲的tomcat伺服器上,並通過IP地址訪問成功,下面開始教程! 一、首先你得有一個阿里雲主機,阿里雲翼計劃學生

建立maven web專案時,沒有web.xml檔案

1.問題:建立maven專案時,選擇的是建立web-app專案,但是結果配置之後,卻沒有web.xml檔案。 2.解決辦法: ------------------------------------

Java Web專案部署到阿里雲伺服器

如何把Java web專案部署到了阿里雲的tomcat伺服器上,並通過IP地址訪問成功,下面開始教程! 說白了:就是把阿里雲當作自己的電腦主機,然後把專案部署在tomcat上執行,一毛一樣:

java web專案部署方式

java web的部署相比php就麻煩些了,我常用的方式是下面的兩種,主要是本機和測試伺服器,如果是生產環境,至少要做到熱部署 一般做法: 在tomcat/conf/Catalina/localho

讀取eclipse的web專案src目錄下的xml檔案

今天試了很久都不能成功讀取到xml檔案。在網上查了一下原來是將專案部署在tomcat伺服器上就不存在src這個物理目錄,因此需要換一種讀取方式。 //首先讀取整個xml檔案獲取全部集合,返回檔案例項 public Document getDocument(String url

JAVA WEB專案目錄結構以及web應用部署的根目錄,編譯路徑和專案根目錄的區別

web應用部署的根目錄,編譯路徑和專案的根目錄有什麼區別? 直接上例子: 你有一個專案,名字叫做testPro 專案放到了你的D盤,目錄結構是這樣的: D:/testPro --src   --main     --webapp       --WEB-INF --targ

如何將Java web專案部署到伺服器

  學習Java 程式設計一年了, 下面就和大家一起分享一下如何將 java web 專案釋出到伺服器 使外網可以訪問          1.首先得有一臺伺服器, 可以購買也可以租          2.這裡拿租的伺服器為例:            下圖中的伺服器型別為wi

IDEA 下開發web專案部署時,配置檔案沒有編譯的問題

本文轉自:https://blog.csdn.net/dennk/article/details/51834508#commentBox以前用eclipse開發web專案時,配置檔案直接放在src目錄下面,部署的時候會把配置檔案也編譯到classpath下面。用IDEA可不同

java web專案部署到tomcat伺服器(一般步驟和自己所犯錯誤的總結)————高手忽略

最近由於專案需求,需要將java web專案部署到本地tomcat上(版本為8.0)進行測試。作為一個非計算機專業的菜鳥,之前的工作都是寫後臺邏輯程式碼,沒接觸過web專案部署。部署的時候不知道如何下手,參考了其他部落格以及他人問題的解決方法,終於把專案簡單部署到tomca

如何在基於JavaWeb專案中實現檔案上傳和下載?

在Sevlet 3 以前,Servlet API中沒有支援上傳功能的API,因此要實現上傳功能需要引入第三方工具從POST請求中獲得上傳的附件或者通過自行處理輸入流來獲得上傳的檔案,我們推薦使用Apac

web.xml檔案載入順序 一、 1 、啟動一個 WEB 專案的時候, WEB 容器會去讀取它的配置檔案 web.xml ,讀取 和

web.xml 中的listener、 filter、servlet 載入順序及其詳解 一、概述 1、啟動一個WEB專案的時候,WEB容器會去讀取它的配置檔案web.xml,讀取<listener>和<context-param>兩個結點。