forward กับ redirect สำหรับ web application

การเรียกหน้าเว็บใหม่ขึ้นมาแสดงนั้น ส่วนใหญ่เรามักจะเจอแบบ redirect กันมากกว่า แต่การ forward ก็เป็นอีกแบบหนึ่งที่มีอยู่ในจักรวาล(ฮ่าๆๆ) หลายคนอาจเข้าเว็บที่เปลี่ยนลิงค์ไปแล้ว แล้วเจอกับข้อความประมาณนี้
This Page is automatic redirecting ....
ก็คือหน้าเว็บที่เราเรียก ถูกบังคับให้เปลี่ยนไปหน้าอื่น แบบ redirect

Redirect ก็คือ การเรียกหน้าเว็บใหม่โดย path จะเปลี่ยนไปตามที่อยู่ใหม่ ซึ่งถ้าเรา copy แล้วเอาไป paste ใน tab ใหม่ก็จะสามารถแสดงผลลัพธ์ได้เหมือนเดิมทุกประการ

Forward คือ การเรียกหน้าเว็บใหม่โดย path จะไม่เปลี่ยนแปลง ซึ่งสิ่งที่แสดงอยู่ในช่อง address นั้น จะเป็น path เก่าของหน้าเดิม ถ้าเราต้องการเข้ามาหน้าเว็บนี้อีกครั้ง เราจะไม่สามารถเปิดหน้านี้ด้วย path ที่แสดงอยู่ได้ หรือถ้าเรา bookmark ไว้ เมื่อเราเปิดซ้ำ เราก็จะได้หน้าเว็บที่อยู่ตาม path นั้นๆแทนที่จะเป็นหน้าที่เราต้องการ

หน้าเว็บบางหน้า ผู้เขียนเว็บอาจต้องการป้องกันเพื่อไม่ให้สามารถเข้ามาดูหน้าเว็บนี้ได้โดยตรง ก็อาจบัง path ด้วยวิธีการ forward แต่ถึงอย่างไร ถ้ามีผู้รู้ที่อยู่ของหน้าเว็บก็สามารถเข้าได้อยู่ดี ทำให้ปัจจุบันมีการเขียน script เพื่อตรวจสอบพารามิเตอร์ด้วยว่าควรจะเปิดหน้านี้หรือไม่ ถ้ายังไม่มีการเปิดหน้าเว็บที่ผู้เขียนเว็บต้องการมาก่อน ก็อาจบังคับ redirect เพื่อย้อนกลับไปอะไรประมาณนี้ครับ


สำหรับส่วนของ Java Servlet ก็จะเขียนได้แบบนี้นะครับ

ตัวแปร request และ response เป็นตัวแปรของ HttpServletRequest และ HttpServletResponse ครับ ซึ่งถ้าเขียนด้วย NetBeans IDE ตอนเรา create new -> servlet มันจะ gen. source ส่วนนี้ให้เราเองครับ

Redirect : 
response.sendRedirect("newpage.html");
Forward :
getServletContext().getRequestDispatcher("newpage.html").forward(request,response);

ความแตกต่างของ redirect กับ forward ไม่ได้อยู่ที่ path อย่างเดียวนะครับ ยังมีเรื่องของ memory ที่จะส่งค่าไปมาระหว่างหน้าเว็บด้วย ซึ่งจะได้กล่าวต่อไปในโอกาสหน้าครับ ^^

Facebook Comment

Popular post of 7 days

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding