بسم الله
السلام عليكم
اريد معرفة الفرق بين relative url و ال absolute url ؟
كيف يكون نكتب الurl في الخاصية action حينما اريد ان اربط السرفلت بفورم معين؟
وممكن تشرحوا لنا كيفية تحديد اليو ار ال بارتن في ملف الweb.xml
تحياتي
بسم الله
السلام عليكم
اريد معرفة الفرق بين relative url و ال absolute url ؟
كيف يكون نكتب الurl في الخاصية action حينما اريد ان اربط السرفلت بفورم معين؟
وممكن تشرحوا لنا كيفية تحديد اليو ار ال بارتن في ملف الweb.xml
تحياتي
تم تعديل هذه المشاركة بواسطة ηaseemЈava في 14 ديسمبر 2013 في 20:58
بالنسبة للسؤال الاول عن الفرق بين relative and absolute urls
تقدر تقول ان ال Relative Path مش فيه معلومات كفايه عن ال Location الى هو رايح ليه زى مثلا اسم الدومين او فى بعض الاحيان اسم ال Directory الى الفايل موجود فيه
مثلا, لو عندك Directory اسمه مثلا Cpanel وال فيه صحفتين الاولى اسمها index.html , والتانيه اسمها home.php
cpanel
index.html
home.html
وانت فى البروزر عندك واقف على صفحه اسمها
http://www.mydomian.com/cpanel/index.html
وعايز تروح لصفحه ال home.html عن طريق Href, ببساطه, هتستخدم Relative Url, زى ما هو موضح :-
<a href="home.html">home</a>
:: EXS
<a href="http://www.mydomain/cpanel/home.html">home</a>
EXS ::
<form action="hello" method="POST"> First Name: <input type="text" name="first_name"/> Last Name: <input type="text" name="last_name" /> <input type="submit" value="Submit" /> </form>
دى عباره عن form هتروح ل Servlet اسمه hello
خلينا نكريت السيرفلت بتاعنا
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package servlets;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
/**
*
* @author EG-WAFA
*/
public class HelloForm extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter printWriter = resp.getWriter();
String val = req.getParameter("last_name");
printWriter.write(val);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}الوقتى تقدر تستخدم Post or Get in form action
ببساطه جدا عندك طريقتين عشان تكريت ال Servlet url
اول طريق باستخدام java annotations عن طريق
//@WebServlet("/hello")
public class HelloForm extends HttpServlet {وتانى طريقه بما انك عايز تحدد ال
"URL Pattern in deployment descriptor "web.xml
فى ملف ال Web.xml هيبقى عندك خطوتين, اولها انك تكريت السيرفلت والتانيه انك توجهه "Mapping"
<servlet> <servlet-name>MyServletName</servlet-name> <servlet-class>myPackage.MyServletClass</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServletName</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
اتمنى اكون افادتك
تم تعديل هذه المشاركة بواسطة adel wafa في 15 ديسمبر 2013 في 19:23
جزاك الله خير وألف شكر
اليو أر ال باترن URL pattern له اكثر من شكل او طريقة لكتابته او لربطه بالسرفلت في ملف web.xml
مثلا ينتهي /* او ينتهي / بس او يبتدئ ب /.. ثم كتابة الاسم اللي حيظهر في المتصفح
اذا ممكن توضح ما مقصود بهذه الطرق
آيه عمل هذه الاوبجكتس التالية او نستخدمها في ماذا؟
PageContext و page و application و الconfig
قرأت عنهم لكن اريد ضرب امثلة لتوصلالفكرة بدون كود
تم تعديل هذه المشاركة بواسطة ηaseemЈava في 15 ديسمبر 2013 في 19:49
اول حاجه عن ال URL Pattern
A. Patter ends with /*, firstly
معناها ان اى Request بيحتوى على السيرفرلت نيم الى قبل /* , فعلى طول هيروح للسيرفلت دا يهاندل الريكوست, مش مفهومه طبعا بس خد بالك من المثال دا
اعمل فورم بسيطه جدا
<form action="hello/hello2/hello3/hello4" method="POST"> First Name: <input type="text" name="first_name"/> Last Name: <input type="text" name="last_name" /> <input type="submit" value="Submit" /> </form>
الفورم دى بتروح لسيرفلت واحد بس اسمه hello , يعنى انا ماعنديش اى سيرفلت اسمه hello2 او hello3 او hello4 دى مجرد اسامى انا ضفتها من عندى لتوضيح المثال
كريت سيرفلت hello
public class HelloForm extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter printWriter = resp.getWriter();
String val = req.getParameter("last_name");
printWriter.write(val);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}كدا كريت السيرفلت, عايز نخلى الفورم تنادى على السيرفلت , وما تنساش الفورم اكشن اسمه hello/hello2/hello3/hello4
فى web.xml
<servlet>
<servlet-name>myServletName</servlet-name>
<servlet-class>servlets.HelloForm</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServletName</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>وحاول انك تعمل ديبلوى وترن المثال , بالفعل مش هيشتغل وهيعطيك 404 error
المشكله هنا ان الفورم اكشن hello/hello2/hello3/hello4 رايحه لمكان مش موجود , وهنا تيجى وظيفه /*
كل الحكايه انك هتيجى فى ال URL Pattern وتضيف فى الاخر /* يعنى
<!--<url-pattern>/hello</url-pattern>--> <url-pattern>/hello/*</url-pattern>
فكل ريكوست جايه على URL يحتوى على سيرفلت اسمه hello , على طول هتروح لل hello Servlet
تانى نوع
ال URL Pattern الى بتبدء ب *.
معناها ان url بيتنتهى بامتداد محدد انت هتحدده, هيروح للسيرفلت الى واخد الامتداد دا , مثال بسيط جدا , الفورم الى فوق غير بس فيها ال Action
<form action="yaRab.abc" method="POST"> First Name: <input type="text" name="first_name"/> Last Name: <input type="text" name="last_name" /> <input type="submit" value="Submit" /> </form>
طبعا ما فيش عندى صفحه اسمها yaRab.abc ولا حتى فيه امتداد اسمه abc, انا هنا مش بهتم باسم الفايل انا بهتم بالامتداد لان دا الى هتعامل معاه فى الباترن
روح لصفحه ال Web.xml , وغير الباترن الى
<servlet> <servlet-name>myServletName</servlet-name> <servlet-class>servlets.HelloForm</servlet-class> </servlet> <servlet-mapping> <servlet-name>myServletName</servlet-name> <url-pattern>*.abc</url-pattern> </servlet-mapping>
اظن كدا اتفهمت شويه, السيرفلت الى اسمه HelloForm هيقبل اى ريكويست جايه من اى URL امتداده abc
وما فيش URL Pattern بينتهى ب /
وال URL pattern الى بتبدء ب / معناها ال
Default Servlet/Your Servlet
ببساطه غير الفورم action ل
<form action="faces/hello" method="POST"> First Name: <input type="text" name="first_name"/> <br /> Last Name: <input type="text" name="last_name" /> <input type="submit" value="Submit" /> </form>
وما تعدلش فى ال Web.xml
واعمل submit للفورم وخلى بالك من اسم اللينك الى فوق
ارجو انك تكون فهمتها, هيا مش صعبه بس ممله وصدقنى مش هتحتاجها الا نادر جدا
تم تعديل هذه المشاركة بواسطة adel wafa في 15 ديسمبر 2013 في 22:32
جزيل الشكر لك
ومنتظرين التكملة