PDA

View Full Version : جاوا ولينكهاي صفحات وب و ارتباط با PhP



pouria_bayat
یک شنبه 20 تیر 1389, 11:59 صبح
سلام خدمت دوستان عزيز و برنامه نويسان گرامي.
با تشكر از سايت خيلي خوبتون كه يك مرجع خيلي خوب به شمار ميره.

عزيزان دوتا سوال داشتم از استادان گرامي البته اميدوارم سوالمرو در جاي مناسبي از فروم مطرح كرده باشم تا خداي نكرده باعث بي نظمي نشده باشم.


سوال اولم: من رشته كامپيوتر هستم و بنا به گستردگي برنامه نويسي جاوا قصد يادگيري ان را دارم كه سوالي برام پيش اومده اينكه ايا امكان گرفتن تمامي لينكهاي موجود در يك ادرس از صفحه وب وجود دارد؟
(به عنوان مثال فرض كنيد شما درخواستي را براي اجراي يك پردازش از طريق برنامه جاوا بهurl‌ مورد نظر پست مي كنيد كه اين پردازش ممكن است چند ساعت به طول انجامد در طول اين فرايند شما لينكي در صفحه url دريافت مي كنيد كه مربوط به فرايند است و در كنار ان دكمه cancel وجود دارد كه داراي id‌ متفاوت در هر زمان است لذا ميخواستم بدونم چه طور ميتونم اين فرايند رو كه در هر بار يك id‌ متفاوت رو ميده شناسايي كنم؟!!! )


سوال دومم: اين سوال از سوال اول خيلي اسونتر باشه به نظرم و اينكه چگونه مي تونم با Php و جاوا در يك برنامه ارتباط برقرار كنم؟


باز تشكر دارم از همه اساتيد و اميدوارم راهنمايي كنند اين بنده حقير رو.

billguess
یک شنبه 20 تیر 1389, 12:33 عصر
سلام خدمت دوستان عزيز و برنامه نويسان گرامي.
با تشكر از سايت خيلي خوبتون كه يك مرجع خيلي خوب به شمار ميره.

عزيزان دوتا سوال داشتم از استادان گرامي البته اميدوارم سوالمرو در جاي مناسبي از فروم مطرح كرده باشم تا خداي نكرده باعث بي نظمي نشده باشم.


سوال اولم: من رشته كامپيوتر هستم و بنا به گستردگي برنامه نويسي جاوا قصد يادگيري ان را دارم كه سوالي برام پيش اومده اينكه ايا امكان گرفتن تمامي لينكهاي موجود در يك ادرس از صفحه وب وجود دارد؟
(به عنوان مثال فرض كنيد شما درخواستي را براي اجراي يك پردازش از طريق برنامه جاوا بهurl‌ مورد نظر پست مي كنيد كه اين پردازش ممكن است چند ساعت به طول انجامد در طول اين فرايند شما لينكي در صفحه url دريافت مي كنيد كه مربوط به فرايند است و در كنار ان دكمه cancel وجود دارد كه داراي id‌ متفاوت در هر زمان است لذا ميخواستم بدونم چه طور ميتونم اين فرايند رو كه در هر بار يك id‌ متفاوت رو ميده شناسايي كنم؟!!! )


سوال دومم: اين سوال از سوال اول خيلي اسونتر باشه به نظرم و اينكه چگونه مي تونم با Php و جاوا در يك برنامه ارتباط برقرار كنم؟


باز تشكر دارم از همه اساتيد و اميدوارم راهنمايي كنند اين بنده حقير رو.
سلام
در مورد سوال اول چیزی که به ذهن من می رسه:مورد خواسته شده یک چیز انحصاری در مورد جاوا نیست اما باید بگم که همیشه امکان دسترسی مستقیم به یک urlخاص نیست چرا که طبق تنظیماتی می شه دسترسی را محدود کرد که این تنظیمات هم از طریق وب سرور می تونه اعمال بشه هم از طریق برنامه نویسی مثلاً شما نمی توانید به آدرس فرضی
www.....com/pdf/doc/5 (http://barnamenevis.org/forum/newreply.php?do=postreply&t=233209)
بطور ارسال مستقیم وارد بشید اگر در تنظیمات اجازه آن به شما داده نشود

در مورد سوال دوم :این ترکیب به راحتی امکان پذیر است اما تشخیص لزوم آن به عهده شماست

pouria_bayat
یک شنبه 20 تیر 1389, 18:46 عصر
سلام
در مورد سوال اول چیزی که به ذهن من می رسه:مورد خواسته شده یک چیز انحصاری در مورد جاوا نیست اما باید بگم که همیشه امکان دسترسی مستقیم به یک urlخاص نیست چرا که طبق تنظیماتی می شه دسترسی را محدود کرد که این تنظیمات هم از طریق وب سرور می تونه اعمال بشه هم از طریق برنامه نویسی مثلاً شما نمی توانید به آدرس فرضی
www.....com/pdf/doc/5 (http://barnamenevis.org/forum/newreply.php?do=postreply&t=233209)
بطور ارسال مستقیم وارد بشید اگر در تنظیمات اجازه آن به شما داده نشود

در مورد سوال دوم :این ترکیب به راحتی امکان پذیر است اما تشخیص لزوم آن به عهده شماست

سلام دوست عزيز با تشكر از رهنماييتون اما من درست متوجه نشدم.

billguess
یک شنبه 20 تیر 1389, 19:07 عصر
سلام دوست عزيز با تشكر از رهنماييتون اما من درست متوجه نشدم.
من از پست اولیه شما اینطور برداشت کردم که قصد پویش urlهای یک سایت را دارید و چیزی که به نظرم رسید این بود که همواره امکان پویش مستقیم این کار وجود ندارد و این مورد به طراحی آن سایت ومدیریت آدرس های آن برمیگردد مثلاً شما یک فرمی را پر میکنید و سپس ارسال می شود و نتیجه برمیگردد حال اگر بخواهید در نوبت بعد بدون پر کردن یک فرم به cgiآن مستقیم دسترسی داشته باشید همیشه امکان پذیر نیست اما اگر فقط به دنبال پیدا کردن سایر صفحاتی که یک صفحه به آن لینک دارد می گردید اعمال این کار از طریق روش هایی امکان پذیر است

در مورد بخش دوم هم عرض کردم بله یکی از ویژگی های دنیای وب استفاده و ترکیب تکنیک هاست که از آن جمله می توان PHPوجاوا را هم نام برد اگرچه معمولاً چنین کاری نمی کنند

cups_of_java
یک شنبه 20 تیر 1389, 19:42 عصر
دوست عزیز سوال اولتون که به نظر من گنگ بود. متوجه منظورتون نشدم. فکر نمی کنم دوستان بتونن راهنمایی درستی به شما بدن تا وقتی که سوالتون رو واضح تر نپرسید.
در مورد سوال دومتون هم اگر دو برنامه داشته باشید که یکی PHP باشه یکی جاوا، می تونید از طرق مختلفی بین اینها ارتباط برقرار کنید، هر راه ویژگی های خودش رو داره:

1) به صورت ارسال درخواست های HTTP (امروزه به این روش Restful می گن)
2) به صورت فراخوانی وب سرویس ها
3) به صورت Socket (این نوع ارتباط سطح پایین هست و اصولن پیشنهاد نمی شه)

pouria_bayat
یک شنبه 20 تیر 1389, 22:31 عصر
من از پست اولیه شما اینطور برداشت کردم که قصد پویش urlهای یک سایت را دارید و چیزی که به نظرم رسید این بود که همواره امکان پویش مستقیم این کار وجود ندارد و این مورد به طراحی آن سایت ومدیریت آدرس های آن برمیگردد مثلاً شما یک فرمی را پر میکنید و سپس ارسال می شود و نتیجه برمیگردد حال اگر بخواهید در نوبت بعد بدون پر کردن یک فرم به cgiآن مستقیم دسترسی داشته باشید همیشه امکان پذیر نیست اما اگر فقط به دنبال پیدا کردن سایر صفحاتی که یک صفحه به آن لینک دارد می گردید اعمال این کار از طریق روش هایی امکان پذیر است

در مورد بخش دوم هم عرض کردم بله یکی از ویژگی های دنیای وب استفاده و ترکیب تکنیک هاست که از آن جمله می توان PHPوجاوا را هم نام برد اگرچه معمولاً چنین کاری نمی کنند

ممنون كه جواب ميديد، از اينكه ميگيد قصد پويش url‌ها رو دارم درست اما چگونه؟
ببينيد بهتره كمي واضح تر توضيح بدم:
من به دليل مشگل كاري نمي تونم يك سري از كارهاي اينترنتي خودم رو انجام بدم لذا تصميم گرفتم يك برنامه بنويسم با جاوا كه عملياتي رو كه بهش ميدم رو انجام بده مثلا ورود اطلاعات و لغو ...

اما براي لغو يك سري عمليات در هر مرحله سايت مورد نظر يك ادرس متفاوت بهم ميده كه نمي تونم get يا Post كنم مثلا در دفعه اول كه يك پروسس رو انجام ميدم url اي به صورت تصوير زير ارائه ميشه :
http://satanicboot.persiangig.com/True/1.JPG

در دفعه دوم كه همون پروسس رو ميخواهم لغو كنم يك لينك ديگه بهم ميده مثل لينك موجود در تصوير زير:

http://satanicboot.persiangig.com/True/2.jpg

حالا موندم به برنامه چه جوري بفهمونم كه هر دفعه بايد چه لينكي رو در صورت تمايل به لغو سر يك زمان معين post كنه و لينك رو به سايت مورد نظر بفرسته تا پروسه لغو بشه.



دوست عزیز سوال اولتون که به نظر من گنگ بود. متوجه منظورتون نشدم. فکر نمی کنم دوستان بتونن راهنمایی درستی به شما بدن تا وقتی که سوالتون رو واضح تر نپرسید.
در مورد سوال دومتون هم اگر دو برنامه داشته باشید که یکی PHP باشه یکی جاوا، می تونید از طرق مختلفی بین اینها ارتباط برقرار کنید، هر راه ویژگی های خودش رو داره:

1) به صورت ارسال درخواست های HTTP (امروزه به این روش Restful می گن)
2) به صورت فراخوانی وب سرویس ها
3) به صورت Socket (این نوع ارتباط سطح پایین هست و اصولن پیشنهاد نمی شه)

ممنون ولي منظورم اين بود كه چه طور هر دو كد Php و جاوا رو در يك برنامه نه دو برنامه متفاوت به كار ببرم.
ايا ميشه كاري كرد كه اين دو برنامه توي يك سورس كد با هم به كار برند و اين دو برنامه همديگرو بشناسند.

ممنونم از دوستان كه كمك مي كنند اجرتون به خدا.
منتظر جوابتون هستم.

billguess
دوشنبه 21 تیر 1389, 01:37 صبح
ممنون كه جواب ميديد، از اينكه ميگيد قصد پويش url‌ها رو دارم درست اما چگونه؟
ببينيد بهتره كمي واضح تر توضيح بدم:
من به دليل مشگل كاري نمي تونم يك سري از كارهاي اينترنتي خودم رو انجام بدم لذا تصميم گرفتم يك برنامه بنويسم با جاوا كه عملياتي رو كه بهش ميدم رو انجام بده مثلا ورود اطلاعات و لغو ...

شما ابتدا یک پروسس رو فعال کردید حالا به فرض اینکه بتونید از طریق یک نرم افزار جانبی اون پروسس رو مجدداً فعال کنید و بدون توجه به نیت شما چند تا چیز به ذهن من می رسه که یکی از اون ها رو می نویسم:
بسته به طراحی وب سایت یا وب سایت های شما می توان از آنالیز صفحه یHTMLای که به سمت شما آمده کمک گرفت چون گویا به PHPو جاوا علاقه مندید من در ادامه دو تکه کد ابتدایی جهت بررسی صفحات HTMLبرای شما می گذارم


package Chapter1;

import java.io.*;
import java.net.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
import javax.swing.text.html.parser.*;




public class test5 {
public static void main(String [] args) {
Reader r;
//Mr.pouria_Bayat put your uri
String spec="http://www.yahoo.com/";

try {
if (spec.indexOf("://") > 0) {
URL u = new URL(spec);
Object content = u.getContent();
if (content instanceof InputStream) {
r = new InputStreamReader((InputStream)content);
}
else if (content instanceof Reader) {
r = (Reader)content;
}
else {
throw new Exception("Bad URL content type.");
}
}
else {
r = new FileReader(spec);
}

HTMLEditorKit.Parser parser;
System.out.println("About to parse " + spec);
parser = new ParserDelegator();
parser.parse(r, new HTMLParseLister(), true);
r.close();
}
catch (Exception e) {
System.err.println("Error: " + e);
e.printStackTrace(System.err);
}
}
}

/**
* شما می توانید این بخش را بهبود بخشید
*/
class HTMLParseLister extends HTMLEditorKit.ParserCallback
{
int indentSize = 0;

protected void indent() {
indentSize += 3;
}
protected void unIndent() {
indentSize -= 3; if (indentSize < 0) indentSize = 0;
}

protected void pIndent() {
for(int i = 0; i < indentSize; i++) System.out.print(" ");
}

public void handleText(char[] data, int pos) {
pIndent();
System.out.println("Text(" + data.length + " chars)");
}

public void handleComment(char[] data, int pos) {
pIndent();
System.out.println("Comment(" + data.length + " chars)");
}

public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) {
pIndent();
System.out.println("Tag start(<" + t.toString() + ">, " +
a.getAttributeCount() + " attrs)");
indent();
}

public void handleEndTag(HTML.Tag t, int pos) {
unIndent();
pIndent();
System.out.println("Tag end( }");
}
public void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos) {
pIndent();
System.out.println("Tag(<" + t.toString() + ">, " +
a.getAttributeCount() + " attrs)");
}

public void handleError(String errorMsg, int pos){
System.out.println("Parsing error: " + errorMsg + " at " + pos);
}
}

<?php
/*
* parseHtml.php
* My notation of variables:
* i_ = integer, ex: i_count
* a_ = array, a_html
* b_ = boolean,
* s_ = string
*
* What it does:
* - parses a html string and get the tags
* - exceptions: html tags like <br> <hr> </a>, etc
* - At the end, the array will look like this:
* ["IMG"][0]["SRC"] = "xxx"
* ["IMG"][1]["SRC"] = "xxx"
* ["IMG"][1]["ALT"] = "xxx"
* ["A"][0]["HREF"] = "xxx"
*
*/
function parseHtml( $s_str )
{
$i_indicatorL = 0;
$i_indicatorR = 0;
$s_tagOption = "";
$i_arrayCounter = 0;
$a_html = array();
// Search for a tag in string
while( is_int(($i_indicatorL=strpos($s_str,"<",$i_indicatorR))) ) {
// Get everything into tag...
$i_indicatorL++;
$i_indicatorR = strpos($s_str,">", $i_indicatorL);
$s_temp = substr($s_str, $i_indicatorL, ($i_indicatorR-$i_indicatorL) );
$a_tag = explode( ' ', $s_temp );
// Here we get the tag's name
list( ,$s_tagName,, ) = each($a_tag);
$s_tagName = strtoupper($s_tagName);
// Well, I am not interesting in <br>, </font> or anything else like that...
// So, this is false for tags without options.
$b_boolOptions = is_array(($s_tagOption=each($a_tag))) && $s_tagOption[1];
if( $b_boolOptions ) {
// Without this, we will mess up the array
$i_arrayCounter = (int)count($a_html[$s_tagName]);
// get the tag options, like src="htt://". Here, s_tagTokOption is 'src'
and s_tagTokValue is '"http://"'

do {
$s_tagTokOption = strtoupper(strtok($s_tagOption[1], "="));
$s_tagTokValue = trim(strtok("="));
$a_html[$s_tagName][$i_arrayCounter][$s_tagTokOption] =
$s_tagTokValue;
$b_boolOptions = is_array(($s_tagOption=each($a_tag))) &&
$s_tagOption[1];
} while( $b_boolOptions );
}
}
return $a_html;
}

?>
مطمئناً ساده ترین راه حل استفاده از این تکنیک نیست اما برای استفاده در کدنویسی بد نیست امیدوارم برای شما ایده ای به همراه داشته باشد
[
اگر با LibraryNekoXNI یا JTidy یا TagSoup آشنایی دارید کار با این تکنیک برای شما راحت تر هم میشود
]

pouria_bayat
دوشنبه 21 تیر 1389, 12:38 عصر
ممنون .
اموزشي در مورد جاوا هستش كه با صفحات وب كار كنه و از ابتدا توضيح بده يا كتابي در اين مورد؟
اگر اموزشي توي اين سايت يا سايت ديگه اي داريد ممنون ميشم لينكشو برام بزاريد

pouria_bayat
جمعه 25 تیر 1389, 21:12 عصر
دوستان خواهشن اگر كسي ميتونه راهنمايي كنه اموزشي در مورد جاوا هستش كه با صفحات وب كار كنه و از ابتدا توضيح بده يا كتابي در اين مورد؟
اگر اموزشي توي اين سايت يا سايت ديگه اي داريد ممنون ميشم لينكشو برام بزاريد

mazdadoost
شنبه 26 تیر 1389, 09:32 صبح
سلام :
در مورد سوال دوم :
quercus: php in java (http://quercus.caucho.com/)
ارتباط با Glassfish :
http://www.greatwhiteit.com/web/guest/technology-blog/-/blogs/how-to-php-enable-your-glassfish-application-server

pouria_bayat
شنبه 26 تیر 1389, 18:02 عصر
سلام :
در مورد سوال دوم :
quercus: php in java (http://quercus.caucho.com/)
ارتباط با Glassfish :
http://www.greatwhiteit.com/web/guest/technology-blog/-/blogs/how-to-php-enable-your-glassfish-application-server

ممنون بابت راهنمايتون خيلي كمك كرد راستي در مورد اموزش جاوا كه بتونم با صفحات وب كار كنم و يك وب اپليكشن (تقريبا) طراحي كنم هست مثل يك برنامه بات اگر هست لطفا لينكشو بزاريد يا لينكي كه ميدونيد واقعا ميتونه مفيد باشه.
ممنونم.