Форум SAPE.RU

Форум SAPE.RU (http://forum.sape.ru/index.php)
-   Установка кода на различные движки (http://forum.sape.ru/forumdisplay.php?f=26)
-   -   Установка кода на .jsp (http://forum.sape.ru/showthread.php?t=16138)

Rovno 02.08.2008 12:32

Установка кода на .jsp
 
Кто нибуть пробовал каким-либо способом установить код на такие сайты??!:confused:

Se0man 02.08.2008 13:29

неа не пробовал. тут или саппорту пиши, или нанимай кого нить, тут люди под любые сайты код пишут, читай подписи

dema501 25.09.2008 16:30

я прикручивал если актуально обращайся.

yak 23.06.2009 17:14

Сам код:

PHP код:

<%String url Utils.doEncodeURL(requestresponserequest.getRequestURI()+((request.getQueryString() != null)  ? "?"+request.getQueryString() : ""));%>
<
jsp:include page="/include/sape.jsp" flush="true">
<
jsp:param name="url" value="<%=%>" />
</
jsp:include> 

sape.jsp:
PHP код:

<%@ page language="java" contentType="text/html; charset=windows-1251" pageEncoding="cp1251" %>
<%@ 
page import="
    javax.xml.parsers.DocumentBuilder,
    javax.xml.parsers.DocumentBuilderFactory,

    org.w3c.dom.*,
    org.jaxen.dom.DOMXPath,

    org.jaxen.XPath,
    org.jaxen.XPathSyntaxException,
    org.jaxen.JaxenException,

    java.util.List,
    java.util.Iterator,

    java.util.*" 
%>
<%
String url  Utils.getParameter(request"url");


class 
SAPE_client {
    private 
String _request_uri            =    "";
    private 
String _db_file                =    "/*****/sapedb.xml";

    public 
SAPE_client(String request_uriboolean verbose) {
        
this._request_uri request_uri;
    }

    private 
String Load_links() {
        
StringBuffer sb = new StringBuffer();

        try {
            
DocumentBuilderFactory factory DocumentBuilderFactory.newInstance();

            
factory.setNamespaceAware(true);
            
DocumentBuilder builder factory.newDocumentBuilder();
            
            
org.w3c.dom.Document doc builder.parsethis._db_file );

            
String delimiter "# ";

            try {
                
delimiter doc.getElementsByTagName("sape").item(0).getAttributes().getNamedItem("delimiter").getNodeValue();
            }
            catch (
Exception e) {
                
e.printStackTrace();
                
delimiter "# ";
            }


            
XPath xpath = new DOMXPath"//page[@uri='"+this._request_uri+"']/link" );

//            sb.append( "XPah:h " + xpath + "<br>\n");
            
            
List results xpath.selectNodesdoc );

            if (
results.isEmpty() || results.size() == 0) {
                
xpath =  new DOMXPath"//page[@uri='"+this._request_uri.replaceAll("index.html""")+"']/link" );
                
results xpath.selectNodesdoc );
            }

            if (
results.isEmpty() || results.size() == 0) {
                
xpath = new DOMXPath"//page[@uri='*']" );
                
results xpath.selectNodesdoc );
            }

//            sb.append( "XPah:h " + xpath + "<br>\n");


            
if (!results.isEmpty()) {
                
Iterator resultIter results.iterator();
            
                while ( 
resultIter.hasNext() ) {
                    
Object o resultIter.next();
                    try {
                        
Node n = (Nodeo;

                        if (
n.hasChildNodes()) {
                            
NodeList cn =    n.getChildNodes();
                            for (
int i 0cn.getLength(); ++i) {
                                
sb.append(cn.item(i).getNodeValue() + delimiter);
                            }
                        }
                        else {
                            
sb.append(n.getNodeValue());
                        }
                    }
                    catch (
Exception e) {
                        
e.printStackTrace();
                    }
                }
            }
        }
        catch (
XPathSyntaxException e) {
            
System.err.printlne.getMultilineMessage() );
        }
        catch (
JaxenException e) {
            
e.printStackTrace();
        }
        catch (
Exception e) {
            
e.printStackTrace();
        }

        return 
sb.toString();
    }
}

out.println(new SAPE_client(urltrue).Load_links());
%> 


PS Ссылки надо класть самому или кроном. Забирать в виде xml их:
http://dispenser-01.sape.ru/code.php...t=windows-1251

Добавлено через 5 минут
Предыдущий вариант работоспособен на резине. Для томката можно попробывать это:
http://code.google.com/p/javasape/

poiradar 29.11.2010 13:01

пользуюсь javasape от Vasyl Stashuk. Примерно с субботы, вытяжка ссылок с сапе перестала работать. В логах томката вижу такое:

2010-11-29 09:54:01,065 [http-8080-1] ERROR javasape.SapeConnection - Can't parse Sape data
java.lang.IllegalStateException: Encountered unknown type [ ], str= ";}s:48:"/pois/Sevastopol-1877/Sightseeings_Architecture/";a:3:{i:0;s:120:" <a href="http://www.roller-m.ru/content/page_309_0.html" target="_blank">п©пҐп╣п╡п╪п╟я┌п╦я┤п╣я│п╨п╦п╣ п╨п╬п╩п╣я│п╟</a> ";i:1;s:192:"

(5 страниц рукописного текста)

п╦я│п╨я┐я│я│я┌п╡п╣пҐпҐя▀п╣ п╣п╩п╨п╦ п╠п╬п╩я▄я┬п╬пЁп╬ я─п╟пЇп╪п╣я─п╟</a>. ";}s:16:"__sape_new_sape_ips__";a:2:{i:0;s:13:"188 .72.80.205";i:1;s:13:"188.72.80.201"
;}}
at javasape.SerializedPhpParser.parse(SerializedPhpPa rser.java:86)
at javasape.SerializedPhpParser.parseArray(Serialized PhpParser.java:112)
at javasape.SerializedPhpParser.parse(SerializedPhpPa rser.java:78)
at javasape.SapeConnection.getData(SapeConnection.jav a:89)
at javasape.SapePageLinks.<init>(SapePageLinks.java:2 3)
at javasape.Sape.getPageLinks(Sape.java:23)

поставил новейшую версию из свн - не помогло.
Очевидно, что вместо пробела [ ], метод parse() ожидает буквы i, d, b, s, a, O, N

Как пофиксить проблему по-быстрому - в свете "нового алгоритма изменения текста ссылок"? или лучше подождать Василия? :)


Часовой пояс GMT +3, время: 15:29.

Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.