Электронный магазин на Java и XML

       

Инициализация сервлета


Как видно из листинга 4.4, в классе CatalogServ имеется некоторое количество статических переменных, которые определяют различные ресурсы Мы приводим типичные значения этих переменных В реальном сервлете эти значения заменяются специфичными для системы значениями, хранящимися в файле catalog.properties, откуда они считываются методом imt Мы будем использовать класс Properties — расширение класса Hashtable из пакета java.util, где содержатся очень удобные методы для загрузки текстовых параметров из файла

Листинг 4.4. Статические переменные и метод mit в сервлете CatalogServ (CatalogServ.java)

package com.XmlEcomBook.catalog;

import java.io.*;

import java.util.* ;

import javax.servlet.*;

import javax.servlet.http.*;

public class CatalogServ extends HttpServlet

{

static String brcrlf = "<br />\r\n" ;

static String version = "1.03 Oct 17, 2000";

static String cssLinkA = "<link rel=\"stylesheet\" href=\"" ;



// following is part of a web server URL for the style sheet

static String cssLinkB = "XmlEcommBook/catalog/catalog.css" ;

static String cssLinkC = "\" type=\"text/css\" media=\"screen\" >" ;

static String resourcepath = "XmlEcommBook/catalog/" ;

static String host = "http://localhost/";

// these are servlet engine aliases

static String servlet = "servlet/catalog" ;

static String checkout = "servlet/checkout" ;

// these are complete webserver paths

static String cssLink = cssLinkA + host + cssLinkB + cssLinkC ;

static String alias ; // for catalog servlet

static String checkoutalias ;

static String resources ; // for images, style sheets, etc

String catPath = "e:\\scripts\\XMLgifts" ; // for xml

String catName = "catalog.xml" ;

Properties catProp = new Properties();

public void init(ServletConfig config) throws ServletException

{ try {

super.init(config);

System.out.println("CatalogTestServ init called, version "


+ version );

String tmp = config.getInitParameter("workdir");

if( tmp != null ) catPath = tmp ;

File f = new File( catPath, "catalog.properties");

if( f.exists() && f.canRead() ){

FileInputStream fis = new FileInputStream(f) ;

catProp.load( fis );

fis.close();

tmp = catProp.getProperty("csspath");

if( tmp != null ) cssLinkB = tmp;

tmp = catProp.getProperty("host");

if( tmp != null ) host = tmp ;

tmp = catProp.getProperty("resourcepath" ) ;

if( tmp != null ) resourcepath = tmp ;

tmp = catProp.getProperty("catalogservlet");

if( tmp != null ) servlet = tmp ;

tmp = catProp.getProperty("checkoutservlet" );

if( tmp != null ) checkout = tmp ;

}

else { System.out.println ("CatalogServ can't read catalog.properties");

}

resources = host + resourcepath ;

alias = host + servlet ;

checkoutalias = host + checkout ;

System.out.println( "resources:" + resources );

System.out.println("servlet: " + alias );

System.out.println("checkout: " + checkoutalias );

CatalogBean.setTheCatalog( catPath, catName );

CatalogBean.setResourcePath( resources );

}catch( Exception e ){

System.out.println("CatalogTestServ init " + e );

}

}

Заметим, что метод init вызывает два статических метода из класса CatalogBean. Вызов метода setTheCatal од необходим для считывания данных из файла XML, а метод setTheResoursePath устанавливает путь, который будет использоваться для нахождения таких ресурсов, как изображения товаров. Определения класса Gala- togBean вы найдете далее в этой главе в разделе «Класс CalatogBean».

 




Содержание раздела