lyyb2001

          只是為方便自己找記錄而已
          posts - 57, comments - 27, trackbacks - 0, articles - 5
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理

          Struts 框架的一大優(yōu)勢在于它允許開發(fā)人員根據(jù)實(shí)際需要來擴(kuò)展框架,定制客戶化的功能。
          Struts1.1
          框架提供了動態(tài)插入和加載組件的功能,這種組件被稱為 Struts 插件。 Struts 插件實(shí)際上就是一個 Java 類,它在 Struts 應(yīng)用啟動時 Struts 框架調(diào)用每個插件的 init ()方法進(jìn)行初始化,在插件的初始化階段可以完成一些初始化的操作,如建立數(shù)據(jù)庫連接,和遠(yuǎn)程系統(tǒng)建立連接 , 在當(dāng)前的應(yīng)用范圍內(nèi)加入插件類自身的實(shí)例等。在應(yīng)用關(guān)閉時 Struts 框架會調(diào)用每個插件的 destroy() 方法, destroy() 方法可以用來完成釋放資源的任務(wù),如關(guān)閉數(shù)據(jù)庫連接,斷開與遠(yuǎn)程的連接等。任何作為插件的 Java 類都應(yīng)該實(shí)現(xiàn) org.apache.struts.action.PlugIn 接口。 PlugIn 接口包括兩個方法
          ????public interface PlugIn {
          ??????? /**
          ??????? *
          當(dāng) struts 應(yīng)用啟動時,下面的方法將被調(diào)用執(zhí)行
          ??????? */
          ??????? public void init(ActionServlet servlet, ApplicationConfig config)
          ????????????? throws ServletException;

          ?????? /**
          ?????? *
          當(dāng) struts 應(yīng)用關(guān)閉時,將調(diào)用下面的方法,以釋放資源。
          ?????? */
          ??????? public void destroy();?
          ????}
          現(xiàn)在我們用 PLUGIN 實(shí)現(xiàn)日志的創(chuàng)建
          < plug-in className = "net.skycity.search.SearchEnginePlugIn" >

          ??? <!-- 日記索引文件存放的目錄 -->

          ??????? < set-property property = "logIndexPath" value = "/WEB-INF/log_index" />

          ??????? <!-- 中文分詞器 -->

          ??????? < set-property property = "analyzerClass" value = "org.apache.lucene.analysis.standard.StandardAnalyzer" />

          </ plug-in>
          SearchProxyPlugIn.java
          package net.skycity.search;

          ?

          import java.io.File;

          import java.io.IOException;

          import javax.servlet.ServletException;

          import org.apache.log4j.Logger;

          import org.apache.lucene.analysis.Analyzer;

          import org.apache.lucene.analysis.standard.StandardAnalyzer;

          import org.apache.lucene.index.IndexWriter;

          import org.apache.struts.action.ActionServlet;

          import org.apache.struts.action.PlugIn;

          import org.apache.struts.config.ModuleConfig;

          ?

          public class SearchEnginePlugIn implements PlugIn{

          ??? private static Analyzer analyzer;//設(shè)置lucene要用的切詞方法。

          ??? protected static ActionServlet servlet = null;

          ??? protected static String logIndexPath = "/WEB-INF/log_index";//日志索引文件存放目錄

          ??? protected String analyzerClass;

          ??? protected Logger log = Logger.getLogger(SearchEnginePlugIn.class);

          ??? /**

          ???? * 初始化

          ???? */

          ??? public void init(ActionServlet servlet, ModuleConfig config) throws ServletException{

          ??????? SearchEnginePlugIn.servlet = servlet;

          ??????? if(analyzerClass==null)

          ??????? ?? analyzerClass = StandardAnalyzer.class.getName();

          ??????? try{

          ??????? ?? analyzer = (Analyzer)Class.forName(analyzerClass).newInstance();

          ??????? }catch(Exception e){

          ??????? ?? servlet.log("Initialize Analyzer Failed.",e);

          ??????? }

          ??? }

          ??? /**

          ???? * 容器停止時,銷毀

          ???? */

          ??? public void destroy() {

          ??? ?? IndexWriter indexWriter;

          ?????? try {

          ?????????? indexWriter = getLogIndexWriter();

          ?????????? indexWriter.close();

          ?????? } catch (IOException e) {

          ?????????? e.printStackTrace();

          ?????? }

          ??? }

          ??? /**

          ???? * 得到日記索引的Writter

          ???? * @return

          ???? * @throws IOException

          ???? */

          ??? protected static IndexWriter getLogIndexWriter() throws IOException{

          ??????? String logPath = getLogIndexPath();

          ??????? File rp = new File(logPath);

          ??????? if(!rp.exists())

          ??????????? rp.mkdirs();

          ??????? File segments = new File(logPath + File.separator + "segments");

          ??????? boolean bCreate = !segments.exists();

          ??????? return new IndexWriter(logPath,analyzer,bCreate);

          ??? }

          ??? /**

          ???? * 得到日記索引所在的絕對路徑

          ???? * @return

          ???? */

          ??? public static String getLogIndexPath() {

          ??? ?? if(logIndexPath.toUpperCase().startsWith("/WEB-INF"))

          ??? ?????? return servlet.getServletContext().getRealPath(logIndexPath);

          ??? ?? return logIndexPath;

          ??? }

          ??? public void setLogIndexPath(String indexPath) {

          ??????? logIndexPath = indexPath;

          ??? }

          ??? public static Analyzer getAnalyzer() {

          ??????? return analyzer;

          ??? }

          ??? public String getAnalyzerClass() {

          ?????? return analyzerClass;

          ??? }

          ??? public void setAnalyzerClass(String analyzerClass) {

          ?????? this.analyzerClass = analyzerClass;

          ??? }

          }



          Lyyb2001
          主站蜘蛛池模板: 永宁县| 安化县| 永城市| 闻喜县| 聂荣县| 南涧| 绥滨县| 洪湖市| 竹溪县| 高邮市| 双城市| 出国| 昌平区| 北海市| 穆棱市| 平罗县| 横山县| 资兴市| 新河县| 沙坪坝区| 茌平县| 荃湾区| 东乌珠穆沁旗| 固镇县| 神木县| 环江| 于都县| 清新县| 永宁县| 平泉县| 阳原县| 突泉县| 扶余县| 阜阳市| 杭锦后旗| 喀喇沁旗| 柯坪县| 尼木县| 南阳市| 城市| 谢通门县|