一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解servlet配置load-on-startup的作用

詳解servlet配置load-on-startup的作用

2021-01-10 11:48xuke6677 Java教程

本文對load-on-startup的相關內容作了詳細介紹,然后通過具體實例向大家展示了其作用,希望可以給大家一個參考。

servlet配置當中,<load-on-startup>1</load-on-startup>的含義是:標記容器是否在啟動的時候就加載這個servlet。

當值為0或者大于0時,表示容器在應用啟動時就加載這個servlet;當是一個負數時或者沒有指定時,則指示容器在該servlet被選擇時才加載。

正數的值越小,啟動該servlet的優先級越高。

 如果我們在web.xml中設置了多個servlet的時候,可以使用load-on-startup來指定servlet的加載順序,服務器會根據load-on-startup的大小依次對servlet進行初始化。不過即使我們將load-on-startup設置重復也不會出現異常,服務器會自己決定初始化順序。

配置load-on-startup后,servlet在startup后立即加載,但只是調用servlet的init()方法,用以初始化該servlet相關的資源。初始化成功后,該servlet可響應web請求;如未配置load-on-startup,容器一般在第一次響應web請求時,會先檢測該servlet是否初始化,如未初始化,則調用servlet的init()先初始化,初始化成功后,再響應請求。

PS:一般我們在開發web應用時,都會配置這個參數,有兩個好處:1、如果初始化過程失敗,則容器會提示啟動失敗,此時我們能夠提前知道相關錯誤;2、配置該參數相當于將初始化servlet的工作轉移到容器啟動過程,使得容器只要啟動成功后,就可立即響應web請求。

示例:判斷是否連接網絡

1、web.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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>OfflineTest</servlet-name>
  <servlet-class>com.offline.OfflineTest</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
<!--如果頁面不請求, 可以注釋這段
 <servlet-mapping>
  <servlet-name>OfflineTest</servlet-name>
  <url-pattern>/OfflineTest</url-pattern>
 </servlet-mapping>
 -->
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

2、Servlet

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.offline;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
/**
 * 判斷是否連接網絡
 * @author Coco
 *
 */
public class OfflineTest extends HttpServlet {
    private static final long serialVersionUID = 1194662230797153372L;
    public void init() throws ServletException {
        boolean bool = pingLink();
        // 取得Application對象
        ServletContext application = this.getServletContext();
        // 設置Application屬性
        application.setAttribute("bool", bool);
    }
    public boolean pingLink(){
        boolean bool = true;
        Runtime runtime = Runtime.getRuntime(); // 獲取當前程序的運行進對象
         Process process = null; // 聲明處理類對象
         String line = null; // 返回行信息
         InputStream is = null; // 輸入流
         InputStreamReader isr = null; // 字節流
         BufferedReader br = null;
         String ip = "www.baidu.com";
         boolean res = false;// 結果
         try {
          process = runtime.exec("ping " + ip); // PING
          is = process.getInputStream(); // 實例化輸入流
          isr = new InputStreamReader(is);// 把輸入流轉換成字節流
          br = new BufferedReader(isr);// 從字節中讀取文本
          while ((line = br.readLine()) != null) {
          if (line.contains("TTL")) {
           res = true;
           break;
          }
          }
          is.close();
          isr.close();
          br.close();
          if (res) {
//            Log.print("ping www.baidu.com通...已經連接外網");
          } else {
              bool = false;
//            Log.print("ping www.baidu.com不通...無法連接外網");
          }
         } catch (IOException e) {
//           Log.print(e.getMessage());
         }
         return bool;
    }
 
}

3、index.html

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <base href="<%=basePath%>" rel="external nofollow" >
  <title>判斷是否連接網絡</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0"
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
 </head>
 <body>
 <%=application.getAttribute("bool") %><br/>
 或者<%=getServletContext().getAttribute("bool") %><br/>
 實際應用中:比如有網絡就加載一個頁面 ,引用jquery
 <div id="share_plus"></div>
<script type="text/javascript">
var network = '<%=application.getAttribute("bool") %>';
if(network == true){
    $.get("/common/common_share.html",function(data){
     $("#share_plus").html(data);
    });
}
</script>
 </body>
</html>

本文關于詳解servlet配置load-on-startup的作用的介紹就到這里,希望對大家有所幫助。謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/xuke6677/article/details/44752207

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品免费_区二区三区观看 | 极品虎白女在线观看一线天 | 亚洲成年www | 超91在线 | 99热这里只有精品国产免费 | 午夜桃色剧场 | 午夜精品区 | 婷婷综合在线 | 水野朝阳厨房系列在线观看 | 日本成熟老妇xxxx | 午夜爱爱爱爱爽爽爽视频网站 | 欧美亚洲另类综合 | 国产区最新 | 息与子中文字幕在线 | 91精品手机国产在线观 | 欧美性黑人巨大gaysex | 久久精品国产欧美日韩99热 | 95视频在线观看在线分类h片 | 国产欧美va欧美va香蕉在线观 | 成品人视频w免费观看w | 精品无码一区在线观看 | 91亚洲视频在线观看 | 亚洲男人精品 | m3u8久久国产精品影院 | 91制片厂制作传媒破解版免费 | 桃乃木香奈作品在线 | 国产精品合集一区二区 | 99av导航| 亭亭色| bl超h 高h 污肉快穿np | 国产人妖xxxxx免费看 | 亚洲欧美日韩另类精品一区二区三区 | 九九九国产视频 | 精品视频一区二区观看 | 青青热久久综合网伊人 | 国产精品久久久久久影视 | 91久久偷偷做嫩草影院免费 | 5g996未满十八 | 男人影院在线观看 | 32pao强力打造免费高速高清 | 天堂俺去俺来也www久久婷婷 |