Time of Update: 2018-12-03
一:介紹在tomcat的啟動過程中,tomcat會讀取/WEB-INF/web.xml檔案中的配置資訊進行一些初始化的工作,而Struts的啟動工作就從這裡開始.在web.xml檔案中有如下的配置資訊:<servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class&
Time of Update: 2018-12-03
一次請求的流程一:接受請求 1.以.do結尾的URL被ActionServlet攔截,執行service方法 2.根據請求傳遞的方法GET/POST選擇執行doGet()或doPost()方法 3.在doGet()/doPost()方法中,調用process()方法二:process()方法1. 選擇模組 ModuleUtils.getInstance().selectModule(request, getServletContext())
Time of Update: 2018-12-03
1. ActionContext ActionContext是被存放在當前線程中的,擷取ActionContext也是從ThreadLocal中擷取的。所以在執行攔截器、 action和result的過程中,由於他們都是在一個線程中按照順序執行的,所以可以可以在任意時候在ThreadLocal中擷取 ActionContext。ActionContext包括了很多資訊,比如Session、Application、Request、Locale、ValueStack等,其中
Time of Update: 2018-12-03
主要代碼: Ext.onReady(function(){ Ext.QuickTips.init();//支援tips提示Ext.form.Field.prototype.msgTarget='under';//提示的方式,枚舉值為"qtip","title","under","side",id(元素id)//先用Ext.apply方法添加自訂的password驗證函式(也可以取其他的名字)Ext.apply(Ext.form.VTypes,{
Time of Update: 2018-12-03
一、預備知識—程式的記憶體配置一個由c/C++編譯的程式佔用的記憶體分為以下幾個部分1、棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變數的值等。其操作方式類似於資料結構中的棧。2、堆區(heap) — 一般由程式員分配釋放, 若程式員不釋放,程式結束時可能由OS回收 。注意它與資料結構中的堆是兩回事,分配方式倒是類似於鏈表,呵呵。3、全域區(靜態區)(static)—,全域變數和靜態變數的儲存是放在一塊的,初始化的全域變數和靜態變數在一塊地區,
Time of Update: 2018-12-03
首先強調一下struts2的線程程安全,在Struts2中大量採用ThreadLocal線程局部變數的方法來保證線程的安全,像Dispatcher等都是通過ThreadLocal來儲存變數值,使得每個線程都有自己獨立的執行個體變數,互不相干. 接下來就從Dispatcher開始看起,先看其建構函式://建立Dispatcher,此類是一個Delegate,它是真正完成根據url解析轉向,讀取對應Action的地方 public Dispatcher(ServletContext
Time of Update: 2018-12-03
1. JMS基本概念 JMS(Java Message Service) 即JavaMessage Service。它提供標準的產生、發送、接收訊息的介面,簡化公司專屬應用程式的開發。它支援兩種訊息通訊模型:點到點(point-to-point)(P2P)模型和發布/訂閱(Pub/Sub)模型。P2P 模型規定了一個訊息只能有一個接收者;Pub/Sub 模型允許一個訊息可以有多個接收者。
Time of Update: 2018-12-03
接下來第三步:init_LegacyStrutsProperties()調用的是調用的是LegacyPropertiesConfigurationProvider通過比較前面DefaultPropertiesProvider與調用的是LegacyPropertiesConfigurationProvider.發現DefaultPropertiesProvider繼承自後者,但重寫了register()方法,主要是產生PropertiesSetting的不同,前者是根據org/apache/str
Time of Update: 2018-12-03
第一步:首先建個上傳檔案的簡單的介面,代碼如下:檔案名稱(FileUpload.jsp)<%@ page language="java" contentType="text/html; charset=UTF-8"%><html><head><meta http-equiv="Content-Type" content="text/html;
Time of Update: 2018-12-03
Queue實現的是點到點模型,一個點對點 (PTP) 的產品或者應用是基於訊息佇列、寄件者和接收者的概念來構建的。每個訊息被定為到一個特定的隊列,接收者從隊列中提取發送給它的訊息,隊列將保留所有的訊息直到訊息被取走或者到期。1)每個訊息只有唯一一個接收者(消費者)2)訊息的寄件者和接收者沒有時間上的依賴,接收者可在訊息到期前的任意時間內去擷取訊息,而不一定得寄件者是線上的3)接收者需要確認成功的處理了訊息在下面的例子中,啟動2個消費者共同監聽一個Queue,然後迴圈給這個Queue中發送多個訊息
Time of Update: 2018-12-03
第一步:先建立檔案下載和刪除的檔案,代碼如下:(FileDownLoad.jsp)<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*,java.io.*,com.form.*"%><html><head><meta http-equiv="Content-Type"
Time of Update: 2018-12-03
與Queue不同的是,Topic實現的是發布/訂閱模型,在一個基於發布/訂閱模型的應用或者產品中,用戶端根據主題來訂閱訊息,有點像公告牌。發行者和訂閱者一般都是匿名的,而且可以動態發布或者訂閱內容。訊息系統會謹慎處理訊息的分發到訂閱了某個主題的所有訂閱者,訊息只會發送給當前訂閱者,然後就失效,新的訂閱者無法接收到剛剛失效的訊息。發布和訂閱的訊息機制具有以下特徵:1)每個訊息可以有多個消費者2)發行者和訂閱者是有時間依賴,只有當前訂閱了某個主題的訂閱者才能收到訊息,訂閱者必須保持活躍以擷取訊息3)
Time of Update: 2018-12-03
一、Eclipse ,MyEclipse代碼裡面的代碼提示功能預設的一般是點“.”,一般是有了點“.”,才會有代碼提示。 原理:“Auto Activation triggers for java”這個選項就是指觸發代碼提示的的選項,把“.”
Time of Update: 2018-12-03
win7 無法以管理員身份運行 安裝了Windows7沒幾天,忽然發現在捷徑上“以管理員身份運行”沒反應。 而在可執行檔上,卻能正常工作。Google了一把,發現網上也有這類問題,但大多現象有些差別,解決方案是修改註冊表。我試了一下,不行。 後來在一個頁面上,有人說安裝“米人”後,就不能“以管理員身份運行了”。而我也安裝了米人下載工具。卸載掉以後,再在捷徑上“以管理員身份運行”就正常了。 :》 因為安裝了很多程式,所以開始-》程式中並沒有發現米人
Time of Update: 2018-12-03
一個訊息對象分為三部分:訊息頭(Headers),屬性(Properties)和訊息體(Payload)。對於StreamMessage和MapMessage,訊息本身就有特定的結構,而對於TextMessage,ObjectMessage和BytesMessage是無結構的。一個訊息可以包含一些重要的資料或者僅僅是一個事件的通知。 訊息的Headers部分通常包含一些訊息的描述資訊,它們都是標準的描述資訊。包含下面一些值: 1)JMSDestination
Time of Update: 2018-12-03
學習struts 的digester類解析xml檔案 1、digester的簡介
Time of Update: 2018-12-03
1.在下面的例子中,分別發送一個Persistent和nonpersistent的訊息,然後關閉退出JMS。發送端代碼如下:/** * @author Administrator * @description 分別發送一個Persistent和nonpersistent的訊息,然後關閉退出JMS * 運行這個程式,當輸出“Send messages sucessfully!”時,說明兩個訊息都已經發送成功,然後我們結束它,來停止JMS Provider。 */package
Time of Update: 2018-12-03
Dispatcher已經在之前講過,這就好辦了。FilterDispatcher是Struts2的核心控制器,首先看一下init()方法。public void init(FilterConfig filterConfig) throws ServletException { try { this.filterConfig = filterConfig; initLogging(); //建立dispatcher,前面都已經講過囉
Time of Update: 2018-12-03
在下面的例子中,首先建立兩個Queue,寄件者給一個Queue發送,接收者接收到訊息之後給另一個Queue回複一個Message,然後再建立一個消費者來接受所回複的訊息。/** * @author Administrator * @description:首先建立兩個Queue,寄件者給一個Queue發送,接收者接收到訊息之後給另一個Queue回複一個Message,然後再建立一個消費者來接受所回複的訊息 */package com.wl.jms;import
Time of Update: 2018-12-03
一:問題:在使用log4j,common-log這樣的log架構時,發現很多代碼中這樣寫 if (log.isDebugEnabled()) { log.debug( "xxxx "); } 我很奇怪,為什麼要與log.isDebugEnabled()?既然log.debug()在沒有指定輸出層級為DEBUG時不會有輸出,為什麼還要在前面加一個isDebugEnabled()的判斷?為了效率,如果上述那個代碼那麼簡單是沒有必要的但是如果這樣if