SSI使用入門:
什么是SSI技術?
SSI(ServeSideIncludes),通常稱之為服務器端包含,使用SSI技術文件默認的后綴名為.shtml,SSI技術通過在html文件中加入SSI指令,讓服務器端在輸出html之前解釋SSI指令,并把解釋完的結果和html代碼一同輸出給客戶端。SSI指令實在服務器端執行的。
在大部分項目中我們主要使用SSI的包含指令<!--#includevirtual="/globle/foot.jsp"-->
標簽。
為什么要使用SSI技術?
既然jsp中的<jsp:includepage="/globle/foot.jsp"/>標準動作,也提供了類似的功能。為什么我們還要使用SSI技術?
主要原因有一下幾點:
1,首先SSI技術是通用技術,不局限于運行環境,在java、dotne、CGI、asp、php都 可以使用SSI技術。
2,解釋SSI指令要比解釋JSP的效率要高,因為servlet規范提供了太多的功能。這些功能都需要好servlet引擎一一進行解釋,所以效率比較低。
在目前大部分門戶網站都是用了SSI技術,解釋SSI文件的最佳服務器是ApacheHttpServer。大型門戶網站基本上都采用ApacheServer來解釋SSI文件
在Tomcat6.x中怎么應用SSI技術:
介紹:
SSI(服務器端包含)放置在HTML頁面的指令,他們讓你動態生成的內容添加到現有的HTML頁面,而無需通過一個CGI程序,或其他動態技術服務整個頁面。當你使用Tomcat作為你的HTTP服務器,并且需要SSI支持,你能夠在Tomcat下增加SSI支持。通常,這是在開發過程中,當你不想要運行一個象ApacheWeb服務器(ApacheHttpServer)。Tomcat的SSI支持實現Apache(ApacheHttpServer)相同的SSI指令。如果在運營網站的時候應該使用ApacheHttpServer服務器解釋SSI指令,如果使用Tomcat作為解釋SSI指令的服務器,雖然可以實現但是效率低。啟用SSI支持可以通過一個servlet和Filter,但是你只能選一種方式,要么是servlet或者是filter。
基于servlet的SSI支持已經被實現通過類org.apache.catalina.ssi.SSIServlet。習慣上,servlet的映射URL路徑為"*.shtml"。
基于filter的SSI支持已經被實現通過類org.apache.catalina.ssi.SSIFilter。習慣上,servlet的映射URL路徑為"*.shtml"。盡管它可以映射到“*”,因為它會選擇性地啟用/禁用SSI的處理基于MIME類型,contentType的初始化參數允許您應用SSI處理JSP頁面,JavaScript,或者你想要的任何其他內容。
在Tomcat默認情況下禁用SSI支持。
環境搭建:
警告:
可以使用SSI指令的執行程序到TomcatJVM外部。如果你是使用JavaSecurityManager,這將繞過你的安全策略配置在catalina.policy里。
要使用SSI的servlet,刪除在$CATALINA_BASE/conf/web.xml中SSIservlet和servlet的映射周圍的XML注釋。
要使用SSI的servlet,刪除在$CATALINA_BASE/conf/web.xml中SSI過濾器和過濾器的映射周圍的XML注釋。
VariableName | Description |
AUTH_TYPE | Thetypeofauthenticationusedforthisuser:BASIC,FORM,etc. |
CONTENT_LENGTH | Thelengthofthedata(inbytesorthenumberofcharacters)passedfromaform. |
CONTENT_TYPE | TheMIMEtypeofthequerydata,suchas"text/html". |
DATE_GMT | CurrentdateandtimeinGMT |
DATE_LOCAL | Currentdateandtimeinthelocaltimezone |
DOCUMENT_NAME | Thecurrentfile |
DOCUMENT_URI | Virtualpathtothefile |
GATEWAY_INTERFACE | TherevisionoftheCommonGatewayInterfacethattheserverusesifenabled:"CGI/1.1". |
HTTP_ACCEPT | AlistoftheMIMEtypesthattheclientcanaccept. |
HTTP_ACCEPT_ENCODING | Alistofthecompressiontypesthattheclientcanaccept. |
HTTP_ACCEPT_LANGUAGE | Alistofthelanguagesthattheclientcanaccept. |
HTTP_CONNECTION | Thewaythattheconnectionfromtheclientisbeingmanaged:"Close"or"Keep-Alive". |
HTTP_HOST | Thewebsitethattheclientrequested. |
HTTP_REFERER | TheURLofthedocumentthattheclientlinkedfrom. |
HTTP_USER_AGENT | Thebrowsertheclientisusingtoissuetherequest. |
LAST_MODIFIED | Lastmodificationdateandtimeforcurrentfile |
PATH_INFO | Extrapathinformationpassedtoaservlet. |
PATH_TRANSLATED | ThetranslatedversionofthepathgivenbythevariablePATH_INFO. |
QUERY_STRING | Thequerystringthatfollowsthe"?"intheURL. |
QUERY_STRING_UNESCAPED | Undecodedquerystringwithallshellmetacharactersescapedwith"/" |
REMOTE_ADDR | TheremoteIPaddressoftheusermakingtherequest. |
REMOTE_HOST | Theremotehostnameoftheusermakingtherequest. |
REMOTE_PORT | TheportnumberatremoteIPaddressoftheusermakingtherequest. |
REMOTE_USER | Theauthenticatednameoftheuser. |
REQUEST_METHOD | Themethodwithwhichtheinformationrequestwasissued:"GET","POST"etc. |
REQUEST_URI | Thewebpageoriginallyrequestedbytheclient. |
SCRIPT_FILENAME | Thelocationofthecurrentwebpageontheserver. |
SCRIPT_NAME | Thenameofthewebpage. |
SERVER_ADDR | Theserver'sIPaddress. |
SERVER_NAME | Theserver'shostnameorIPaddress. |
SERVER_PORT | Theportonwhichtheserverreceivedtherequest. |
SERVER_PROTOCOL | Theprotocolusedbytheserver.E.g."HTTP/1.1". |
SERVER_SOFTWARE | Thenameandversionoftheserversoftwarethatisansweringtheclientrequest. |
UNIQUE_ID | Atokenusedtoidentifythecurrentsessionifonehasbeenestablished. |
SSI是當然不是對CGI或其他的技術用于生成動態網頁的替代品,不過這是一個很好的方式對于往頁面加入少量的動態的內容,并且不用做額外的工作。
新聞熱點
疑難解答