??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV无码专区亚洲AV伊甸园,亚洲导航深夜福利,亚洲三级在线视频 http://www.tkk7.com/pdw2009/本站不再更新Q欢q光?
<a >java开发技术网</a> zh-cn Sun, 23 Mar 2025 20:19:03 GMT Sun, 23 Mar 2025 20:19:03 GMT 60 blackberry 日志 http://www.tkk7.com/pdw2009/archive/2010/09/05/331088.html有猫怼的日?/dc:creator>有猫怼的日?/author>Sun, 05 Sep 2010 08:55:00 GMT http://www.tkk7.com/pdw2009/archive/2010/09/05/331088.html http://www.tkk7.com/pdw2009/comments/331088.html http://www.tkk7.com/pdw2009/archive/2010/09/05/331088.html#Feedback 0 http://www.tkk7.com/pdw2009/comments/commentRss/331088.html http://www.tkk7.com/pdw2009/services/trackbacks/331088.html package com.ff.utils;
import java.util.Date;
import net.rim.device.api.system.EventLogger;
/**
* 日志c?br />
* @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);
}
}
}
不管是在模拟器还是真机,日志q是必须?.....如果该文对你有用Qؓ了表C对作者的支持Q麻烦你单击一下下面的q告Q谢?br />
]]>libxml中用xpath解析xml文g http://www.tkk7.com/pdw2009/archive/2010/08/23/329638.html有猫怼的日?/dc:creator>有猫怼的日?/author>Mon, 23 Aug 2010 04:06:00 GMT http://www.tkk7.com/pdw2009/archive/2010/08/23/329638.html http://www.tkk7.com/pdw2009/comments/329638.html http://www.tkk7.com/pdw2009/archive/2010/08/23/329638.html#Feedback 2 http://www.tkk7.com/pdw2009/comments/commentRss/329638.html http://www.tkk7.com/pdw2009/services/trackbacks/329638.html
#include <libxml/xpath.h>
#include <stdio.h>
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*) "http://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
<?xml version="1.0" encoding="UTF-8"?>
<story>
<storyinfo>
<author>John Fleck</author>
<datewritten>June 2, 2002</datewritten>
<keyword>example keyword?lt;/keyword>
</storyinfo>
<body>
<headline>This is the headline</headline>
<para>This is the body text.</para>
</body>
</story>
恌帮单M下广?
]]> SessionBean ejb入门例子 http://www.tkk7.com/pdw2009/archive/2010/04/15/318414.html有猫怼的日?/dc:creator>有猫怼的日?/author>Thu, 15 Apr 2010 06:29:00 GMT http://www.tkk7.com/pdw2009/archive/2010/04/15/318414.html http://www.tkk7.com/pdw2009/comments/318414.html http://www.tkk7.com/pdw2009/archive/2010/04/15/318414.html#Feedback 0 http://www.tkk7.com/pdw2009/comments/commentRss/318414.html http://www.tkk7.com/pdw2009/services/trackbacks/318414.html
做这么多qjavaW一ơ写ejb的例子,q需要l努?br />
下蝲地址
]]> mysql字符串函C用笔?/title> http://www.tkk7.com/pdw2009/archive/2009/05/19/271603.html有猫怼的日?/dc:creator>有猫怼的日?/author>Tue, 19 May 2009 14:50:00 GMT http://www.tkk7.com/pdw2009/archive/2009/05/19/271603.html http://www.tkk7.com/pdw2009/comments/271603.html http://www.tkk7.com/pdw2009/archive/2009/05/19/271603.html#Feedback 0 http://www.tkk7.com/pdw2009/comments/commentRss/271603.html http://www.tkk7.com/pdw2009/services/trackbacks/271603.html
最q要开始用MySQL记点W记?br />
select left("http://www.webmasterclub.org/&id=1310",instr("http://www.webmasterclub.org/&id=1310",'&')-1 )
left函数Q返回左边特定长度的字符串函数?br />
instr(str,substr)q回substr字符串在str字符串中的位|?br />
注意Qmysql处理字符位置时是?为序列启始?br />
]]> android 弹出?/title> http://www.tkk7.com/pdw2009/archive/2009/04/22/267053.html有猫怼的日?/dc:creator>有猫怼的日?/author>Wed, 22 Apr 2009 14:31:00 GMT http://www.tkk7.com/pdw2009/archive/2009/04/22/267053.html http://www.tkk7.com/pdw2009/comments/267053.html http://www.tkk7.com/pdw2009/archive/2009/04/22/267053.html#Feedback 0 http://www.tkk7.com/pdw2009/comments/commentRss/267053.html http://www.tkk7.com/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 未完待箋..
]]> android 中用sqLite例子 http://www.tkk7.com/pdw2009/archive/2009/04/19/266460.html有猫怼的日?/dc:creator>有猫怼的日?/author>Sun, 19 Apr 2009 14:20:00 GMT http://www.tkk7.com/pdw2009/archive/2009/04/19/266460.html http://www.tkk7.com/pdw2009/comments/266460.html http://www.tkk7.com/pdw2009/archive/2009/04/19/266460.html#Feedback 4 http://www.tkk7.com/pdw2009/comments/commentRss/266460.html http://www.tkk7.com/pdw2009/services/trackbacks/266460.html 今晚写了个sqLite的应用例子,_一下代码,׃详细详述了?br />
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;
/**
* 数据库操?br />
* @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. * ;
/**
* 操作数据库例?br />
* @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();
}
/**
* 判断表是否存?br />
* @param tablename
* @return
*/
public boolean isTableExits(String tablename){
boolean result = false ; // 表示不存?/span>
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 ; // 表存?/span>
}
return result;
}
}
在程序中操作数所的代码片D?br />
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();
}
}
}
ȝ帮单Mơ广告了 Q!Q?
]]> Android布局(Layout) http://www.tkk7.com/pdw2009/archive/2009/04/15/265850.html有猫怼的日?/dc:creator>有猫怼的日?/author>Wed, 15 Apr 2009 13:53:00 GMT http://www.tkk7.com/pdw2009/archive/2009/04/15/265850.html http://www.tkk7.com/pdw2009/comments/265850.html http://www.tkk7.com/pdw2009/archive/2009/04/15/265850.html#Feedback 0 http://www.tkk7.com/pdw2009/comments/commentRss/265850.html http://www.tkk7.com/pdw2009/services/trackbacks/265850.html
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
节点作ؓ开头。一个布局容器里可以包?或多个布局容器。LinearLayoutU性的布局方式Q要么上下,要么左右的添加控Ӟ很常?br />
AbsoluteLayout可以让子元素指定准确的x/y坐标|q显C在屏幕上?0, 0)为左上角Q当向下或向右移动时Q坐标值将变大。AbsoluteLayout没有边框,允许元素之间互相重叠Q尽不推荐Q。我们通常不推荐用AbsoluteLayoutQ除非你有正当理p使用它,因ؓ它界面代码太过刚性,以至于在不同的设备上可能不能很好地工作?nbsp;
RelativeLayout允许子元素指定他们相对于其它元素或父元素的位|(通过ID指定Q。因此,你可以以叛_齐,或上下,或置于屏q中央的形式来排列两个元素。元素按序排列Q因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素以屏幕中央的相对位|来排列。如果用XML来指定这个layoutQ在你定义它之前Q被兌的元素必d义?
q是一个计数器的例子?br />
FrameLayout是最单的一个布局对象。它被定制ؓ你屏q上的一个空白备用区域,之后你可以在其中填充一个单一对象 ?比如Q一张你要发布的囄。所有的子元素将会固定在屏幕的左上角Q你不能为FrameLayout中的一个子元素指定一个位|。后一个子元素会直接在前一个子元素之上q行覆盖填充Q把它们部䆾或全部挡住(除非后一个子元素是透明的)?
http://blog.chinaunix.net/u2/86463/showart_1674836.html
]]> Android实现不同Active面间的跌{ http://www.tkk7.com/pdw2009/archive/2009/04/13/265195.html有猫怼的日?/dc:creator>有猫怼的日?/author>Sun, 12 Apr 2009 16:40:00 GMT http://www.tkk7.com/pdw2009/archive/2009/04/13/265195.html http://www.tkk7.com/pdw2009/comments/265195.html http://www.tkk7.com/pdw2009/archive/2009/04/13/265195.html#Feedback 1 http://www.tkk7.com/pdw2009/comments/commentRss/265195.html http://www.tkk7.com/pdw2009/services/trackbacks/265195.html
intent.setClass(ErrorPageActive.this, LoginActive.class);
startActivity(intent);
p么简单,如果要把一个页面的参数带到另一个页面,则需?br />
Bundle bundle = new Bundle();
bundle.putString("USERNAME", et_username.getText().toString());
intent.putExtras(bundle);
通过以上三行代码现实Q带参数跌{?
]]> Android应用E序四大lg http://www.tkk7.com/pdw2009/archive/2009/04/13/265193.html有猫怼的日?/dc:creator>有猫怼的日?/author>Sun, 12 Apr 2009 16:04:00 GMT http://www.tkk7.com/pdw2009/archive/2009/04/13/265193.html http://www.tkk7.com/pdw2009/comments/265193.html http://www.tkk7.com/pdw2009/archive/2009/04/13/265193.html#Feedback 2 http://www.tkk7.com/pdw2009/comments/commentRss/265193.html http://www.tkk7.com/pdw2009/services/trackbacks/265193.html 对于一个Android应用E序来说Q是由四U构造块l织而成的,q四U构造块如下Q?/span>
Activity
Intent Receiver
Service
Content Provider
但是Qƈ不是每一个Android应用E序都需要这四种构造块Q这不是必须的,某些时候,我们只需要这四种中的几种l合成我们的应用?
当我们明了我们的应用需要哪些构造块后,我们需要在AndroidManifest.xml中登记这些构造块的清单。这是一个XML配置文gQ这个配|文件用于定义我们的应用E序的组件、组件的功能及必要条件等。这个配|文件是每个Android应用必需的。对于AndroidMainfest.xml的SchemaQ参考SDK包附带的文。以下,我们对四U构造块做一些说明:
一、Activity
Activity是Android构造块中最基本的一U,在应用中Q一个activity通常是一个单独的屏幕。每一个activity都被实现Z个独立的c,q且l承于Activityq个基类。这个activitycd会显C由几个Views控gl成的用h口,q对事g做出响应。大部䆾的应用都会包含多个的屏幕。例如,一个短消息应用E序会有一个屏q用于显CpMh列表Q第二个屏幕用于写短消息Q同时还会有用于览旧短消息及进行系l设|的屏幕。每一个这L屏幕Q就是一个activity。从一个屏q导航到另一个屏q是很简单的。在一些应用中Q一个屏q甚至会q回值给前一个屏q?/span>
当一个新的屏q打开后,前一个屏q将会暂停,q保存在历史堆栈中。用户可以返回到历史堆栈中的前一个屏q。当屏幕不再使用Ӟq可以从历史堆栈中删除。默认情况下QAndroid会保留从主屏幕到每一个应用的q行屏幕?/span>
Android使用了Intentq个Ҏc,实现在屏q与屏幕之间Ud。Intentcȝ于描qC个应用将会做什么事。在Intent的描q结构中Q有两个最重要的部分:动作和动作对应的数据。典型的动作cd有:MAINQactivity的门P、VIEW、PICK、EDIT{。而动作对应的数据则以URI的Ş式进行表C。例如:要查看一个h的联pL式,你需要创Z个动作类型ؓVIEW的intentQ以及一个表C个h的URI?/span>
与之有关pȝ一个类叫IntentFilter。相对于intent是一个有效的做某事的hQ一个intent filter则用于描qC个activityQ或者Intent ReceiverQ能够操作哪些intent。一个activity如果要显CZ个h的联pL式时Q需要声明一个IntentFilterQ这个IntentFilter要知道怎么d理VIEW动作和表CZ个h的URI。IntentFilter需要在AndroidManifest.xml中定义?/span>
通过解析各种intentQ从一个屏q导航到另一个屏q是很简单的。当向前DӞactivity会调用startActivity(Intent myIntent)Ҏ。然后,pȝ会在所有安装的应用E序中定义的IntentFilter中查找,扑ֈ最匚wmyIntent的Intent对应的activity。新的activity接收到myIntent的通知后,开始运行。当startActivityҎ被调用将触发解析myIntent的动作,q个机制提供了两个关键好处:
A、Activities能够重复利用从其它组件中以Intent的Ş式生的一个请求;
B、Activities可以在Q何时候被一个具有相同IntentFilter的新的Activity取代?/span>
二、Intent Receiver
当你希望你的应用能够对一个外部的事gQ如当电话呼入时Q或者数据网l可用时Q或者到了晚上时Q做出响应,你可以用一个Intent Receiver。虽然Intent Receiver在感兴趣的事件发生时Q会使用NotificationManager通知用户Q但它ƈ不能生成一个UI。Intent Receiver在AndroidManifest.xml中注册,但也可以在代码中使用Context.registerReceiver()q行注册。当一个intent receiver被触发时Q你的应用不必对h调用intent receiverQ系l会在需要的时候启动你的应用。各U应用还可以通过使用Context.broadcastIntent()它们自qintent receiverq播l其它应用程序?/span>
三、Service
一个Service是一D长生命周期的,没有用户界面的程序。比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播攑֙的应用中Q应该会有多个activityQ让使用者可以选择歌曲q播放歌曌Ӏ然而,音乐重放q个功能q没有对应的activityQ因Z用者当然会认ؓ在导航到其它屏幕旉乐应该还在播攄。在q个例子中,媒体播放器这个activity会用Context.startService()来启动一个serviceQ从而可以在后台保持音乐的播放。同Ӟpȝ也将保持q个service一直执行,直到q个serviceq行l束。另外,我们q可以通过使用Context.bindService()ҎQ连接到一个service上(如果q个serviceq没有运行将启动它)。当q接C个service之后Q我们还可以service提供的接口与它进行通讯。拿媒体播放器这个例子来_我们q可以进行暂停、重播等操作?/span>
四、Content Provider
应用E序能够它们的数据保存到文件中、SQL数据库中Q甚xM有效的设备中。当你想你的应用数据与其它的应用共享时QContent Provider会很有用。一个Content ProvidercdC一l标准的ҎQ从而能够让其它的应用保存或d此Content Provider处理的各U数据类型?/span>
更详l的Content Provider资料Q可以参考附带文档中的Accessing Content Providers?br />
五、Intentc?br />
Intent负责对应用中一ơ操作的动作、动作涉及数据、附加数据进行描qͼAndroid则根据此Intent的描qͼ负责扑ֈ对应的组Ӟ?Intent传递给调用的组Ӟq完成组件的调用。因此,Intent在这里v着一个媒体中介的作用Q专门提供组件互相调用的相关信息Q实现调用者与被调 用者之间的解耦?br />
]]> 让tomcat支持ssi http://www.tkk7.com/pdw2009/archive/2009/03/06/258270.html有猫怼的日?/dc:creator>有猫怼的日?/author>Fri, 06 Mar 2009 09:24:00 GMT http://www.tkk7.com/pdw2009/archive/2009/03/06/258270.html http://www.tkk7.com/pdw2009/comments/258270.html http://www.tkk7.com/pdw2009/archive/2009/03/06/258270.html#Feedback 0 http://www.tkk7.com/pdw2009/comments/commentRss/258270.html http://www.tkk7.com/pdw2009/services/trackbacks/258270.html 1.把文?CATALINA_HOME/server/lib/servlets-ssi.renametojar重新命名?CATALINA_HOME/server/lib/servlets-ssi.jar.
2.在文?CATALINA_HOME/conf/web.xml中,你需要把两个地方的注释去掉,servlet 声明和servlet mapping?servlet 声明看v来类g下面Q?
<servlet>
<servlet-name>ssi</servlet-name>
...
</servlet>
而servlet mapping看v来类g下面Q?
<servlet-mapping>
<servlet-name>ssi</servlet-name>
<url-pattern>*.shtml</url-pattern>
</servlet-mapping>
q些servlet 声明和mapping可以交替地加入到你的Web 应用E序部v描述W中?br />
SSI基本指o
1?span class="hilite2">SSI指o的语法格式如下:
<!--#element [attribute=value] [attribute=value] ... -->
q些指o以HTML注释的Ş式出玎ͼ所以如果你没有正确讄SSI Q浏览器会忽略这些指令。如果你正确讄?span class="hilite2">SSIQ这些指令会被相应的l果替换?
2、config
<!--#config timefmt="%B %Y" -->
config用来指定q回l客L览器的错误信息、日期和文g大小的格式?
常用指oQ?
<!--#config errmsg="自定义错误信?-->
<!--#config sizefmt="昄单位"-->
<!--#config timefmt="昄格式"-->
参数Q?
errmsg 自定?span class="hilite2">SSI执行错误信息Q可以ؓM你喜Ƣ的方式?
sizefmt 文g大小昄方式Q默认ؓ字节方式("bytes")可以改ؓ千字节方?"abbrev")
timefmt 旉昄方式Q最灉|的配|属性?
Eg:
<!--#config errmsg="服务器执行错误,误pȝ理员 yiho@126.comQ谢谢!"-->
<!--#fsize file="不存在的文g.htm"-->
以千字节方式昄文g大小
<!--#config sizefmt="abbrev"-->
<!--#fsizefile="news.htm"-->
以特定的旉格式昄旉
<!--#config timefmt="%Yq?%m?d?星期%W 北京旉%H:%M:%sQ?Yq已q去?j?今天?Yq的W?U个星?-->
<!--#echo var="DATE_LOCAL"--> 昄今天是星期几,几月,时区
<!--#config timefmt="今天%A, %B ,服务器时区是 %zQ是"-->
<!--#echo var="DATE_LOCAL"-->
3、echo
echo用来输出变量的倹{?
<!--#echo var="VARIABLE_NAME" -->
<!--#echo var="变量名称"-->
本文名UͼE序代码:
<!--#echo var="DOCUMENT_NAME"-->
现在旉Q程序代?
<!--#echo var="DATE_LOCAL"-->
你的IP地址是程序代?
<!--#echo var="REMOTE_ADDR"-->
4、exec
<!--#exec cmd="COMMOND" -->
exec用来执行命o?某一外部E序的输出插入到面中。可插入CGIE序或者是常规应用E序的输入,q取决于使用的参数是cmdq是cgi?
<!--#exec cmd="文g名称"-->
<!--#exec cgi="文g名称"-->
<!--#exec cmd="文g名称"-->
<!--#exec cgi="文g名称"-->
参数Q?
cmd 常规应用E序
cgi CGI脚本E序
EgQ?
<!--#exec cmd="cat /etc/passwd"-->会昄密码文g
<!--#exec cmd="dir /b"-->会昄当前目录下文件列?
<!--#exec cgi="/cgi-bin/gb.cgi"-->会执行CGIE序gb.cgi?
<!--#exec cgi="/cgi-bin/access_log.cgi"-->会执行CGIE序access_log.cgi?
注意Q?
从上面的CZ可以看出Q这个指令相当方便,但是也存在安全问题?
止ҎQ?
QApacheQ将access.conf中的"Options Includes ExecCGI"q行代码删除Q?
Q在IIS中,要禁?#exec 命oQ可修改 SSIExecDisable 元数据库Q?
5、flastmod
<!--#flastmod file="FILE_NAME" -->
flastmodq回FILE_NAME所代表的文件的最后修Ҏ间?
Eg:
<!--#flastmod file="news.htm"-->
当前目录下news.htm文g的最q更新日期插插入到当前页?
6、fsize
<!--#fsize file="FILE_NAME" -->
fsizeq回FILE_NAME所代表的文件的大小?
<!--#flastmod file="文g名称"-->
<!--#fsize file="文g名称"-->
参数Q?
file 指定包含文g相对于本文档的位|??info.txt 表示当前目录下的的info.txt文
virtual 指定相对于服务器文根目录的位置 ?/hoyi/info.txt 表示
注意Q?
文g名称必须带有扩展名?
Eg:
<!--#fsize file="news.htm"-->
当前目录下news.htm的文件大入到当前页?
7、include
<!--#include file="文g名称"-->
<!--#include virtual="文g名称"-->
include插入FILE_NAME所代表的文件的内容?
file 文g名是一个相对\径,该\径相对于使用 #include 指o的文所在的目录。被包含文g可以在同一U目录或其子目录中,但不能在上一U目录中。如表示当前?nbsp; 录下的的nav_head.htm文Q则为file="nav_head.htm"?
virtual 文g名是 Web 站点上的虚拟目录的完整\径。如表示相对于服务器文根目录下hoyi目录下的nav_head.htm文gQ则为file="/hoyi/nav_head.htm"
参数Q?
file 指定包含文g相对于本文的位|?
virtual 指定相对于服务器文根目录的位置
注意Q?
1、文件名U必d有扩展名?
2、被包含的文件可以具有Q何文件扩展名Q我觉得直接使用htm扩展名最方便
8、printenv
<!--#printenv -->
printenvq回所有定义的变量的列表?
9、set
<!--#set var="VARIABLE_NAME" value="VARIABLE_VALUE" -->
set用来自定义变量。在SSI 中有许多标准的变?如DATE_LOCAL)Q其中也包括对于CGIE序有效的环境变量?
10、if elif endif else
if elif endif else用来条g选择?
#if
作用Q?创徏可以改变数据的页面,q些数据Ҏ使用if语句时计的要求予以昄?
语法Q?E序代码:
<!--#if expr="$变量?"变量值A""-->
昄内容
<!--#elif expr="$变量?"变量值B""-->
昄内容
<!--#else-->
昄内容
<!--#endif"-->
Eg:
<!--#if expr="$SERVER_NAME="hoyi.zb169.net""-->
中华E搜网http://www.eshoo.com.cn
<!--#elif expr="$SERVER_NAME="linux.cqi.com.cn"" -->
中华E搜网http://www.eshoo.com.cn/bbs
<!--#else-->
中华E搜网http://www.eshoo.com.cn
<!--#endif"-->
注意Q?用于前面指o中的反斜杠,是用来代换内部的引号Q以便它们不会被解释为结束表辑ּ。不可省略?
六、普通用?
1、下面是一些比较常规的SSI 的用法:
最后修Ҏ?
有两U方法:
This file last modified <!--#flastmod file="ssi .shtml" -->
This file last modified <!--#echo var="LAST_MODIFIED" -->
包含一个footer
<!--#include virtual="/footer.html" -->
讄errmsg
<!--#config errmsg="[error message!]" -->
讄sizefmt
<!--#config sizefmt="bytes|abbrev" -->
执行命o
<!--#exec cmd="dir" -->
2、高U?span class="hilite2">SSI
XSSIQExtended SSI Q是一l高U?span class="hilite2">SSI指oQ内|于Apache 1.2或更高版本的mod-include模块之中?
其中可利用的的指令有Q?
<!--#printenv-->
<!--#printenv-->
<!--#printenv-->
<!--#printenv-->
作用Q?昄当前存在于WEB服务器环境中的所有环境变量?
Q?Q?set
作用Q可l变量赋|以用于后面的if语句?
语法Q程序代?
<!--#set var="变量?value="变量?-->
参数Q无
CZQ?E序代码:
<!--#set var="color"value="U色"-->
SSI 允许自定义变量,q些变量可以用来q行比较和条件判断?
定义变量
<!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
条g表达?
<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->
]]>
վ֩ģ壺
˺ݺۺϾþ |
þһѲ |
һƵ߲ |
ձѾþþþþþվ |
äv뾫Ʒþþ
|
ŷձ |
avƬþ |
ԺѵȫƵ |
һ |
ŮƷƵ |
պþӰԺ |
þƷĻ |
þþƷѲ |
ñĻ |
ëƬؿ |
91Ʒˬž߹ۿ |
ѾƷ߶ |
99Ļ |
þþžAVѾƷ |
77777ҹ |
ëƬ߹ۿ |
ƷĻ |
2021þþƷѹۿ |
ŮƷƵ |
߿Ƭa |
ձŷɫƵ߲ |
97ҹҹ |
ѹվ߿ |
Ƶ߹ۿַ |
˰av߲ |
˳ҹѴƬ߹ۿ |
Ļ |
һëƬѹۿ |
þþƷƷ |
뾫Ʒ123ѿ |
רһvav |
AVպAVվ
|
վɫѿ |
߾Ʒ |
AV˾Ʒ |
þþþþóëƬѿ |