blogjava-凯发k8网页登录

blogjava-凯发k8网页登录http://www.blogjava.net/pdw2009/本站不再更新,欢迎光临 zh-cnsat, 08 apr 2023 20:42:38 gmtsat, 08 apr 2023 20:42:38 gmt60 blackberry 日志http://www.blogjava.net/pdw2009/archive/2010/09/05/331088.html有猫相伴的日子有猫相伴的日子sun, 05 sep 2010 08:55:00 gmthttp://www.blogjava.net/pdw2009/archive/2010/09/05/331088.htmlhttp://www.blogjava.net/pdw2009/comments/331088.htmlhttp://www.blogjava.net/pdw2009/archive/2010/09/05/331088.html#feedback0http://www.blogjava.net/pdw2009/comments/commentrss/331088.htmlhttp://www.blogjava.net/pdw2009/services/trackbacks/331088.htmlpackage com.ff.utils;

import java.util.date;

import net.rim.device.api.system.eventlogger;

/**
 * 日志类
 * @author   2010-09-04
 *
 */
public class logger {

 private static final string separator = "   ";
 private static final long guid = 0x4c9d3452d880a2f1l;
 private static final string app_name = "xxxc ";

 private logger() {
  eventlogger.register(guid, app_name, eventlogger.viewer_string);
 }

 private static logger logger = new logger();

 public static logger getlogger() {
  return logger;
 }

 /**
  * log the information.
  *
  * @param message
  *            the message you will log
  */
 public void info(string message) {
  if (message == null || message.trim().equals(""))
   return;
  string log = "info: " new date().tostring() separator message;
  try {
   log = new string(log.getbytes(), "utf-8");
   byte[] msg_bytes = log.getbytes();
   eventlogger.logevent(guid, msg_bytes, eventlogger.always_log);
  } catch (exception ex) {
   system.err.println(ex);
  }
 }

 public void error(exception e) {
  stringbuffer log = new stringbuffer();
  log.append("error: " new date().tostring() separator);
  log.append(e.getmessage() " \r\n ");

  try {
   byte[] msg_bytes = new string(log.tostring().getbytes(), "utf-8").getbytes();
   eventlogger.logevent(guid, msg_bytes);
  } catch (exception ex) {
   system.err.println(ex);
  }
 }
 
 public void error(string message, exception e) {
  stringbuffer log = new stringbuffer();
  log.append("error: " new date().tostring() separator);
  if (message != null || !message.trim().equals("")) {
   log.append("message: " message " \r\n ");
  }
  log.append("error: " e.getmessage() " \r\n ");

  try {
   byte[] msg_bytes = new string(log.tostring().getbytes(), "utf-8").getbytes();
   eventlogger.logevent(guid, msg_bytes);
  } catch (exception ex) {
   system.err.println(ex);
  }
 }
}


不管是在模拟器还是真机,日志还是必须的......如果该文对你有用,为了表示对作者的支持,麻烦你单击一下下面的广告,谢谢



有猫相伴的日子 2010-09-05 16:55
]]>
libxml中使用xpath解析xml文件http://www.blogjava.net/pdw2009/archive/2010/08/23/329638.html有猫相伴的日子有猫相伴的日子mon, 23 aug 2010 04:06:00 gmthttp://www.blogjava.net/pdw2009/archive/2010/08/23/329638.htmlhttp://www.blogjava.net/pdw2009/comments/329638.htmlhttp://www.blogjava.net/pdw2009/archive/2010/08/23/329638.html#feedback2http://www.blogjava.net/pdw2009/comments/commentrss/329638.htmlhttp://www.blogjava.net/pdw2009/services/trackbacks/329638.html                                                           
#include                                                             
#include                                                                    
                                                                                     
xmldocptr  getdoc (char *docname) {                                                  
 xmldocptr doc;                                                                     
 doc = xmlparsefile(docname);                                                       
                                                                                    
 if (doc == null ) {                                                                
  fprintf(stderr,"document not parsed successfully. \n");                          
  return null;                                                                     
 }                                                                                  
                                                                                     
 return doc;                                                                        
}                                                                                    
                                                                                     
xmlxpathobjectptr  getnodeset (xmldocptr doc, xmlchar *xpath){                       
                                                                                    
 xmlxpathcontextptr context;                                                        
 xmlxpathobjectptr result;                                                          
                                                                                     
 context = xmlxpathnewcontext(doc);                                                 
 if (context == null) {                                                             
  printf("error in xmlxpathnewcontext\n");                                         
  return null;                                                                     
 }                                                                                  
 result = xmlxpathevalexpression(xpath, context);                                   
 xmlxpathfreecontext(context);                                                      
 if (result == null) {                                                              
  printf("error in xmlxpathevalexpression\n");                                     
  return null;                                                                     
 }                                                                                  
 if(xmlxpathnodesetisempty(result->nodesetval)){                                    
  xmlxpathfreeobject(result);                                                      
    printf("no result\n");                                                           
  return null;                                                                     
 }                                                                                  
 return result;                                                                     
}                                                                                    
                                                                                     
                                                                                     
                                                                                     
                                                                                     
                                                                                     
int main(int argc, char **argv) {                                                    
                                                                                     
 char *docname;                                                                     
 xmldocptr doc;                                                                     
 xmlchar *xpath = (xmlchar*) "//keyword";                                           
 xmlnodesetptr nodeset;                                                             
 xmlxpathobjectptr result;                                                          
 int i;                                                                             
 xmlchar *keyword;                                                                  
                                                                                   
 if (argc <= 1) {                                                                   
  printf("usage: %s docname\n", argv[0]);                                          
  return(0);                                                                       
 }                                                                                  
                                                                                     
 docname = argv[1];                                                                 
 doc = getdoc(docname);                                                             
 result = getnodeset (doc, xpath);                                                  
 if (result) {                                                                      
  nodeset = result->nodesetval;                                                    
  for (i=0; i < nodeset->nodenr; i ) {                                            
   keyword = xmlnodelistgetstring(doc, nodeset->nodetab[i]->xmlchildrennode, 1);  
    printf("keyword: %s\n", keyword);                                              
    xmlfree(keyword);                                                              
  }                                                                                
  xmlxpathfreeobject (result);                                                     
 }                                                                                  
 xmlfreedoc(doc);                                                                   
 xmlcleanupparser();                                                                
 return (1);                                                                        
}                                                                                

demo.xml

                  
                                                
                                            
    john fleck                        
    june 2, 2002            
    example keyword裴                
 
                                         
                                                 
    this is the headline          
    this is the body text.                
                                                
                                                
    
                                                                                     

恳请帮单击一下广告


有猫相伴的日子 2010-08-23 12:06
]]>
sessionbean ejb入门例子http://www.blogjava.net/pdw2009/archive/2010/04/15/318414.html有猫相伴的日子有猫相伴的日子thu, 15 apr 2010 06:29:00 gmthttp://www.blogjava.net/pdw2009/archive/2010/04/15/318414.htmlhttp://www.blogjava.net/pdw2009/comments/318414.htmlhttp://www.blogjava.net/pdw2009/archive/2010/04/15/318414.html#feedback0http://www.blogjava.net/pdw2009/comments/commentrss/318414.htmlhttp://www.blogjava.net/pdw2009/services/trackbacks/318414.html  做这么多年java第一次写ejb的例子,还需要继续努力




有猫相伴的日子 2010-04-15 14:29
]]>
mysql字符串函数使用笔记http://www.blogjava.net/pdw2009/archive/2009/05/19/271603.html有猫相伴的日子有猫相伴的日子tue, 19 may 2009 14:50:00 gmthttp://www.blogjava.net/pdw2009/archive/2009/05/19/271603.htmlhttp://www.blogjava.net/pdw2009/comments/271603.htmlhttp://www.blogjava.net/pdw2009/archive/2009/05/19/271603.html#feedback0http://www.blogjava.net/pdw2009/comments/commentrss/271603.htmlhttp://www.blogjava.net/pdw2009/services/trackbacks/271603.html
最近要开始使用mysql记点笔记。

select left("http://www.webmasterclub.org/&id=1310",instr("http://www.webmasterclub.org/&id=1310",'&')-1 )

left函数,返回左边特定长度的字符串函数。

instr(str,substr)返回substr字符串在str字符串中的位置。
locate(substr,str) locate也是返回字符串的位置,但locate函数,子字符串在前面。

substring(str,2,9),返回str字符串中从第2个位置开始的9个字符。用法与mid相同

insert(str,startpos,len,substr) 字符串替换函数,把str字符串startpos开始,len结束的字符串用substr替换

select replace ('aabbc','ab',"pppppp") 字符串规换

注意:mysql处理字符位置时是以1为序列启始。


有猫相伴的日子 2009-05-19 22:50
]]>
android 弹出框http://www.blogjava.net/pdw2009/archive/2009/04/22/267053.html有猫相伴的日子有猫相伴的日子wed, 22 apr 2009 14:31:00 gmthttp://www.blogjava.net/pdw2009/archive/2009/04/22/267053.htmlhttp://www.blogjava.net/pdw2009/comments/267053.htmlhttp://www.blogjava.net/pdw2009/archive/2009/04/22/267053.html#feedback0http://www.blogjava.net/pdw2009/comments/commentrss/267053.htmlhttp://www.blogjava.net/pdw2009/services/trackbacks/267053.html
代码片段
    public void quitapp() {
        
new alertdialog.builder(frm_addbills.this).settitle("提示").setmessage(
                
"确定退出?").seticon(r.drawable.quit).setpositivebutton("确定",
                
new dialoginterface.onclicklistener() {
                    
public void onclick(dialoginterface dialog, int whichbutton) {    
                        billdb.close();
                        finish();
                    }
                }).setnegativebutton(
"取消",
                
new dialoginterface.onclicklistener() {
                    
public void onclick(dialoginterface dialog, int whichbutton) {
                    }
                }).show();

    }

copy from colabox_source  未完待续..



有猫相伴的日子 2009-04-22 22:31
]]>
android 中使用sqlite例子http://www.blogjava.net/pdw2009/archive/2009/04/19/266460.html有猫相伴的日子有猫相伴的日子sun, 19 apr 2009 14:20:00 gmthttp://www.blogjava.net/pdw2009/archive/2009/04/19/266460.htmlhttp://www.blogjava.net/pdw2009/comments/266460.htmlhttp://www.blogjava.net/pdw2009/archive/2009/04/19/266460.html#feedback4http://www.blogjava.net/pdw2009/comments/commentrss/266460.htmlhttp://www.blogjava.net/pdw2009/services/trackbacks/266460.html今晚写了个sqlite的应用例子,粘一下代码,就不详细详述了。
package com.peidw.demo;

import java.io.filenotfoundexception;

import android.content.context;
import android.database.sqlite.sqlitedatabase;
import android.database.sqlite.sqliteopenhelper;
import android.database.sqlite.sqlitedatabase.cursorfactory;
import android.util.log;

/**
 * 数据库操作
 * 
@author peidw 2009-04-06
 *
 
*/
public class databasehelper extends sqliteopenhelper{
    
private context ctx = null;
    
    
public databasehelper(context context, string name, cursorfactory factory, int version) {
        
super(context, name, factory, version);

    }
    

    @override
    
public void oncreate(sqlitedatabase arg0) {
        
    }
    @override
    
public void onupgrade(sqlitedatabase arg0, int arg1, int arg2) {
        
    }

    

}
package com.peidw.demo;

import java.util.*;
import android.app.*;
import android.content.context;
import android.database.cursor;
import android.database.sqlite.sqlitedatabase;
import android.database.sqlite.sqliteopenhelper;
import android.database.sqlite.sqlitedatabase.cursorfactory;
import android.os.*;
import android.util.*;

/**
 * 操作数据库例子
 * 
@author peidw 2009-04-19
 *
 
*/
public class connectionprovider {
    
    
private static  sqlitedatabase db=null;
    
    
    
public  connectionprovider(context ctx) {
        
if (db==null){
            log.v(
"connectionprovider","ctx="ctx.tostring());
            databasehelper dbhelper
=new databasehelper(ctx,"studdb"null,1);
            db
= dbhelper.getwritabledatabase();
        }
    }
    
    
public sqlitedatabase getconnection (){
        
return db;
    }
    
    
public void closeconnection (){
        db.close();
    }
    
/**
     * 判断表是否存在
     * 
@param tablename
     * 
@return
     
*/
    
public boolean istableexits(string tablename){
        
boolean result=false;//表示不存在
        string str="select count(*) xcount  from sqlite_master where table='"tablename"'";
        cursor c 
= db.rawquery(str,null);
        
int xcount=c.getcolumnindex("xcount");
        
if(xcount!=0){
            result
=true//表存在
        }
        
return result;
    }
}

在程序中操作数所的代码片段

 connectionprovider cp
=new connectionprovider(this.getbasecontext());
        
// if(cp.istableexits(table_name)){//表已存在
             createtable(cp);
            querytable(cp);
        
// }else{//表不存在
        
//     createtable();
        
// }



public void createtable( connectionprovider cp){
        

        sqlitedatabase db
= cp.getconnection();
        db.execsql(
"create table if not exists "  table_name  " ("
                
 "stud_no"  " text,"
                
 "stud_name"  " text"
                
 ");");
    
        string sql_1 
= "insert into " table_name " (stud_no, stud_name) values('s777', 'lily chang');";
        string sql_2 
= "insert into "  table_name " (stud_no, stud_name) values('s888', 'linda lin');";
        string sql_3 
= "insert into "  table_name " (stud_no, stud_name) values('s999', 'bruce wang');";
        db.execsql(sql_1); db.execsql(sql_2); db.execsql(sql_3);
    }
    
public void querytable(connectionprovider cp){
        string str
="select * from "table_name;
        cursor c 
=cp.getconnection().rawquery(str,null);
        log.v(
"loginactive","查询记录");
        log.v(
"loginactive",string.valueof(c.getcount()) );
        
if(c!=null){
            c.movetofirst();
            
while(!c.islast()){
                log.v(
"loginactive","outp.");
                string stud_no
=c.getstring(0);
                string stud_name
=c.getstring(1);
                system.out.println(stud_no
"---------------"stud_name);
                log.v(
"loginactive",stud_no"---------------"stud_name);
                c.movetonext();
            }
        }

    }
麻烦帮单击一次广告了 !!!



有猫相伴的日子 2009-04-19 22:20
]]>
android布局(layout)http://www.blogjava.net/pdw2009/archive/2009/04/15/265850.html有猫相伴的日子有猫相伴的日子wed, 15 apr 2009 13:53:00 gmthttp://www.blogjava.net/pdw2009/archive/2009/04/15/265850.htmlhttp://www.blogjava.net/pdw2009/comments/265850.htmlhttp://www.blogjava.net/pdw2009/archive/2009/04/15/265850.html#feedback0http://www.blogjava.net/pdw2009/comments/commentrss/265850.htmlhttp://www.blogjava.net/pdw2009/services/trackbacks/265850.html     android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
节点作为开头。一个布局容器里可以包括0或多个布局容器。linearlayout线性的布局方式,要么上下,要么左右的添加控件,很常用


      absolutelayout可以让子元素指定准确的x/y坐标值,并显示在屏幕上。(0, 0)为左上角,当向下或向右移动时,坐标值将变大。absolutelayout没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用absolutelayout,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。 


     relativelayout允许子元素指定他们相对于其它元素或父元素的位置(通过id指定)。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用xml来指定这个layout,在你定义它之前,被关联的元素必须定义。
这是一个计数器的例子。

  framelayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为framelayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。

http://blog.chinaunix.net/u2/86463/showart_1674836.html




有猫相伴的日子 2009-04-15 21:53
]]>
android实现不同active页面间的跳转http://www.blogjava.net/pdw2009/archive/2009/04/13/265195.html有猫相伴的日子有猫相伴的日子sun, 12 apr 2009 16:40:00 gmthttp://www.blogjava.net/pdw2009/archive/2009/04/13/265195.htmlhttp://www.blogjava.net/pdw2009/comments/265195.htmlhttp://www.blogjava.net/pdw2009/archive/2009/04/13/265195.html#feedback1http://www.blogjava.net/pdw2009/comments/commentrss/265195.htmlhttp://www.blogjava.net/pdw2009/services/trackbacks/265195.html              intent.setclass(errorpageactive.this, loginactive.class);   
             startactivity(intent);  

就这么简单,如果要把一个页面的参数带到另一个页面,则需要
 bundle bundle = new bundle();   
 bundle.putstring("username", et_username.gettext().tostring());   
intent.putextras(bundle);

通过以上三行代码现实,带参数跳转。

有猫相伴的日子 2009-04-13 00:40
]]>
android应用程序四大组件http://www.blogjava.net/pdw2009/archive/2009/04/13/265193.html有猫相伴的日子有猫相伴的日子sun, 12 apr 2009 16:04:00 gmthttp://www.blogjava.net/pdw2009/archive/2009/04/13/265193.htmlhttp://www.blogjava.net/pdw2009/comments/265193.htmlhttp://www.blogjava.net/pdw2009/archive/2009/04/13/265193.html#feedback2http://www.blogjava.net/pdw2009/comments/commentrss/265193.htmlhttp://www.blogjava.net/pdw2009/services/trackbacks/265193.html对于一个android应用程序来说,是由四种构造块组织而成的,这四种构造块如下:

    activity

    intent receiver

    service

    content provider


  但是,并不是每一个android应用程序都需要这四种构造块,这不是必须的,某些时候,我们只需要这四种中的几种组合成我们的应用。

    当我们明确了我们的应用需要哪些构造块后,我们就需要在androidmanifest.xml中登记这些构造块的清单。这是一个xml配置文件,这个配置文件用于定义我们的应用程序的组件、组件的功能及必要条件等。这个配置文件是每个android应用必需的。对于androidmainfest.xml的schema,参考sdk包附带的文档。以下,我们对四种构造块做一些说明:

一、activity

    activity是android构造块中最基本的一种,在应用中,一个activity通常就是一个单独的屏幕。每一个activity都被实现为一个独立的类,并且继承于activity这个基类。这个activity类将会显示由几个views控件组成的用户接口,并对事件做出响应。大部份的应用都会包含多个的屏幕。例如,一个短消息应用程序将会有一个屏幕用于显示联系人列表,第二个屏幕用于写短消息,同时还会有用于浏览旧短消息及进行系统设置的屏幕。每一个这样的屏幕,就是一个activity。从一个屏幕导航到另一个屏幕是很简单的。在一些应用中,一个屏幕甚至会返回值给前一个屏幕。

    当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。用户可以返回到历史堆栈中的前一个屏幕。当屏幕不再使用时,还可以从历史堆栈中删除。默认情况下,android将会保留从主屏幕到每一个应用的运行屏幕。

    android使用了intent这个特殊类,实现在屏幕与屏幕之间移动。intent类用于描述一个应用将会做什么事。在intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。典型的动作类型有:main(activity的门户)、view、pick、edit等。而动作对应的数据则以uri的形式进行表示。例如:要查看一个人的凯发天生赢家一触即发官网的联系方式,你需要创建一个动作类型为view的intent,以及一个表示这个人的uri。

    与之有关系的一个类叫intentfilter。相对于intent是一个有效的做某事的请求,一个intent filter则用于描述一个activity(或者intent receiver)能够操作哪些intent。一个activity如果要显示一个人的凯发天生赢家一触即发官网的联系方式时,需要声明一个intentfilter,这个intentfilter要知道怎么去处理view动作和表示一个人的uri。intentfilter需要在androidmanifest.xml中定义。

   通过解析各种intent,从一个屏幕导航到另一个屏幕是很简单的。当向前导航时,activity将会调用startactivity(intent myintent)方法。然后,系统会在所有安装的应用程序中定义的intentfilter中查找,找到最匹配myintent的intent对应的activity。新的activity接收到myintent的通知后,开始运行。当startactivity方法被调用将触发解析myintent的动作,这个机制提供了两个关键好处:

    a、activities能够重复利用从其它组件中以intent的形式产生的一个请求;

    b、activities可以在任何时候被一个具有相同intentfilter的新的activity取代。

二、intent receiver

    当你希望你的应用能够对一个外部的事件(如当电话呼入时,或者数据网络可用时,或者到了晚上时)做出响应,你可以使用一个intent receiver。虽然intent receiver在感兴趣的事件发生时,会使用notificationmanager通知用户,但它并不能生成一个ui。intent receiver在androidmanifest.xml中注册,但也可以在代码中使用context.registerreceiver()进行注册。当一个intent receiver被触发时,你的应用不必对请求调用intent receiver,系统会在需要的时候启动你的应用。各种应用还可以通过使用context.broadcastintent()将它们自己的intent receiver广播给其它应用程序。

三、service

    一个service是一段长生命周期的,没有用户界面的程序。比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌曲。然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中,媒体播放器这个activity会使用context.startservice()来启动一个service,从而可以在后台保持音乐的播放。同时,系统也将保持这个service一直执行,直到这个service运行结束。另外,我们还可以通过使用context.bindservice()方法,连接到一个service上(如果这个service还没有运行将启动它)。当连接到一个service之后,我们还可以service提供的接口与它进行通讯。拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。

四、content provider

    应用程序能够将它们的数据保存到文件中、sql数据库中,甚至是任何有效的设备中。当你想将你的应用数据与其它的应用共享时,content provider将会很有用。一个content provider类实现了一组标准的方法,从而能够让其它的应用保存或读取此content provider处理的各种数据类型。

    更详细的content provider资料,可以参考附带文档中的accessing content providers。

五、intent类
    intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,android则根据此intent的描述,负责找到对应的组件,将 intent传递给调用的组件,并完成组件的调用。因此,intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调 用者之间的解耦。



有猫相伴的日子 2009-04-13 00:04
]]>
让tomcat支持ssi http://www.blogjava.net/pdw2009/archive/2009/03/06/258270.html有猫相伴的日子有猫相伴的日子fri, 06 mar 2009 09:24:00 gmthttp://www.blogjava.net/pdw2009/archive/2009/03/06/258270.htmlhttp://www.blogjava.net/pdw2009/comments/258270.htmlhttp://www.blogjava.net/pdw2009/archive/2009/03/06/258270.html#feedback0http://www.blogjava.net/pdw2009/comments/commentrss/258270.htmlhttp://www.blogjava.net/pdw2009/services/trackbacks/258270.html1.把文件$catalina_home/server/lib/servlets-ssi.renametojar重新命名为$catalina_home/server/lib/servlets-ssi.jar.

2.在文件$catalina_home/conf/web.xml中,你需要把两个地方的注释去掉,servlet 声明和servlet mapping。 servlet 声明看起来类似于下面:


ssi
...



而servlet mapping看起来类似于下面:


ssi
*.shtml



这些servlet 声明和mapping可以交替地加入到你的web 应用程序部署描述符中。

ssi基本指令

        1、ssi指令的语法格式如下:
           
               这些指令以html注释的形式出现,所以如果你没有正确设置ssi,浏览器会忽略这些指令。如果你正确设置了ssi,这些指令会被相应的结果替换。
        2、config
           
            config用来指定返回给客户端浏览器的错误信息、日期和文件大小的格式。
         常用指令:
           
           
           
         参数:
             errmsg 自定义ssi执行错误信息,可以为任何你喜欢的方式。
             sizefmt 文件大小显示方式,默认为字节方式("bytes")可以改为千字节方式("abbrev")
             timefmt 时间显示方式,最灵活的配置属性。
         eg:
            
            

             以千字节方式显示文件大小
            
            
            以特定的时间格式显示时间
   
    显示今天是星期几,几月,时区
   
       
3、echo
    echo用来输出变量的值。
    
    
    本文档名称:程序代码:
    
    现在时间:程序代码:
    
    你的ip地址是程序代码:
    
4、exec
  
   exec用来执行命令。 将某一外部程序的输出插入到页面中。可插入cgi程序或者是常规应用程序的输入,这取决于使用的参数是cmd还是cgi。
   
   
   
   
   参数:
    cmd 常规应用程序
    cgi cgi脚本程序
   eg:
    将会显示密码文件
    将会显示当前目录下文件列表
    将会执行cgi程序gb.cgi。
    将会执行cgi程序access_log.cgi。
   注意:
    从上面的示例可以看出,这个指令相当方便,但是也存在安全问题。
   禁止方法:
    .apache,将access.conf中的"options includes execcgi"这行代码删除;
    .在iis中,要禁用 #exec 命令,可修改 ssiexecdisable 元数据库;
5、flastmod
  
   flastmod返回file_name所代表的文件的最后修改时间。
   eg:
   
     将当前目录下news.htm文件的最近更新日期插插入到当前页面
6、fsize
  
   fsize返回file_name所代表的文件的大小。
  
  
   参数:
    file 指定包含文件相对于本文档的位置 如 info.txt 表示当前目录下的的info.txt文档
    virtual 指定相对于服务器文档根目录的位置 如 /hoyi/info.txt 表示
   注意:
    文件名称必须带有扩展名。
   eg:
   
     将当前目录下news.htm的文件大小入到当前页面
7、include
  
  
   include插入file_name所代表的文件的内容。
   file 文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。如表示当前目   录下的的nav_head.htm文档,则为file="nav_head.htm"。
   virtual 文件名是 web 站点上的虚拟目录的完整路径。如表示相对于服务器文档根目录下hoyi目录下的nav_head.htm文件;则为file="/hoyi/nav_head.htm"
   参数:
    file 指定包含文件相对于本文档的位置
    virtual 指定相对于服务器文档根目录的位置
   注意:
    1、文件名称必须带有扩展名。
    2、被包含的文件可以具有任何文件扩展名,我觉得直接使用htm扩展名最方便
8、printenv
  
    printenv返回所有定义的变量的列表。
9、set
  
   set用来自定义变量。在ssi中有许多标准的变量(如date_local),其中也包括对于cgi程序有效的环境变量。
10、if elif endif else
   if elif endif else用来条件选择。
   #if
   作用: 创建可以改变数据的页面,这些数据根据使用if语句时计算的要求予以显示。
     语法: 程序代码:
   
    显示内容
    
    显示内容
    
    显示内容
    
    eg:
    
      中华e搜网http://www.eshoo.com.cn
    
      中华e搜网http://www.eshoo.com.cn/bbs
    
      中华e搜网http://www.eshoo.com.cn
    
注意: 用于前面指令中的反斜杠,是用来代换内部的引号,以便它们不会被解释为结束表达式。不可省略。
 
六、普通用法
1、下面是一些比较常规的ssi的用法:
   最后修改时间
    有两种方法:
    this file last modified
    this file last modified
   包含一个footer
   
   设置errmsg
   
   设置sizefmt
   
   执行命令
  
2、高级ssi
   xssi(extended ssi)是一组高级ssi指令,内置于apache 1.2或更高版本的mod-include模块之中。
    其中可利用的的指令有:
   
   
   
   
   作用: 显示当前存在于web服务器环境中的所有环境变量。
   (1)#set
    作用:可给变量赋值,以用于后面的if语句。
    语法:程序代码:
     
    参数:无
    示例: 程序代码:
    
     ssi允许自定义变量,这些变量可以用来进行比较和条件判断。
    定义变量
    
    条件表达式
    
    
     
    




有猫相伴的日子 2009-03-06 17:24
]]>
网站地图