本Blog已经转移至:http://shooven.com
亦可看看:http://blog.shooven.com
http://ohblog.org
<%@ page import="java.net.*"%>
<%@ page import="java.io.*"%>
<%@ page import="javax.xml.parsers.DocumentBuilderFactory"%>
<%@ page import="javax.xml.parsers.ParserConfigurationException"%>
<%@ page import="org.xml.sax.SAXException"%>
<%@ page import="org.w3c.dom.*"%>
<%@ page import="java.util.*"%>
<%!
// The following code was graciously provided by Armond Avanes (http://www.armondavanes.com)
private String tla_ads( HttpServletRequest request, HttpServletResponse response ) throws IOException, ParserConfigurationException, SAXException
{
// Number of seconds before connection to XML times out
// (This can be left the way it is)
int CONNECTION_TIMEOUT = 10;
// Local file to store XML
// This file MUST be writable by web server
// You should create a blank file and CHMOD it to 666
String LOCAL_XML_FILENAME = "local_308974.xml";
String INVENTORY_KEY = "8574MPQYSTQI8D7K56JQ";
File localXmlFile = new File( getServletConfig().getServletContext().getRealPath(LOCAL_XML_FILENAME ) );
if( !localXmlFile.exists() ) {
return( "Script error: " + localXmlFile.getName() + " does not exist. Please create a blank file named " + localXmlFile.getName() + "." );
}
if( !localXmlFile.canWrite() ) {
return( "Script error: " + localXmlFile.getName() + " is not writable. Please set write permissions on " + localXmlFile.getName() + "." );
}
if( localXmlFile.lastModified()<(new Date().getTime() - 3600*1000) || localXmlFile.length()<20 ) {
String request_uri = (request.getRequestURI()!=null) ? request.getRequestURI() : "";
String user_agent = (request.getHeader("User-Agent")!=null) ? request.getHeader("User-Agent") : "";
URL url = new URL("http://www.text-link-ads.com/xml.php?inventory_key=" + INVENTORY_KEY + "&referer=" + response.encodeURL( request_uri ) + "&user_agent=" + response.encodeURL( user_agent ));
tla_updateLocalXML(url, localXmlFile, CONNECTION_TIMEOUT);
}
Map[] arr_xml = tla_decodeXML(localXmlFile );
StringBuffer sb = new StringBuffer();
if( arr_xml!=null && arr_xml.length>0 ) {
sb.append( "\n\n" );
for( int i=0; i" );
sb.append( map.get("BeforeText") );
sb.append( " " + map.get("Text") + " " );
sb.append( map.get("AfterText") + "\n" );
}
sb.append("
");
}
return sb.toString();
}
private void tla_updateLocalXML(URL url, File file, int time_out) throws IOException
{
file.setLastModified( new Date().getTime() );
String xml = file_get_contents_tla(url, time_out);
if( xml!=null && !xml.trim().equals("") ) {
FileWriter fw = new FileWriter(file);
fw.write( xml );
fw.close();
}
}
private String file_get_contents_tla(URL url, int time_out) throws IOException
{
URLConnection urlConnection = url.openConnection();
//urlConnection.setConnectTimeout( time_out * 1000 );
//urlConnection.setReadTimeout( time_out * 1000 );
InputStream is = urlConnection.getInputStream();
StringBuffer content = new StringBuffer();
int ch;
while( (ch=is.read())!=-1 )
content.append( (char)ch );
is.close();
return content.toString();
}
private Map[] tla_decodeXML(File file) throws ParserConfigurationException, IOException, SAXException
{
Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse( file );
Node linksRoot = dom.getFirstChild();
NodeList links = linksRoot.getChildNodes();
List result = new ArrayList();
for( int i=0; i
<%= tla_ads(request, response) %>