การเขียนโปรแกรม

JSP – คู่มือฉบับย่อสำหรับผู้เริ่มต้น

30 ตุลาคม 2564

สารบัญ

JavaServer Pages คืออะไร?

ดิ หน้าเซิร์ฟเวอร์ Java (JSP) ซึ่งเป็นเทคโนโลยีฝั่งเซิร์ฟเวอร์ช่วยให้นักพัฒนาพัฒนาหน้าเว็บซึ่งใช้งาน HTML , XML , สบู่ ฯลฯ เรียกอีกอย่างว่า หน้าเซิร์ฟเวอร์จาการ์ตา . ใน JSP นักพัฒนาสามารถฝังโค้ดจาวาในไฟล์ HTML ภาษา. มีแท็กที่ไม่ซ้ำกันใน JSP ซึ่งอนุญาตให้ใช้ Java รหัสใน HTML แท็กเหล่านี้ขึ้นต้นและลงท้ายด้วย '<%’ และ '%>' สัญลักษณ์ ตามลำดับ สำหรับการรัน JSP คุณต้องมีเว็บเซิร์ฟเวอร์ที่มีคอนเทนเนอร์เซิร์ฟเล็ต ตัวอย่างเช่น คุณสามารถใช้ Apache Tomcat หรือ ท่าเทียบเรือ .

JSP ถูกจำลองมาจาก เซิร์ฟเล็ต Java . Java servlet เรียกอีกอย่างว่า Jakarta Servlet ระหว่างรันไทม์ JSP จะถูกเปลี่ยนเป็นเซิร์ฟเล็ต ดังนั้นจึงเรียกว่าเซิร์ฟเล็ต โดยทั่วไป JSP จะเขียนในไฟล์ข้อความและฝังโค้ด HTML หรือ XHTML, การดำเนินการ JSP, องค์ประกอบ XML และคำสั่ง JSP JSP เล่นบทบาทของส่วนต่อประสานผู้ใช้ในเว็บแอปพลิเคชัน Java ออบเจ็กต์โดยนัยของ JSP ทั้งหมด เช่น คำขอ เซสชัน config ออก การตอบสนอง แอปพลิเคชัน หน้า และ pageContext สร้างขึ้นโดย เว็บคอนเทนเนอร์ .

คุณอาจเคยเจอแบบฟอร์มหน้าเว็บ วัตถุประสงค์ของแบบฟอร์มเหล่านี้คือการรวบรวมข้อมูลจากผู้ใช้ที่แตกต่างกัน ในแบบฟอร์มหน้าเว็บเหล่านี้ JSP ใช้สำหรับรับข้อมูลจากผู้ใช้เป็นอินพุต จัดเรียงข้อมูลเหล่านี้ในรูปแบบของฐานข้อมูล และสร้างหน้าเว็บ วัตถุประสงค์หลักของ JSP คือการนำเสนอประเภทเอกสาร XML และ HTML แต่ยังสามารถนำเสนอเอกสารในรูปแบบอื่นได้ตามที่ใช้ เอาท์พุตสตรีม . นามสกุลไฟล์สำหรับ JSP คือ .jsp, .jspx, .jspf และ the ประเภทสื่ออินเทอร์เน็ต คือ application/jsp

คุณสามารถแปลงไฟล์ HTML เป็นไฟล์ JSP ได้โดยการเปลี่ยนนามสกุลไฟล์ .html ถึง .jsp . หลังจากเปลี่ยนนามสกุล ให้ใช้แท็ก JSP เพื่อเพิ่มโค้ดจาวาในหน้า HTML ใช้ JPS นักพัฒนาสามารถสร้างไดนามิกเว็บ หน้าและหน้าเว็บที่ไม่ขึ้นกับแพลตฟอร์ม ให้เราดูคุณสมบัติที่สำคัญบางอย่างของ JSP

ตรวจสอบของเรา คู่มือการเชื่อมต่อคอมพิวเตอร์ของมนุษย์ ซึ่งจะดีสำหรับผู้เริ่มต้น

คุณสมบัติ JSP

JSP เป็นหนึ่งในวิธีที่สะดวกในการสร้างเนื้อหาเว็บแบบไดนามิก มีสาเหตุหลายประการที่นักพัฒนาเลือก JSP เพื่อสร้างหลายแอปพลิเคชัน ต่อไปนี้คือคุณลักษณะที่คัดเลือกมาบางส่วนของ Jakarta Server Pages

  • มีการดำเนินการและแท็กที่กำหนดเองใน JSP ดังนั้นความยาวโค้ดของ JSP จึงมีขนาดเล็ก
  • มันตรงไปตรงมาในการเขียนโค้ดใน JSP เนื่องจากมันฝังภาษาการเขียนโปรแกรมจาวาในหน้า HTML หรือ XML
  • JSP อนุญาตให้นักพัฒนารวบรวมข้อมูลและใส่ลงในฐานข้อมูลหรืออ่านหรือเขียนข้อมูลลงในฐานข้อมูล
  • เทคโนโลยีฝั่งเซิร์ฟเวอร์นี้มีความยืดหยุ่นสูง พกพาได้ และมีประสิทธิภาพ เนื่องจากไม่ขึ้นอยู่กับเบราว์เซอร์หรือเซิร์ฟเวอร์ใดๆ
  • ไม่มีข้อกำหนดสำหรับโค้ด JSP เพื่อคอมไพล์ซ้ำแล้วซ้ำอีก ไม่ขึ้นกับแพลตฟอร์มและสามารถรันบนคอนโซลใดก็ได้โดยไม่ต้องคอมไพล์ใหม่
  • JSP รวมเอาอ็อบเจ็กต์โดยนัย เซิร์ฟเล็ต และแท็กที่กำหนดเอง ดังนั้นนักพัฒนาจึงสร้างหน้าเว็บแบบโต้ตอบและเรียลไทม์
  • นอกจากนี้เรายังสามารถฝังภาษาสคริปต์อื่นๆ ในโปรแกรม JSP เช่น JavaScript, Perl, VBScript เป็นต้น โดยค่าเริ่มต้น Java เป็นภาษาสคริปต์ของ JSP

เหตุใดจึงต้องใช้ Java Server Pages

มีข้อดีหลายประการของการใช้ JSP พวกเขาทำหน้าที่คล้ายกับของ อินเทอร์เฟซเกตเวย์ทั่วไป (CGI) . เว็บเซิร์ฟเวอร์ดำเนินการโปรแกรมทั้งหมดที่สร้างหน้าเว็บแบบไดนามิกบนอินเทอร์เฟซเกตเวย์ทั่วไป เมื่อเราเปรียบเทียบ JSP กับ CGI แล้ว JSP จะแข็งแกร่งกว่าและให้ประโยชน์กับนักพัฒนามากกว่า ต่อไปนี้คือเหตุผลบางประการที่จะช่วยให้เข้าใจว่า JSP มีประโยชน์มากกว่า CGI อย่างไร

  • นักพัฒนาสามารถเพิ่ม Dynamic Elements ใน HTML โดยใช้ JSP หากพวกเขาใช้ CGI พวกเขาจำเป็นต้องสร้างไฟล์ CGI แยกต่างหากสำหรับองค์ประกอบแบบไดนามิก
  • JSP ถูกคอมไพล์และรันบนแพลตฟอร์มใดก็ได้ในภายหลัง ในทางกลับกัน CGI จะโหลดล่ามและตีความโค้ดทุกครั้งที่คุณขอหน้าเว็บ
  • คุณสามารถใช้ JSP และเซิร์ฟเล็ตร่วมกันเพื่อตรวจสอบตรรกะทางธุรกิจ เอ็นจิ้นเทมเพลตเซิร์ฟเล็ต Java รองรับโมเดลที่รวมกันของ JSP และเซิร์ฟเล็ต
  • JSP เป็นนามธรรมระดับสูงของ Java servlets เพจเหล่านี้ถูกสร้างขึ้นที่ระดับบนสุดของอินเตอร์เฟส Java servlet ดังนั้น พวกเขาจึงสามารถเข้าถึงอินเทอร์เฟซ Java หลักทั้งหมดได้ เช่น JAXP, JDBC, JNDI เป็นต้น
  • ในสถาปัตยกรรม MVC จะใช้ JSP เป็นเลเยอร์การดู
  • แอปพลิเคชันระดับองค์กรทั้งหมดทำงานบนแพลตฟอร์มที่เรียกว่า Java EE แพลตฟอร์ม Java EE รวม JSP

ข้อดีของ JSP

JSP มีประสิทธิภาพและความทนทานมากกว่าเทคโนโลยีอื่นๆ เช่น JavaScript, HTML แบบคงที่, Pure Servlets เป็นต้น เราจะเห็นว่า JSP มีข้อได้เปรียบเหนือเทคโนโลยีอื่นๆ อย่างไร

  • ข้อดีอย่างหนึ่งของ JSP ที่เป็นที่ต้องการมากที่สุดคือมันใช้ภาษาการเขียนโปรแกรม Java เพื่อเขียนส่วนไดนามิกของมัน ไม่ได้ใช้ Visual Basic ในการเขียนโค้ด ประการที่สองมันเข้ากันได้กับอื่นๆ ปฏิบัติการ ระบบต่างๆ
  • เมื่อใช้ JSP เราฝังโค้ด Java ลงในหน้า HTML ดังนั้นจึงง่ายต่อการแก้ไข HTML
  • มันดึงข้อมูลจากเว็บฟอร์มและเชื่อมต่อกับฐานข้อมูล
  • ในเว็บแอปพลิเคชัน JSP จะแยกเลเยอร์ตรรกะทางธุรกิจออกจากเลเยอร์การนำเสนอ
  • JSP ใช้ภาษาการเขียนโปรแกรม Java ดังนั้นจึงสนับสนุนแนวคิดแบบมัลติเธรดของ Java

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

จะตั้งค่าสภาพแวดล้อม JSP ได้อย่างไร

ทำไมคุณต้องตั้งค่าสภาพแวดล้อม JSP จำเป็นต้องแก้ไขสภาพแวดล้อม JSP บนเดสก์ท็อปหรือไม่ หากคุณต้องการสร้างเนื้อหาเว็บแบบไดนามิกหรือเว็บแอปพลิเคชันโดยใช้ JSP คุณต้องตั้งค่าสภาพแวดล้อม JSP สภาพแวดล้อมนี้ช่วยให้นักพัฒนาสามารถเขียนโปรแกรม JSP, คอมไพล์, รันโปรแกรมบนแพลตฟอร์มใดก็ได้ เราจะอธิบายการตั้งค่าสภาพแวดล้อม JSP ในขั้นตอนด้านล่าง:

การตั้งค่า Java Development Kit

ขั้นตอนแรกคือการแก้ไข Java Development Kit (JDK) บนเดสก์ท็อปของคุณ Java Development Kit มีความจำเป็นเนื่องจากเราฝังโค้ดจาวาในโค้ด HTML โดยใช้ JSP ดังนั้น สภาพแวดล้อม JSP จึงต้องแก้ไขสภาพแวดล้อม JDK ก่อน

ก่อนอื่น คุณต้องดาวน์โหลด Java Software Development Kit (SDK) จากทางการของ Oracle เว็บไซต์

หลังจากดาวน์โหลดแล้ว ให้เปิดไฟล์ .exe และติดตั้งและกำหนดค่าโดยใช้แนวทางที่กำหนด ต่อมา คุณต้องตั้งค่าตัวแปรสภาพแวดล้อมสองตัว เส้นทาง และ JAVA_HOME . คุณต้องตั้งค่า เส้นทาง ตัวแปรไปยังตำแหน่งของเดสก์ท็อปของ จาวา , เช่น., java_install_dir/bin, และ JAVA_HOME ตัวแปรไปยังตำแหน่งที่มี javac , เช่น., java_install_dir .

หากคุณมีระบบ Windows และติดตั้งไฟล์ SDK ที่ C:jdk1.5.0_20 ตำแหน่ง เพิ่มเส้นทางนี้ไปที่ C:autoexec.bat ไฟล์.

|_+_|

หากคุณติดตั้งไฟล์ SDK บนระบบ Windows NT, 2000 หรือ XP มีวิธีการตั้งค่าที่ต่างออกไป เส้นทาง และ JAVA_HOME ตัวแปรสภาพแวดล้อม คุณต้องคลิกขวาที่ คอมพิวเตอร์ของฉัน , เลือก คุณสมบัติ , ick on ขั้นสูง และไปที่ ตัวแปรสภาพแวดล้อม . ที่นี่คุณต้องตั้งค่า เส้นทาง ไปยังที่ตั้งของ จาวา , เช่น., Cjdk1.5.0_20in . หลังจากเปลี่ยน PATH แล้ว ให้คลิกที่ ตกลง ปุ่ม.

ตอนนี้เราจะรู้วิธีตั้งค่าตัวแปรสภาพแวดล้อม PATH และ JAVA_HOEM สำหรับระบบ UNIX เช่น Solaris ลินุกซ์ ฯลฯ สมมติว่าเราได้ติดตั้งไฟล์ SDK ใน /usr/local/jdk1.5.0_20 . คุณต้องเพิ่มสองคำสั่งด้านล่างใน .cshrc ไฟล์. พิจารณาว่าเราใช้ประโยชน์จากเปลือก C

|_+_|

หากคุณใช้เครื่องมือ Integrated Development Environment (IDE) เช่น Eclipse, Sun ONE Studio, JBuilder เป็นต้น ให้นำโปรแกรมจาวาตัวอย่าง คอมไพล์ และรันโปรแกรมดังกล่าวเพื่อตรวจสอบว่าเครื่องมือ IDE ของคุณรู้ว่าติดตั้ง Java ไว้ที่ใดในระบบของคุณ

หลังจากติดตั้ง Java Development Kit และตั้งค่าตัวแปรสภาพแวดล้อม PATH และ JAVA_HOME แล้ว ขั้นตอนต่อไปคือการตั้งค่าเว็บเซิร์ฟเวอร์

การตั้งค่า Tomcat Web Server

ปัจจุบันมีเว็บเซิร์ฟเวอร์หลายแห่งที่รองรับการพัฒนาเว็บแอปพลิเคชันแบบไดนามิกผ่าน JSP หรือ Servlets เราจะใช้เว็บเซิร์ฟเวอร์ Tomcat ซึ่งเป็นโอเพ่นซอร์สและใช้งานฟรี Tomcat เป็นชื่อย่อของ Apache Tomcat ทุกคนใช้งานได้ฟรีและเข้ากันได้กับเทคโนโลยีเซิร์ฟเวอร์หลายอย่าง เช่น JavaServer Pages, Servlets, WebSocket และ Java Expression Language รหัส Java ใน Tomcat ทำงานบน Java บริสุทธิ์ เว็บเซิร์ฟเวอร์ HTTP

มีส่วนประกอบหลายอย่างใน Apache Tomcat แจ้งให้เราทราบแต่ละองค์ประกอบและการใช้งาน

  • คอนเทนเนอร์เซิร์ฟเล็ตสำหรับ Tomcat คือ แคทเธอรีน ซึ่งใช้ข้อกำหนดของ Sun Microsystem สำหรับ JSP และเซิร์ฟเล็ต ชื่อผู้ใช้ รหัสผ่าน และบทบาทของผู้ใช้มีอยู่ในองค์ประกอบอาณาจักร
  • องค์ประกอบตัวเชื่อมต่อสำหรับ Tomcat คือ โคโยตี้ ซึ่งเข้ากันได้กับโปรโตคอล HTTP 1.1
  • เอ็นจิ้น JSP ใน Tomcat คือ แจสเปอร์ . เอ็นจิ้นนี้แยกวิเคราะห์ไฟล์ข้อความ JSP และคอมไพล์ลงในโค้ด Java
  • องค์ประกอบอื่นของ Tomcat คือ กลุ่ม ซึ่งจัดการเว็บแอปพลิเคชันขนาดใหญ่

นี่คือขั้นตอนในการดาวน์โหลดเว็บเซิร์ฟเวอร์ Apache Tomcat

  • ก่อนอื่น คุณต้องดาวน์โหลด Apache Tomcat จากทางการ เว็บไซต์

คุณต้องดาวน์โหลด Apache Tomcat เวอร์ชันล่าสุด

  • หลังจากดาวน์โหลดซอฟต์แวร์แล้ว ให้วางไฟล์ที่ดาวน์โหลดไว้ที่ตำแหน่งเฉพาะ ตัวอย่างเช่น หากคุณติดตั้ง Tomcat บนระบบ Windows ให้ค้นหาไฟล์ที่ดาวน์โหลดมาใน C:apache-tomcat-5.5.29 . สำหรับระบบ Linux หรือ Unix ให้วางไฟล์ใน /usr/local/apache-tomcat-5.5.29 .
  • หลังจากค้นหาไฟล์แล้ว ให้สร้าง CATALINA_HOME ตัวแปรสภาพแวดล้อม ตั้งค่าตัวแปรนี้เป็นตำแหน่งของไฟล์ tomcat ดังที่ได้กล่าวไว้ข้างต้น เช่น สำหรับระบบ Windows ให้ตั้งค่าตัวแปรเป็น C:apache-tomcat-5.5.29 และสำหรับระบบ Linux ให้ตั้งค่าตัวแปรเป็น /usr/local/apache-tomcat-5.5.29 .

การตั้งค่า Apache Tomcat เสร็จเรียบร้อยแล้ว หากคุณได้ติดตั้ง Tomcat บนระบบ Windows ให้ทำตามคำสั่งใดคำสั่งหนึ่งในสองคำสั่งเพื่อเริ่มแอปพลิเคชัน Tomcat

|_+_|

หรือ

|_+_|

หากแอปพลิเคชัน Tomcat ของคุณได้รับการติดตั้งบนระบบ Linux คุณสามารถพิมพ์คำสั่งใดๆ ด้านล่างเพื่อเริ่มแอปพลิเคชัน Tomcat

|_+_|

หรือ

|_+_|

เมื่อคุณเปิดแอปพลิเคชั่น Tomcat สำเร็จแล้ว ให้ไปที่ http://localhost:8080/ . คุณจะสังเกตเห็นแอปพลิเคชันเริ่มต้นทั้งหมดที่มีอยู่ใน Tomcat คุณสามารถดำเนินการกำหนดค่าและเรียกใช้แอปพลิเคชัน Tomcat โดยใช้เอกสารที่มีอยู่ในเว็บไซต์ทางการของ Tomcat

ตอนนี้ เราจะเห็นคำสั่งสำหรับปิดแอปพลิเคชัน Tomcat บนระบบ Windows และ Linux มีสองคำสั่งในการปิดแอปพลิเคชัน Tomcat บนระบบ Windows พวกเขามีดังนี้:

|_+_|

หรือ

|_+_|

สำหรับระบบ Linus คุณสามารถติดตามคำสั่งทั้งสองข้อใด ๆ สำหรับการปิดแอปพลิเคชัน Tomcat

|_+_|

หรือ

|_+_|

การตั้งค่า CLASSPATH

เราจะหารือเกี่ยวกับวิธีตั้งค่า CLASSPATH สำหรับระบบ Windows และ Linux หากคุณติดตั้ง Tomcat บนระบบ Windows ให้ทำตามบรรทัดโค้ดด้านล่างเพื่อตั้งค่า CLASSPATH

|_+_|

หากระบบ Windows ของคุณมีเวอร์ชัน NT, 2000 หรือ XP คุณต้องคลิกขวาที่ คอมพิวเตอร์ของฉัน , เลือก คุณสมบัติ , คลิกที่ ขั้นสูง และไปที่ ตัวแปรสภาพแวดล้อม . ที่นี่คุณต้องเปลี่ยนค่า CLASSPATH และคลิกที่ ตกลง ปุ่ม.

หากคุณได้ติดตั้ง Tomcat บนระบบ Linux ให้เพิ่มสองบรรทัดต่อไปนี้ในไฟล์ .cshrc พิจารณาว่าเราใช้เปลือก C

|_+_|

สถาปัตยกรรมของ JSP เป็นอย่างไร?

เราได้ตั้งค่าสภาพแวดล้อมสำหรับ JSP เราใช้ Apache Tomcat เพื่อรันเพจ JSP สำหรับการประมวลผลหน้า JSP มีเอ็นจิน JSP ที่เรียกว่าคอนเทนเนอร์ ใน Apache Tomcat มีเอ็นจิ้น JSP ในตัวที่เรียกว่า แจสเปอร์ . ดังนั้นการใช้ Jasper นักพัฒนาจึงสามารถสร้างเพจ JSP ได้ คอนเทนเนอร์และเว็บเซิร์ฟเวอร์ทำงานร่วมกันเพื่อจัดเตรียมสภาพแวดล้อมรันไทม์หรือ JSP และบริการอื่นๆ ทั้งหมดที่ JSP ต้องการ

JSP

ไดอะแกรมด้านบนแสดงตำแหน่งของคอนเทนเนอร์ JSP และไฟล์ JSP และในเว็บแอปพลิเคชันใดๆ ตอนนี้ เราจะอธิบายขั้นตอนการสร้างหน้าเว็บแบบไดนามิกโดยเว็บเซิร์ฟเวอร์โดยใช้ JSP

  • ประการแรก ไคลเอนต์หรือเบราว์เซอร์จากระบบ Windows, Linux หรือ macOS จะส่งคำขอ HTTP ไปยังเว็บเซิร์ฟเวอร์ผ่านอินเทอร์เน็ต ดังแสดงในแผนภาพด้านบน
  • เว็บเซิร์ฟเวอร์มีเอ็นจิน JSP ซึ่งเก็บไฟล์ JSP ทั้งหมดไว้ เมื่อได้รับคำขอ HTTP จากไคลเอนต์ เว็บเซิร์ฟเวอร์ระบุว่าคำขอนั้นเป็นของหน้า JSP หลังจากนั้น มันจะส่งคำขอนี้ไปยังเอ็นจิน JSP เว็บเซิร์ฟเวอร์ส่งคำขอ HTTP ไปยังหน้า JSP โดยใช้ไฟล์ที่มีนามสกุล .jsp หรือ .html หรือผ่าน URL
  • ตอนนี้ JSP ได้รับการร้องขอ HTTP ที่ส่งโดยไคลเอนต์ไปยังเว็บเซิร์ฟเวอร์ เรารู้ว่าคำขอ HTTP เป็นหน้า JSP ดังนั้น เอ็นจิ้นจะโหลดเพจนั้น ๆ จากดิสก์และแปลงเป็นเนื้อหาเซิร์ฟเล็ต กล่าวอีกนัยหนึ่งข้อความเทมเพลตทั้งหมดจะเปลี่ยนเป็นคำสั่ง println() ในทางกลับกัน การแปลงนี้ยังแปลงหน้า JSP ทั้งหมดเป็นโค้ด Java
  • เพจ JSP ที่ร้องขอจะถูกแปลงเป็นเซิร์ฟเล็ต ดังนั้น เซิร์ฟเล็ตจึงถูกคอมไพล์โดยเอ็นจิ้น JSP เป็นคลาสที่สามารถเรียกใช้งานได้ ต่อมา คำขอ HTTP จากไคลเอนต์จะถูกส่งไปยังเอ็นจินเซิร์ฟเล็ตโดยเอ็นจิน JSP
  • ทั้งเอ็นจิ้นเซิร์ฟเล็ตและ JSP เป็นส่วนหนึ่งของเว็บเซิร์ฟเวอร์ เอ็นจินเซิร์ฟเล็ตดำเนินการคลาสปฏิบัติการที่คอมไพล์โดยเอ็นจิน JSP และสร้างเอาต์พุตรูปแบบ HTML มีองค์ประกอบอื่นบนเว็บเซิร์ฟเวอร์ การตอบสนอง HTTP เอ็นจิ้นเซิร์ฟเล็ตส่งเอาต์พุต HTML ไปยังการตอบสนอง HTTP
  • สุดท้าย เว็บเซิร์ฟเวอร์ส่งการตอบสนอง HTTP ไปยังเบราว์เซอร์ผ่านทางอินเทอร์เน็ตในรูปแบบของเนื้อหา HTML แบบคงที่

ดังนั้น คุณสามารถเขียนเซิร์ฟเล็ตโดยใช้เพจ JSP ที่มีทักษะการเขียนโปรแกรม Java น้อยมาก จากการประมวลผล JSP ข้างต้น เราสามารถสรุปได้ว่ามันทำงานเหมือนกับของเซิร์ฟเล็ต ยกเว้นขั้นตอนการแปล เป็นไปตามสถาปัตยกรรม 3 ระดับ โดยมีเว็บเซิร์ฟเวอร์รองรับหน้า JSP ตอนนี้ เราจะก้าวไปสู่วัฏจักรชีวิตของ JSP ในที่นี้เราจะพูดถึงวิธีที่ไฟล์ JSP ผ่านขั้นตอนต่างๆ และวิธีที่ไฟล์มีอยู่ในคอนเทนเนอร์ของเว็บ

วงจรชีวิตของ JSP

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

วัฏจักรชีวิตของ JSP ประกอบด้วยเส้นทางหลักสี่เส้นทางดังนี้:

  1. รวบรวม
  2. การเริ่มต้น
  3. การดำเนินการ
  4. ทำความสะอาด

เส้นทางวงจรชีวิตของ JSP ทั้งสี่นี้คล้ายกับเส้นทางวงจรชีวิตของเซิร์ฟเล็ต แผนภาพด้านล่างแสดงขั้นตอนข้างต้น

JSP

ให้เราพูดถึงแต่ละช่วงของวงจรชีวิต JSP และคำอธิบายโดยละเอียด

    การรวบรวม JSP

เมื่อไคลเอนต์หรือเบราว์เซอร์ส่งคำร้องขอ HTTP สำหรับหน้า JSP เครื่องยนต์ JSP ที่อยู่ในเว็บเซิร์ฟเวอร์ตรวจสอบว่าหน้าร้องขอจะต้องคอมไพล์หรือไม่ เครื่องยนต์ JSP รวบรวมหน้าที่ร้องขอหากไม่ได้รวบรวมก่อนหน้านี้หรือไม่ได้รวบรวมหลังจากแก้ไขหน้า การรวบรวมหน้าเกี่ยวข้องกับสามขั้นตอนดังต่อไปนี้:

  • หน้าที่ร้องขอถูกแยกวิเคราะห์โดยกลไก JSP
  • จากนั้นจะแปลงหน้า JSP เป็นเซิร์ฟเล็ต
  • สุดท้าย เซิร์ฟเล็ตได้รับการคอมไพล์

เมื่อหน้า JSP ถูกแปลงเป็นเซิร์ฟเล็ต .jsp ไฟล์ถูกแปลงเป็น a .java ไฟล์. ในช่วงเวลาของการรวบรวม the .java ไฟล์จะถูกแปลงเป็น a .ระดับ ไฟล์.

    การเริ่มต้น JSP

หลังจากคอมไพล์เสร็จแล้ว กระบวนการโหลดคลาสจะเกิดขึ้น ซอร์ส JSP โหลดคลาสเซิร์ฟเล็ต และคลาสเซิร์ฟเล็ตนี้จะถูกโหลดลงในคอนเทนเนอร์ อินสแตนซ์ของคลาสเซิร์ฟเล็ตถูกสร้างขึ้นในคอนเทนเนอร์ หลังจากสร้างอินสแตนซ์ของคลาสเซิร์ฟเล็ตแล้ว jspInit () วิธีการได้รับการเรียกใช้ วิธีนี้เรียกใช้เพียงครั้งเดียวในวงจรชีวิตของ JSP สำหรับการเริ่มต้นเฉพาะ JSP คุณต้องแทนที่ jspInit () วิธีการดังต่อไปนี้:

|_+_|

เมื่อ jspInit () วิธีการสร้างอินสแตนซ์ คุณต้องสร้างการเชื่อมต่อฐานข้อมูลและสร้างตารางค้นหาในไฟล์

    การดำเนินการ JSP

หลังจาก jspInit () วิธีการถูกยกตัวอย่าง the _jspService() ใช้วิธีการ วิธีนี้ให้บริการคำขอทั้งหมดที่ส่งโดยไคลเอ็นต์ไปยังเว็บเซิร์ฟเวอร์จนกว่า JSP จะถูกทำลาย

ดิ _jspService() วิธีการเกี่ยวข้องกับสองพารามิเตอร์ที่แตกต่างกัน HttpServletRequest และ HttpServletResponse . วิธีนี้ถูกกำหนดดังนี้:

|_+_|

ดิ _jspService() วิธีการตอบสนองต่อคำขอทั้งหมดจากลูกค้า เมื่อใดก็ตามที่ลูกค้าออกคำขอ _jspService() เรียกวิธีการ นอกจากนี้ยังตอบสนองต่อคำขอ HTTP ทั้งเจ็ดเช่น รับ , ลบ , โพสต์ , ใส่ , ฯลฯ คุณสามารถแทนที่ _jspService() กระบวนการ.

    การล้างข้อมูล JSP:

ขั้นตอนสุดท้ายของวงจรชีวิตของ JSP คือการล้างข้อมูล โดยที่ JSP จะถูกทำลาย คอนเทนเนอร์ลบ JSP และไม่ใช้ วิธีนี้เหมือนกับวิธีทำลายเซิร์ฟเล็ต เมื่อคุณต้องการปิดไฟล์ใดๆ ในฐานข้อมูลหรือปิดการเชื่อมต่อฐานข้อมูล คุณสามารถแทนที่ jspDestroy() กระบวนการ. ไวยากรณ์ของเมธอด jspDestroy() มีดังนี้:

|_+_|

ไวยากรณ์ใน JSP

ในส่วนนี้ เราจะเรียนรู้ไวยากรณ์ขององค์ประกอบ JSP หลายอย่าง เช่น การกระทำ คำสั่ง ออบเจ็กต์โดยนัย ความคิดเห็น นิพจน์ ฯลฯ บทแนะนำส่วนนี้มีความสำคัญมากสำหรับมือใหม่ในโดเมน JSP ต่อไปนี้เป็นคำแนะนำโดยย่อเกี่ยวกับไวยากรณ์ JSP

    สคริปต์:

Scriptlet เป็นหนึ่งในองค์ประกอบ JSP ที่มีประสิทธิภาพ เราสามารถเก็บคำสั่ง Java วิธีการ ตัวแปร และนิพจน์ไว้ใน scriptlet นอกจากนี้ยังสามารถจัดเก็บองค์ประกอบของภาษาสคริปต์ใด ๆ ด้านล่างเป็นองค์ประกอบ Scriptlet's ไวยากรณ์:

ไวยากรณ์:

|_+_|

ไวยากรณ์ Scriptlet ด้านบนสามารถเขียนเป็น XML ที่เทียบเท่าได้ในรูปแบบต่อไปนี้:

|_+_|

แท็ก HTML ทั้งหมด องค์ประกอบ JSP และข้อความอื่นๆ จะถูกเขียนนอกแท็ก Scriptlet เสมอ เราจะเห็นตัวอย่างที่ชัดเจนของ JSP ในหน้า HTML

ตัวอย่าง:

|_+_|

ควรติดตั้งเซิร์ฟเวอร์ Tomcat บนเดสก์ท็อปของคุณ และควรตั้งค่าสภาพแวดล้อมสำหรับการเรียกใช้โปรแกรมนี้ ทำตามขั้นตอนการตั้งค่าสภาพแวดล้อมด้านบนเพื่อตั้งค่าสภาพแวดล้อมเซิร์ฟเวอร์ Tomcat เราจะบันทึกไฟล์ด้านบนเป็น firstjsp.jsp ใน C:apache-tomcat7.0.2webappsROOT โฟลเดอร์ หลังจากบันทึกไฟล์แล้ว ให้ไปที่เบราว์เซอร์และพิมพ์ URL http://localhost:8080/firstjsp.jsp รหัสข้างต้นจะแสดงคู่มือด่วน JSP และที่อยู่ IP ของระบบของคุณ

    ประกาศ

เมื่อคุณต้องการตัวแปรหรือเมธอดเพื่อใช้ในโค้ด Java การประกาศ JSP จะประกาศตัวแปรเหล่านั้น ก่อนที่คุณจะใช้ตัวแปรหรือวิธีการใดๆ ในโค้ด Java คุณต้องประกาศโดยใช้ JSP Declaration ไวยากรณ์ของการประกาศ JSP มีดังต่อไปนี้:

ไวยากรณ์:

|_+_|

ไวยากรณ์ข้างต้นเขียนในรูปแบบ XML ดังนี้:

|_+_|

ตอนนี้ เรามาดูตัวอย่างการประกาศ JSP

ตัวอย่าง:

|_+_|
    การแสดงออก

นิพจน์ใน JSP มีนิพจน์ของภาษาสคริปต์ นิพจน์เหล่านี้สามารถประเมิน แปลงเป็นสตริง และเพิ่มลงในไฟล์ JSP โดยที่นิพจน์ปรากฏขึ้น คุณสามารถใช้นิพจน์ JSP กับข้อความได้ เนื่องจากสามารถเปลี่ยนเป็นสตริงได้ ไม่จำเป็นต้องแท็กนิพจน์ JSP ภายในแท็ก HTML สิ่งสำคัญอย่างหนึ่งที่ต้องจำไว้ขณะเขียนนิพจน์ JSP คือพวกเขาไม่ใช้เครื่องหมายอัฒภาคเพื่อสิ้นสุดนิพจน์

ไวยากรณ์:

|_+_|

ไวยากรณ์ข้างต้นสามารถเขียนลงใน XML ที่เทียบเท่าได้ดังนี้:

|_+_|

ตัวอย่างต่อไปนี้จะช่วยให้คุณรับทราบวิธีใช้นิพจน์ JSP ใน HTML

|_+_|

คุณจะได้ผลลัพธ์ตามวันที่และเวลาปัจจุบันดังนี้:

|_+_|
    ความคิดเห็น

ความคิดเห็นเป็นคำสั่งที่ไม่ได้สำหรับการดำเนินการ มีไว้สำหรับโปรแกรมเมอร์และผู้อ่านเท่านั้น ใน JSP คอนเทนเนอร์จะละเว้นความคิดเห็น หากคุณต้องการซ่อนบางส่วนของโปรแกรม JSP คุณสามารถแสดงความคิดเห็นส่วนนั้นโดยใช้ความคิดเห็น JSP ต่อไปนี้เป็นไวยากรณ์สำหรับความคิดเห็น JSP

ไวยากรณ์:

|_+_|

เราจะดำเนินการตามตัวอย่างด้านล่างที่มีความคิดเห็น JSP อยู่

ตัวอย่าง:

|_+_|

ผลลัพธ์ของรหัสนี้ได้รับด้านล่าง

|_+_|

มีหลายวิธีใน JSP ในการระบุความคิดเห็น ด้านล่างนี้คือไวยากรณ์ความคิดเห็นที่แตกต่างกัน 6 แบบและการใช้งาน:

ข้อมูลข้างต้นเรียกว่าความคิดเห็น HTML และเบราว์เซอร์จะไม่สนใจอักขระหรือคำที่เขียนอยู่ภายในความคิดเห็น

    %>

หมายถึงตัวอักษรคงที่

    <\%

ความคิดเห็นข้างต้นยังหมายถึงตัวอักษรคงที่

ระบุเครื่องหมายคำพูดคู่ที่ใช้ในแอตทริบิวต์

    '

ระบุเครื่องหมายคำพูดเดียวที่ใช้ในแอตทริบิวต์

    คำสั่ง

มีสามคำสั่งใน JSP, , , และ . ดิ คำสั่งใช้สำหรับกำหนดแอตทริบิวต์ของหน้า เช่น หน้าแสดงข้อผิดพลาด ภาษาสคริปต์ และข้อกำหนดในการบัฟเฟอร์ คำสั่งอื่น ๆ รวมไฟล์เฉพาะที่ใช้ในระหว่างขั้นตอนการแปลของวงจรชีวิต JSP สุดท้ายนี้ คำสั่งใช้สำหรับประกาศไลบรารีแท็บและการดำเนินการที่กำหนดเองที่จำเป็นในหน้า JSP เมื่อใช้คำสั่ง JSP จะส่งผลต่อโครงสร้างของคลาสเซิร์ฟเล็ต นี่คือไวยากรณ์สำหรับคำสั่ง JSP

|_+_|
    การกระทำ

การดำเนินการคือฟังก์ชันที่กำหนดไว้แล้ว การดำเนินการ JSP ใช้สำหรับควบคุมพฤติกรรมของเอ็นจินเซิร์ฟเล็ต การดำเนินการเหล่านี้เพิ่มโครงสร้างในโค้ด XML เมื่อใช้การดำเนินการ JSP คุณสามารถแทรกไฟล์ใดๆ แบบไดนามิก สร้าง HTML สำหรับปลั๊กอิน Java หรือนำคอมโพเนนต์ JavaBeans กลับมาใช้ใหม่ได้ ด้านล่างนี้คือไวยากรณ์ของการดำเนินการ JSP

ไวยากรณ์:

|_+_|

เรากำลังแสดงรายการการดำเนินการ JSP ที่สำคัญและคำอธิบายด้านล่าง:

    jsp:useBean: การดำเนินการนี้สร้างอินสแตนซ์หรือระบุ JavaBeanjsp:getProperty: คุณสามารถใช้การดำเนินการ jsp:getProperty เพื่อเพิ่มคุณสมบัติ JavaBean ลงในเอาต์พุตjsp:setProperty: การดำเนินการนี้แก้ไขคุณสมบัติ JavaBeanjsp: รวม: เมื่อผู้ใช้ร้องขอหน้า การกระทำนี้จะเพิ่มไฟล์jsp:ปลั๊กอิน: สร้างแท็ก OBJECT หรือ EMBED และโค้ดเฉพาะเบราว์เซอร์สำหรับ Java Pluginjsp:แอตทริบิวต์: การดำเนินการนี้ใช้สำหรับกำหนดแอตทริบิวต์ขององค์ประกอบ XML ที่กำหนดแบบไดนามิกjsp:ไปข้างหน้า: การดำเนินการนี้จะนำผู้ใช้ไปยังหน้าใหม่jsp:องค์ประกอบ: เมื่อคุณต้องการกำหนดองค์ประกอบ XML แบบไดนามิก ให้ใช้การดำเนินการนี้jsp:ข้อความ: การดำเนินการนี้ช่วยให้ผู้ใช้สามารถเพิ่มข้อความเท็มเพลตไปยังเพจ JSPjsp:ร่างกาย: ใช้สำหรับกำหนดเนื้อหาขององค์ประกอบ XML ซึ่งถูกกำหนดแบบไดนามิก
    วัตถุโดยนัย

มีอ็อบเจ็กต์โดยนัยเก้ารายการใน JSP, คำขอ, การตอบสนอง, เซสชัน, ออก, pageContext, config, แอปพลิเคชัน, หน้า และข้อยกเว้น แจ้งให้เราทราบรายละเอียดเกี่ยวกับวัตถุโดยนัยแต่ละรายการที่นี่

    ขอ: วัตถุคำขอคือ HttpServletRequest ซึ่งเชื่อมโยงกับคำขอของลูกค้าการตอบสนอง: วัตถุตอบกลับคือ HttpServletResponse ซึ่งเชื่อมโยงกับการตอบสนองของเซิร์ฟเวอร์ไปยังไคลเอ็นต์การประชุม: ออบเจ็กต์นี้เกี่ยวข้องกับ HttpSession และเชื่อมโยงกับออบเจกต์คำขอของลูกค้าออก: ออบเจ็กต์โดยนัยอื่นออกไปแล้ว ใช้สำหรับส่งออกไปยังไคลเอนต์โดยใช้วัตถุ PrintWriterหน้าบริบท: ออบเจ็กต์โดยนัยนี้ระบุแอปพลิเคชันของคุณลักษณะเฉพาะเซิร์ฟเวอร์ ตัวอย่างหนึ่งของคุณลักษณะเฉพาะเซิร์ฟเวอร์คือ JspWritersconfig: อ็อบเจ็กต์นี้เกี่ยวข้องกับอ็อบเจ็กต์ ServletConfig ซึ่งใช้กับเพจ JSPแอปพลิเคชัน: ออบเจ็กต์ ServletContext ของ JSP ใช้กับบริบทของแอปพลิเคชันหน้าหนังสือ: ออบเจ็กต์โดยนัยของหน้าเรียกเมธอดทั้งหมด ซึ่งกำหนดโดยคลาสเซิร์ฟเล็ตข้อยกเว้น: JSP ที่กำหนดสามารถเข้าถึงข้อมูลข้อยกเว้นได้โดยใช้อ็อบเจ็กต์ Exception
    คำสั่งควบคุมการไหล

JSP ยังใช้คำสั่งควบคุมโฟลว์ คำสั่งการตัดสินใจ และลูป ในที่นี้เราจะมาดูกันว่าคำชี้แจงการตัดสินใจและลูปถูกใช้ในการเขียนโปรแกรม JSP อย่างไร

คำชี้แจงการตัดสินใจ

คำชี้แจงการตัดสินใจจะใช้ในการตัดสินใจเลือกที่มีอยู่ มีสองวิธีในการดำเนินการตามคำชี้แจงการตัดสินใจ หนึ่งใช้คำสั่ง if_else และอีกอันกำลังใช้คำสั่ง switch-case แต่ละเงื่อนไข if และ else อยู่ใน scriptlets แยกกัน ให้เราสังเกตตัวอย่างของคำสั่ง if_else ใน JSP

ตัวอย่าง:

|_+_|

ที่นี่ เราได้ประกาศ 'เดือน=3' และระบุเงื่อนไขในคำสั่ง if_else ดังนั้นผลลัพธ์จะเป็น:

|_+_|

ตอนนี้ เราจะนำคำสั่ง switch…case ไปใช้ โค้ดด้านล่างค่อนข้างแตกต่างจากโค้ดด้านบน เนื่องจากเงื่อนไขในโค้ดด้านล่างระบุไว้ใน Scriptlet ตัวเดียว

ตัวอย่าง:

|_+_|

เอาท์พุท:

|_+_|

งบวนรอบ

เราใช้ลูปในโปรแกรมเพื่อทำซ้ำคำสั่งเฉพาะตามจำนวนครั้งที่กำหนด JSP รองรับลูปที่แตกต่างกันสามประเภท for, while และ do…while เรามาดูตัวอย่างการวนรอบแต่ละประเภทด้านล่าง

สำหรับลูป:

|_+_|

เอาท์พุท:

|_+_|

ในขณะที่วนซ้ำ:

|_+_|

เอาท์พุท:

|_+_|
    ตัวดำเนินการใน JSP

ตัวดำเนินการทางตรรกะและเลขคณิตทั้งหมดที่สนับสนุนโดย Java ใช้ใน JSP ตัวดำเนินการใช้ในนิพจน์ JSP เพื่อประเมิน ตัวดำเนินการที่มีลำดับความสำคัญสูงสุดจะได้รับการประเมินก่อน และด้วยลำดับความสำคัญต่ำสุดจะได้รับการประเมินในท้ายที่สุด เราได้ระบุโอเปอเรเตอร์ JSP ทั้งหมดที่มีลำดับความสำคัญสูงสุดก่อน ลำดับความสำคัญสูงสุดอันดับสองในลำดับถัดไป และอื่นๆ

    Postfix: มีตัวดำเนินการ postfix สามตัว '()' '[]', และ '.'. ตัวดำเนินการเหล่านี้ทั้งหมดมีการเชื่อมโยงจากซ้ายไปขวาอูนารี: โอเปอเรเตอร์ Unary คือ '++', '–', '!' และ '~' มีสิทธิ์ในการเชื่อมโยงซ้ายคูณ: มีตัวดำเนินการคูณสามตัว '*', '/' และ '%' พวกเขาเหลือการเชื่อมโยงที่ถูกต้องสารเติมแต่ง: ตัวดำเนินการเติมคือ '+' และ '-' พวกเขายังมีการเชื่อมโยงจากซ้ายไปขวากะ: ตัวดำเนินการ Shift, '>>', '>>>' และ '<<’ have left to right associativity. เชิงสัมพันธ์: มีตัวดำเนินการเชิงสัมพันธ์สี่ตัวคือ '>', '=' และ '<=’. All of them have left to right associativity. ความเท่าเทียมกัน: ตัวดำเนินการความเท่าเทียมกันคือ '==' และ '!=' ซึ่งมีการเชื่อมโยงจากซ้ายไปขวาBitwise และ: The Bitwise และ Operator (&) มีการเชื่อมโยงไปถึงขวาที่ถูกต้องBitwise XOR: ตัวดำเนินการ XOR ระดับบิต (^) มีการเชื่อมโยงจากซ้ายไปขวาBitwise OR: ตัวดำเนินการ OR ระดับบิต (|) มีการเชื่อมโยงจากซ้ายไปขวาตรรกะและ: ตัวดำเนินการตรรกะ AND (&&) มีการเชื่อมโยงจากซ้ายไปขวาตรรกะOR: ตัวดำเนินการ OR แบบลอจิคัล (||) มีการเชื่อมโยงจากซ้ายไปขวาเงื่อนไข: ตัวดำเนินการตามเงื่อนไข (?:) มีการเชื่อมโยงจากขวาไปซ้ายงานที่มอบหมาย: มีตัวดำเนินการมอบหมายหลายตัว เช่น =, +=, -+, *=, %=, /=, >>=,<<=, &=, ^=, and |=. All these operators have the right to left associativity. ย่อหน้า: ตัวดำเนินการจุลภาค (‘) มีการเชื่อมโยงจากซ้ายไปขวา

JSP รองรับตัวอักษรหรือประเภทข้อมูลที่แตกต่างกันห้าแบบ ได้แก่ บูลีน จำนวนเต็ม จุดลอยตัว สตริง และ NULL ค่าตามตัวอักษรบูลีนจะส่งกลับผลลัพธ์ที่เป็นจริงหรือเท็จ จำนวนเต็มใช้สำหรับระบุตัวเลข และจุดทศนิยมใช้สำหรับการประกาศตัวเลขทศนิยมในโปรแกรม JSP ชนิดข้อมูลสตริงใน JSP แตกต่างจากภาษา Java ชนิดข้อมูล NULL ระบุค่า null

การดำเนินการ JSP

เราได้เห็นแล้วว่าการกระทำของ JSP คืออะไร เราได้เห็นการดำเนินการ JSP ทั้งหมดในบทสรุปข้างต้นแล้ว การดำเนินการเป็นเพียงฟังก์ชันที่ควบคุมพฤติกรรมของเอ็นจิน JSP ให้เราจำไวยากรณ์ของการกระทำ JSP

ไวยากรณ์:

|_+_|

การดำเนินการ JSP คือ jsp:include, jsp:useBean, jsp:setProperty, jsp:getProperty, jsp:forward, jsp:element, jsp:plugin, jsp:attribute, jsp:body และ jsp:text การดำเนินการ JSP ทั้งหมดนี้มีองค์ประกอบทั่วไปสองส่วน คือ ID และขอบเขต

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

The Action

การดำเนินการ useBean ใน JSP จะค้นหาวัตถุที่มีแอตทริบิวต์ ID และขอบเขตก่อน หากไม่พบวัตถุ การกระทำนี้จะสร้างวัตถุสำหรับแอตทริบิวต์ ID และขอบเขตเฉพาะนั้น ต่อไปนี้เป็นวิธีการโหลดคลาส useBean

|_+_|

หลังจากโหลดคลาส Bean คุณสามารถใช้การดำเนินการ JSP อีกสองรายการ jsp:setProperty และ jsp:getProperty . การดำเนินการเหล่านี้ใช้สำหรับแก้ไขและดึงคุณสมบัติของ bean การกระทำ useBean ใช้สามที่แตกต่างกัน คุณลักษณะ , ระดับ , พิมพ์ และ beanName ดิ ระดับ แอตทริบิวต์กำหนดชื่อแพ็คเกจของถั่ว คุณสามารถใช้ พิมพ์ องค์ประกอบสำหรับระบุประเภทตัวแปรสำหรับวัตถุที่เราอ้างถึง สุดท้าย beanName ให้ชื่อของ bean instantiate() วิธีการระบุชื่อถั่ว

The Action

การดำเนินการนี้ใช้สำหรับตั้งค่าคุณสมบัติของ Bean ข้อกำหนดเพียงอย่างเดียวสำหรับการตั้งค่าคุณสมบัติของถั่วคือต้องกำหนดถั่วก่อน มีสองวิธีในการใช้การกระทำดังต่อไปนี้:

วิธีแรกคือการใช้ภายนอกและหลังส่วนประกอบ

|_+_|

ในไวยากรณ์ข้างต้น แม้ว่าองค์ประกอบใหม่จะไม่ได้สร้างอินสแตนซ์หรือไม่พบสิ่งที่มีอยู่ การดำเนินการก็จะถูกดำเนินการ

อีกวิธีในการกำหนดการดำเนินการอยู่ภายในคอมโพเนนต์ jsp:useBean

|_+_|

ต่างจากวิธีแรกในการใช้ the วิธีที่สองดำเนินการเฉพาะเมื่อพบสิ่งที่มีอยู่หรือวิธีใหม่สร้างอินสแตนซ์

jsp:setProperty เกี่ยวข้องกับคุณลักษณะที่แตกต่างกันสี่ประการ ชื่อ , คุณสมบัติ , ค่า , และ หยุด . ดิ ชื่อ แอตทริบิวต์กำหนดชื่อให้กับถั่วที่จะตั้งค่าคุณสมบัติ คุณลักษณะอื่น คุณสมบัติ กำหนดคุณสมบัติ ดิ ค่า เป็นค่าที่กำหนดให้กับคุณสมบัติและ หยุด คุณลักษณะกำหนดชื่อของพารามิเตอร์ที่ได้รับโดยคุณสมบัติ

The Action

เราเห็นว่าการกระทำ jsp:setProperty ตั้งค่าของคุณสมบัติ ที่นี่การดำเนินการดึงมูลค่าทรัพย์สิน หลังจากดึงค่าแล้ว ค่าจะเปลี่ยนเป็นสตริงและเพิ่มลงในผลลัพธ์

การดำเนินการมีเพียงสองแอตทริบิวต์ ชื่อ และคุณสมบัติ ดิ ชื่อ คุณลักษณะกำหนดชื่อถั่วที่มีคุณสมบัติเฉพาะและ คุณสมบัติ คุณลักษณะกำหนดชื่อของคุณสมบัติของถั่ว ด้านล่างเป็นไวยากรณ์ของการกระทำ:

|_+_|

ให้เราสังเกตตัวอย่างหนึ่งที่มี ตัวอย่าง ถั่ว. บันทึกไฟล์ด้านล่างเป็น ExampleBean.java .

|_+_|

หลังจากเขียนโค้ดนี้ใน ExampleBean.java ไฟล์, คอมไพล์มันเพื่อสร้าง ตัวอย่างBean.class ไฟล์. ตอนนี้คัดลอก ตัวอย่างBean.class ไฟล์ไปที่ C:apache-tomcat-7.0.2webappsWEB-INFclassesaction โฟลเดอร์ ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า คลาสพาธ ตัวแปร.

ตอนนี้คุณต้องสร้างไฟล์ main.jsp และเขียนโค้ดด้านล่างลงไป

|_+_|

เอาท์พุท:

|_+_|

The Action

เมื่อคุณต้องการแทรกอิลิเมนต์ Java ลงในโปรแกรม JSP การดำเนินการจะถูกใช้ การดำเนินการนี้ยังระบุประเภทเบราว์เซอร์และเพิ่ม หรือ ลงในโปรแกรม JSP สมมติว่าคุณต้องการคอมโพเนนต์ Java ซึ่งไม่มีปลั๊กอิน การดำเนินการนี้จะดาวน์โหลดปลั๊กอินที่จำเป็นในการรันคอมโพเนนต์ Java เช่น Applet หรือ Bean มีหลายแอตทริบิวต์ในการดำเนินการของปลั๊กอิน ซึ่งสอดคล้องกับแท็ก HTML

ด้านล่างนี้คือตัวอย่างการดำเนินการอย่างตรงไปตรงมา

|_+_|

ในโค้ดข้างต้น เราสามารถสังเกตองค์ประกอบใหม่ . เมื่อส่วนประกอบล้มเหลว องค์ประกอบนี้จะส่งสตริงข้อผิดพลาดไปยังผู้ใช้

การกระทำเช่น , , และ กำหนดองค์ประกอบ XML อิลิเมนต์ XML ทั้งหมดถูกสร้างขึ้นในขณะทำงาน ไม่ใช่ในเวลาคอมไพล์ นั่นคือ องค์ประกอบเหล่านี้ถูกสร้างขึ้นแบบไดนามิก

The Action

เมื่อคุณต้องการยุติการกระทำของเพจปัจจุบันและส่งต่อไปยังแหล่งข้อมูลอื่น คุณสามารถใช้ หนังบู๊. ไวยากรณ์ของการกระทำนี้ได้รับดังต่อไปนี้:

|_+_|

แอตทริบิวต์เดียวเท่านั้นที่เกี่ยวข้องกับการกระทำ หน้าหนังสือ . หน้านี้ต้องมี URL สัมพัทธ์ของทรัพยากรที่มีการโอนการดำเนินการ รีซอร์สสามารถเป็นเพจ JSP, Java Servlet และเพจสแตติก

ตอนนี้ เราจะมาดูตัวอย่างง่ายๆ ของการดำเนินการ เราจะสร้างสองไฟล์ date.jsp และ main.jsp . ไฟล์ Date.jsp จะแสดงวันที่ปัจจุบันและไฟล์ main.jsp มีการกระทำ

ไฟล์ date.jsp

|_+_|

ไฟล์ main.jsp

|_+_|

คุณต้องบันทึกทั้งสองไฟล์ในไดเร็กทอรี ROOT ตอนนี้เราจะเข้าถึงไฟล์ main.jsp เพื่อดูผลลัพธ์ จะไม่แสดงเนื้อหาจากไฟล์ main.jsp แต่จะแสดงเนื้อหาจากไฟล์ date.jsp เนื่องจากเป็นไฟล์ที่ส่งต่อ

เอาท์พุท:

|_+_|

The Action

เมื่อใช้การกระทำ เราสามารถเขียนเทมเพลตข้อความหรือเอกสารในหน้า JSP ด้านล่างนี้คือไวยากรณ์ของการดำเนินการ:

|_+_|

ในที่นี้ เทมเพลตมีเฉพาะข้อความและนิพจน์ EL ไม่สามารถมีองค์ประกอบอื่นในเทมเพลตได้ ในไฟล์ XML อย่าใช้นิพจน์เป็น ${อะไรก็ได้ > 0} เนื่องจากป้ายนี้ไม่ได้รับอนุญาตหรือผิดกฎหมาย คุณสามารถใช้ .แทนได้ ${อะไรก็ตาม gt 0} .

คำสั่ง JSP

ในส่วนของ syntax เราได้เห็นแล้วว่าไดเร็กทอรีใน JSP คืออะไร ที่นี่ เราจะเรียนรู้ไดเร็กทอรี JSP โดยละเอียด คำสั่งมีความสำคัญใน JSP เนื่องจากคำสั่งและควบคุมคอนเทนเนอร์ JSP สำหรับการจัดการและควบคุมองค์ประกอบการประมวลผล JSP เฉพาะ โครงสร้างทั้งหมดของคลาสเซิร์ฟเล็ตได้รับผลกระทบเนื่องจากคำสั่ง JSP

ไวยากรณ์:

|_+_|

คุณลักษณะในคำสั่งมีรูปแบบคีย์-ค่า คำสั่งสามารถมีแอตทริบิวต์ได้หลายรายการ และแต่ละรายการคั่นด้วยเครื่องหมายจุลภาค ในไวยากรณ์ข้างต้น เราสามารถสังเกตช่องว่างระหว่าง '<%@’ และชื่อคำสั่งและค่าและ '%>.' ช่องว่างเหล่านี้เป็นทางเลือก ไม่ต้องกังวลถ้าคุณไม่เพิ่มช่องว่างระหว่างพวกเขา เราได้เห็นข้างต้นว่ามีแท็กคำสั่งสามแท็ก , , และ . ให้เราพูดถึงแต่ละแท็ก directive เหล่านี้โดยละเอียด

คำสั่งเพจ

คำสั่ง Page ให้คำแนะนำไปยังหน้าปัจจุบันของคอนเทนเนอร์ คุณสามารถรวมคำสั่งเพจได้ทุกที่ในโปรแกรม JSP ของคุณ โดยทั่วไป คำสั่งเพจจะใช้ที่ด้านบนสุดของเพจ JSP ไวยากรณ์ของคำสั่งหน้าคือ:

|_+_|

ไวยากรณ์ข้างต้นเขียนในรูปแบบ XML ตามที่ระบุด้านล่าง:

|_+_|

มีแอตทริบิวต์ 13 รายการที่เกี่ยวข้องกับคำสั่งหน้าดังที่อธิบายไว้ด้านล่าง

    ออโต้ฟลัช: คุณลักษณะนี้ควบคุมพฤติกรรมของบัฟเฟอร์เอาท์พุตเซิร์ฟเล็ตerrorPage: errorPage แสดง URL ของ JSP อื่น ซึ่งแสดงข้อยกเว้นรันไทม์ Java ที่ไม่ได้ตรวจสอบยืดออก: เซิร์ฟเล็ตที่สร้างขึ้นควรขยายซุปเปอร์คลาสที่ระบุกันชน: แอตทริบิวต์บัฟเฟอร์กำหนดรูปแบบการบัฟเฟอร์ของสตรีมเอาต์พุตชนิดของเนื้อหา: คุณลักษณะนี้กำหนดรูปแบบสำหรับการเข้ารหัสอักขระisErrorPage: มันแสดงให้เห็นว่าหน้า JSP ปัจจุบันเป็น URL ที่กำหนดโดยแอตทริบิวต์ errorpage ของหน้า JSP อื่น ๆข้อมูล: ระบุสตริง ซึ่งสามารถเข้าถึงได้โดยเมธอด getServletInfo()ภาษา: คุณลักษณะนี้ระบุภาษาการเขียนโปรแกรมที่ใช้ในหน้า JSPisELIgnored: ระบุว่านิพจน์ EL ในหน้า JSP จะถูกละเว้นหรือไม่นำเข้า: คำสั่งนี้ระบุแพ็คเกจและคลาสทั้งหมดที่จำเป็นในการเพิ่มใน JSP ใน Java คำสั่งนำเข้า Java ระบุคลาสและแพ็คเกจทั้งหมดที่จำเป็นในการรวมในโปรแกรม JavaisThreadSafe: แอ็ตทริบิวต์นี้ระบุโมเดลเธรดของเซิร์ฟเล็ตการประชุม: แอตทริบิวต์ session ตรวจสอบว่าหน้า JSP มีส่วนร่วมในเซสชัน HTTP หรือไม่isScriptingEnabled: อิลิเมนต์นี้ระบุว่าจะใช้อิลิเมนต์สคริปต์ในหน้า JSP หรือไม่

คำสั่งรวม

ในระหว่างขั้นตอนการแปล รวม คำสั่งใช้เพื่อรวมไฟล์ในหน้า JSP คำสั่งนี้ยังกำหนดคอนเทนเนอร์เกี่ยวกับการรวมไฟล์ภายนอกทั้งหมดเข้ากับเพจ JSP เนื่องจากคำสั่งเพจถูกรวมไว้ที่ด้านบนสุดของเพจ JSP เท่านั้น จึงสามารถใช้คำสั่ง include ได้ทุกที่บนเพจ

ไวยากรณ์:

|_+_|

ไวยากรณ์ข้างต้นเขียนในรูปแบบ XML ดังนี้:

|_+_|

ในที่นี้ ชื่อไฟล์คือ URL สัมพัทธ์ หากคุณไม่ได้กำหนดเส้นทางของไฟล์ คอมไพเลอร์จะถือว่าไฟล์ของคุณอยู่ที่ตำแหน่งของ JSP

ไดเรกทอรี taglib

ประเภทไดเร็กทอรีสุดท้ายคือ taglib . ไดเร็กทอรีนี้ให้ข้อมูลมากมายเกี่ยวกับหน้า JSP เช่น ชุดแท็กที่กำหนดเองที่ใช้ ตำแหน่งของไลบรารี และการค้นหาแท็กที่กำหนดเองจากหน้า JSP ด้านล่างนี้คือไวยากรณ์ของไดเร็กทอรี taglib

|_+_|

ไวยากรณ์ข้างต้นสามารถเขียนในรูปแบบ XML ได้ดังนี้:

|_+_|

คุณลักษณะ เกลียด ระบุตำแหน่งที่คอนเทนเนอร์สามารถเข้าใจและ คำนำหน้า คุณลักษณะบอกคอนเทนเนอร์เกี่ยวกับองค์ประกอบของการดำเนินการที่กำหนดเอง

JSP Implicit Objects

ออบเจ็กต์โดยนัย JSP เป็นอ็อบเจ็กต์ Java คอนเทนเนอร์ JSP อนุญาตให้นักพัฒนาใช้อ็อบเจ็กต์โดยนัยเหล่านี้ในทุกเพจ JSP โดยไม่ต้องประกาศอย่างชัดแจ้ง วัตถุเหล่านี้เรียกอีกอย่างว่า ตัวแปรที่กำหนดไว้ล่วงหน้า . มีอ็อบเจ็กต์โดยนัยที่แตกต่างกันเก้ารายการ: คำขอ การตอบสนอง การออก เซสชัน แอปพลิเคชัน หน้า บริบทเพจ การกำหนดค่า และข้อยกเว้น

คำขอ Object

ดิ javax.servlet.http.HttpServletRequest วัตถุสร้างอินสแตนซ์ที่เรียกว่า ขอ วัตถุ. เมื่อไคลเอนต์หรือผู้ใช้ร้องขอหน้าใดหน้าหนึ่ง กลไก JSP จะสร้างวัตถุใหม่ที่แสดงถึงคำขอของลูกค้า ดิ ขอ ออบเจ็กต์มีหลายวิธีในการดึงข้อมูลส่วนหัว HTTP เช่น วิธี HTTP คุกกี้ ฯลฯ

วัตถุตอบกลับ

ดิ javax.servlet.http.HttpServletResponse วัตถุสร้างอินสแตนซ์ที่เรียกว่า การตอบสนอง วัตถุ. เนื่องจากเอ็นจิน JSP สร้างอ็อบเจ็กต์ใหม่ทุกครั้งที่ผู้ใช้ร้องขอเพจใดเพจหนึ่ง มันจึงสร้างอ็อบเจ็กต์ที่แสดงการตอบกลับด้วย เมื่อใช้อ็อบเจ็กต์การตอบกลับ คุณสามารถรวมคุกกี้ใหม่ลงในโปรแกรม JSP ได้ เช่น รหัสสถานะ HTTP ตราประทับ ฯลฯ

วัตถุที่ออก

ดิ javax.servlet.jsp.JspWriter วัตถุสร้างอินสแตนซ์ที่เรียกว่า ออก วัตถุ. เครื่องยนต์ JSP สามารถเพิ่มเนื้อหาในการตอบสนองที่ลูกค้าร้องขอได้ ดิ JspWriter ออบเจ็กต์มีเมธอดเดียวกันเกือบทั้งหมดใน java.io.PrintWriter ระดับ. มีวิธีการเพิ่มเติมบางอย่างใน JspWriter ออบเจ็กต์ที่ใช้สำหรับการบัฟเฟอร์และพ่น IOException

แอพลิเคชันObject

ดิ javax.servlet.ServletContext สร้างตัวอย่างที่เรียกว่า an แอปพลิเคชัน วัตถุซึ่งทำหน้าที่เป็นเสื้อคลุมสำหรับ ServletContext วัตถุ. อ็อบเจ็กต์นี้แสดงถึงเพจ JSP เมื่อหน้า JSP ถูกเตรียมใช้งาน วัตถุแอปพลิเคชันจะถูกสร้างขึ้น ออบเจ็กต์นี้ถูกลบ เนื่องจากเพจ JSP ถูกทำลายโดยใช้เมธอด jspDestroy()

วัตถุเซสชัน

ดิ javax.servlet.http.HttpSession สร้างตัวอย่างที่เรียกว่า การประชุม วัตถุ. ออบเจ็กต์นี้ทำงานเหมือนกับที่ทำงานใน Java Servlets วัตถุประสงค์หลักของวัตถุเซสชันคือการติดตามเซสชันระหว่างคำขอของลูกค้า

ข้อยกเว้น Object

wrapper ที่มีข้อยกเว้นจากหน้า JSP ก่อนหน้านี้เรียกว่าอ็อบเจ็กต์ข้อยกเว้น เมื่อเกิดข้อผิดพลาดขึ้น วัตถุข้อยกเว้นจะถูกใช้เพื่อจัดการ

หน้าวัตถุ

ออบเจ็กต์เพจให้การอ้างอิงถึงอินสแตนซ์ของเพจ มันแสดงถึงหน้า JSP ทั้งหมด ' นี้' วัตถุและวัตถุหน้าเป็นคำพ้องความหมายซึ่งกันและกัน

วัตถุ pageContext

ดิ javax.servlet.jsp.PageContext สร้างอินสแตนซ์ที่เรียกว่า หน้าบริบท วัตถุ. ชอบ หน้าหนังสือ วัตถุ หน้าบริบท ออบเจ็กต์ยังแสดงถึงหน้า JSP ที่สมบูรณ์อีกด้วย การใช้แอตทริบิวต์ของวัตถุ pageContext เราสามารถรับวัตถุโดยนัยอื่น ๆ เช่น แอปพลิเคชัน , config , การประชุม , และ ออก . ออบเจ็กต์นี้ยังเก็บข้อมูล เช่น ขอบเขตหน้า errorPageURL และข้อมูลการบัฟเฟอร์ มี 40 วิธีที่สนับสนุนโดยวัตถุ pageContext

config Object

ดิ javax.servlet.ServletConfig สร้างตัวอย่างที่เรียกว่า config วัตถุ. วัตถุนี้ทำหน้าที่เป็นเสื้อคลุมสำหรับ ServletConfig วัตถุ. ผู้ใช้สามารถใช้อ็อบเจ็กต์นี้เพื่อเข้าถึงพารามิเตอร์การกำหนดค่าเริ่มต้นของเซิร์ฟเล็ตหรือเอ็นจิน JSP เมธอดด้านล่างเป็นวิธีที่ใช้ในหน้า JSP โดยใช้อ็อบเจ็กต์ config

|_+_|

คำขอไคลเอ็นต์ JSP

เว็บเซิร์ฟเวอร์ได้รับข้อมูลมากมายเมื่อเบราว์เซอร์หรือไคลเอนต์ร้องขอหน้าเว็บบางหน้า ไม่สามารถใช้ข้อมูลนี้ได้โดยตรง เนื่องจากจะเดินทางผ่านส่วนหัวของคำขอ HTTP ส่วนหัว HTTP มีองค์ประกอบหลายอย่างที่เก็บข้อมูลเมื่อเบราว์เซอร์ร้องขอหน้าเว็บ องค์ประกอบเหล่านี้ ได้แก่ การยอมรับ, ชุดอักขระที่ยอมรับ, การเข้ารหัสที่ยอมรับ, ภาษาที่ยอมรับ, การเชื่อมต่อ, การอนุญาต, คุกกี้, ความยาวของเนื้อหา, หาก-แก้ไข-ตั้งแต่, โฮสต์, ผู้อ้างอิง, หาก-ไม่ได้แก้ไข-ตั้งแต่ และตัวแทนผู้ใช้

วัตถุ HTTPServletRequest

ออบเจ็กต์ javax.servlet.http.HttpServletRequest สร้างอินสแตนซ์ที่เรียกว่าอ็อบเจ็กต์คำขอ เมื่อใดก็ตามที่ผู้ใช้ร้องขอหน้าใดหน้าหนึ่ง เอ็นจิ้น JSP จะสร้างอ็อบเจ็กต์ใหม่ วัตถุประสงค์หลักของออบเจ็กต์คำขอคือการดึงข้อมูล HTTP เช่น ข้อมูล วิธี HTTP คุกกี้ ฯลฯ ด้านล่างนี้คือวิธีการบางอย่างที่อ่านข้อมูลส่วนหัว HTTP จากโปรแกรม JSP

    การแจงนับ getAttributeNames(): เมธอดนี้ส่งผลให้เกิดการแจงนับ ซึ่งมีชื่อแอตทริบิวต์ที่สามารถใช้ได้สำหรับคำขอนี้คุกกี้[] getCookies(): เมื่อไคลเอนต์ส่งคำขอ จะมีวัตถุคุกกี้ ดังนั้น เมธอดนี้จะสร้างอาร์เรย์ ซึ่งเก็บอ็อบเจ็กต์คุกกี้ทั้งหมดเหล่านี้การแจงนับ getParameterNames(): เมธอดนี้ส่งผลให้เกิดการแจงนับออบเจกต์สตริง การแจงนับนี้เก็บชื่อพารามิเตอร์ที่มีอยู่ในคำขอการแจงนับ getHeaderNames(): มันสร้างการแจงนับที่มีชื่อส่วนหัวที่มีอยู่ในคำขอนี้HttpSession getSession (สร้างบูลีน): เมธอด HttpSession getSession(boolean create) ส่งผลให้ HttpSession ปัจจุบันเกี่ยวข้องกับคำขอนี้ หากไม่มีเซสชันอยู่ในขณะนั้นและบูลีนสำหรับการสร้างเป็นจริง เมธอดนี้จะส่งผลให้มีเซสชันใหม่HttpSession รับเซสชัน (): เมธอดนี้ส่งคืนเซสชันปัจจุบันที่เกี่ยวข้องกับคำขอ ถ้าเซสชันไม่พร้อมใช้งาน เมธอดนี้จะสร้างเซสชันใหม่และส่งคืนวัตถุ getAttribute (ชื่อสตริง): มันสร้างค่าของแอตทริบิวต์ที่มีชื่อเป็นวัตถุ หากไม่มีชื่อแอตทริบิวต์ จะคืนค่า NULLท้องถิ่น getLocale (): คืน Locale ซึ่งลูกค้าจะยอมรับเนื้อหาสตริง getAuthType(): เมธอดนี้ระบุชื่อโครงร่างการตรวจสอบสิทธิ์ที่ใช้เพื่ออนุรักษ์เซิร์ฟเล็ต ถ้า JSP ไม่ถูกสงวนไว้ มันจะส่งกลับค่า NULLServletInputStream getInputStream(): ServletInputStream ดึงเนื้อหาของคำขอในรูปแบบไบนารีสตริง getContent ประเภท (): วิธีนี้จะคืนประเภท MIME ของเนื้อหาของคำขอ หากไม่ทราบประเภท จะคืนค่า NULLสตริง getCharacterEncoding(): ชื่อการเข้ารหัสอักขระที่มีอยู่ในเนื้อหาของคำขอนั้นสร้างโดยวิธีนี้สตริง getHeader (ชื่อสตริง): ส่งคืนค่าส่วนหัวของคำขอในรูปแบบสตริงสตริง getContextPath(): สร้างส่วนของคำขอ URIสตริง getParameter (ชื่อสตริง): เมธอดนี้ส่งผลให้ค่าพารามิเตอร์คำขออยู่ในรูปแบบสตริง หากไม่มีพารามิเตอร์ของคำขอ จะส่งกลับค่า NULLสตริง getMethod(): เมธอด String getMethod() สร้างชื่อคำขอ HTTP ซึ่งใช้กับคำขอปัจจุบันสตริง getProtocol(): คำขอใน JSP ใช้โปรโตคอลบางอย่าง เมธอดนี้ส่งคืนชื่อและเวอร์ชันของโปรโตคอลสตริง getPathInfo(): เมื่อไคลเอนต์ส่งคำขอ มันจะส่ง URL เมธอด String getPathInfo() ส่งคืนข้อมูลเพิ่มเติมเกี่ยวกับพาธที่เกี่ยวข้องกับ URLสตริง getRemoteAddr(): วิธีการนี้ส่งผลให้เกิดที่อยู่อินเทอร์เน็ตโปรโตคอล (IP) ของระบบไคลเอนต์สตริง getRemoteUser(): มันสร้างการเข้าสู่ระบบของไคลเอนต์ที่ตรวจสอบความถูกต้องที่ส่งคำขอ หากผู้ใช้ไม่ได้รับการพิสูจน์ตัวตน จะคืนค่า NULLสตริง getRemoteHost(): ถ้าชื่อไคลเอนต์ที่ร้องขอถูกดึงออกมา สามารถใช้เมธอด String getRemoteHost() ได้สตริง getRequestedSessionId(): เมธอดนี้ส่งคืน ID เซสชัน ซึ่งกำหนดโดยไคลเอ็นต์สตริง getRequestURI(): ส่งกลับ URL ของคำขอจากชื่อโปรโตคอลสตริง[] getParameterValues(ชื่อสตริง): เมธอดนี้คืนค่าอาร์เรย์ที่มีออบเจ็กต์สตริง ออบเจ็กต์เหล่านี้เก็บค่าของพารามิเตอร์ทั้งหมดที่มีอยู่ในคำขอสตริง getServletPath(): นอกจากนี้ยังส่งคืน URL ของคำขอint getContentLength(): ส่งคืนค่าความยาวของเนื้อหาของคำขอเป็นไบต์บูลีน isSecure(): คืนค่าบูลีนที่ระบุว่าคำขอทำผ่านช่องทางที่ปลอดภัยหรือไม่int getServletPort(): วิธีนี้จะให้หมายเลขพอร์ตของคำขอint getIntHeader (ชื่อสตริง): วิธีการนี้ส่งผลให้ค่าของส่วนหัวของคำขออยู่ในรูปแบบจำนวนเต็ม

ตัวอย่างคำขอส่วนหัว HTTP

ที่นี่ เราจะเห็นตัวอย่างหนึ่งอย่างตรงไปตรงมาของคำขอส่วนหัว HTTP ในตัวอย่างคำขอส่วนหัว HTTP เราจะใช้ getHeaderName() วิธีการอ่านข้อมูลส่วนหัว HTTP มันสร้างการแจงนับที่มีข้อมูลส่วนหัว HTTP ของคำขอ hasmoreElements() วิธีการกำหนดเมื่อวิธีการ nextElement() ควรหยุด

ตัวอย่าง:

|_+_|

เขียนโค้ดด้านบนใน main.jsp ไฟล์และเข้าถึงเพื่ออ่านข้อมูลส่วนหัวของคำขอ HTTP มันจะให้ข้อมูลทั้งหมดเกี่ยวกับส่วนหัวของคำขอ HTTP เช่น โฮสต์ การเชื่อมต่อ การควบคุมแคช ตัวแทนผู้ใช้ การยอมรับ ภาษาที่ยอมรับ และการเข้ารหัสที่ยอมรับ

การตอบสนองของเซิร์ฟเวอร์ JSP

เมื่อไคลเอนต์หรือเบราว์เซอร์ร้องขอหน้าเว็บ เว็บเซิร์ฟเวอร์จะตอบสนองต่อคำขอ HTTP ที่เรียกว่าการตอบกลับ คำตอบนี้ประกอบด้วยบรรทัดว่าง เอกสาร บรรทัดสถานะ และส่วนหัวของคำตอบบางส่วน การตอบสนอง HTTP มีลักษณะดังนี้:

|_+_|

ในโค้ดด้านบนนี้ เวอร์ชัน HTTP คือ HTTP/1.1 , 200 คือรหัสสถานะและ ตกลง เป็นข้อความไปยังรหัสสถานะ มีส่วนหัวการตอบสนองหลายรายการ โดยมีเวอร์ชัน HTTP/1.1 ส่งโดยเว็บเซิร์ฟเวอร์ไปยังเบราว์เซอร์ ส่วนหัวการตอบสนองเหล่านี้ได้แก่ การควบคุมแคช อนุญาต การจัดการเนื้อหา การเชื่อมต่อ ความยาวเนื้อหา การเข้ารหัสเนื้อหา ภาษาของเนื้อหา การหมดอายุ ประเภทเนื้อหา ตำแหน่ง แก้ไขล่าสุด ชุดคุกกี้ รีเฟรช และลองใหม่อีกครั้ง .

วัตถุ HttpServletResponse

javax.servlet.http.HttpServletResponse สร้างอินสแตนซ์ที่เรียกว่าวัตถุตอบกลับ ออบเจ็กต์นี้สร้างขึ้นโดยเว็บเซิร์ฟเวอร์ ซึ่งแสดงถึงการตอบสนองที่ส่งไปยังไคลเอ็นต์ อ็อบเจ็กต์การตอบสนองยังเชื่อมโยงกับอินเตอร์เฟสที่จำเป็นสำหรับการสร้างส่วนหัว HTTP โปรแกรมเมอร์สามารถเพิ่มคุกกี้ใหม่ รหัสสถานะ HTTP และการประทับวันที่ในโปรแกรม JSP ต่อไปนี้คือเมธอดหรือฟังก์ชันบางอย่างที่ใช้สำหรับเพิ่มส่วนหัวการตอบสนอง HTTP ในโปรแกรมเซิร์ฟเล็ต

    การเข้ารหัสสตริง URL (URL สตริง): วิธีนี้ใช้สำหรับเข้ารหัส URL เฉพาะที่มี ID เซสชัน ถ้าจำเป็นต้องมีการเข้ารหัส เมธอดนี้จะส่ง URL โดยไม่เปลี่ยนแปลงสตริง encodeRedirectURL (URL สตริง): URL ที่รวมอยู่ในฟังก์ชัน sendRedirect ถูกเข้ารหัส หากไม่ต้องการการเข้ารหัส URL จะไม่เปลี่ยนแปลงบูลีน isCommitted(): ฟังก์ชันนี้ส่งผลให้เกิดค่าบูลีน โดยระบุว่ามีการคอมมิตการตอบสนองหรือไม่บูลีนมีส่วนหัว (ชื่อสตริง): นอกจากนี้ยังส่งผลให้ค่าบูลีนระบุว่ามีการตั้งค่าส่วนหัวการตอบสนองที่มีชื่อหรือไม่เป็นโมฆะ addHeader (ชื่อสตริง ค่าสตริง): ฟังก์ชันนี้มีส่วนหัวตอบกลับพร้อมชื่อและค่าถือเป็นโมฆะ addDateHeader (ชื่อสตริง วันที่แบบยาว): นอกจากนี้ยังมีส่วนหัวการตอบกลับใหม่พร้อมชื่อและวันที่เป็นโมฆะ flushBuffer(): ฟังก์ชันนี้บังคับให้เขียนเนื้อหาที่มีอยู่ในบัฟเฟอร์ไปยังไคลเอ็นต์เป็นโมฆะ addIntHeader (ชื่อสตริง ค่า int): ฟังก์ชันนี้มีส่วนหัวตอบกลับใหม่พร้อมชื่อและค่าจำนวนเต็มเป็นโมฆะรีเซ็ตบัฟเฟอร์ (): ลบหรือล้างเนื้อหาทั้งหมดออกจากบัฟเฟอร์พื้นฐาน แต่จะไม่ล้างส่วนหัวและรหัสสถานะโมฆะรีเซ็ต (): ฟังก์ชันนี้จะลบหรือลบข้อมูลทั้งหมดที่อยู่ในบัฟเฟอร์ พร้อมกับรหัสสถานะและส่วนหัวเป็นโมฆะ sendError (int sc, String msg): ส่งผลให้ข้อความแสดงข้อผิดพลาดมีสถานะเฉพาะและถูกส่งไปยังไคลเอนต์เป็นโมฆะ sendError (int sc): ฟังก์ชันนี้ยังส่งข้อความแสดงข้อผิดพลาดไปยังไคลเอ็นต์ด้วยรหัสสถานะเฉพาะโดยการลบข้อมูลออกจากบัฟเฟอร์เป็นโมฆะ setBufferSize (ขนาด int): ฟังก์ชันนี้แก้ไขขนาดบัฟเฟอร์สำหรับเนื้อหาการตอบสนองเป็นโมฆะ setIntHeader (ชื่อสตริง ค่า int): ฟังก์ชันนี้ตั้งค่าส่วนหัวของการตอบสนองด้วยชื่อและค่าจำนวนเต็มเฉพาะ

ตัวอย่างการตอบกลับส่วนหัว HTTP

นี่คือตัวอย่างของการตอบกลับส่วนหัว HTTP ซึ่งใช้ฟังก์ชัน setIntHeader() สำหรับการตั้งค่าส่วนหัวรีเฟรช

ตัวอย่าง:

|_+_|

บันทึกรหัสข้างต้นด้วยชื่อไฟล์ main.jsp . หลังจากทุกๆ 4 วินาที เวลาปัจจุบันของระบบจะแสดงขึ้นดังที่แสดงด้านล่าง

เอาท์พุท:

|_+_|

รหัสสถานะ HTTP ใน JSP

คำขอ HTTP และการตอบสนอง HTTP มีโครงสร้างเดียวกันดังนี้:

  • ประการแรก ประกอบด้วยบรรทัดสถานะ Carriage Return (CRLF) และ Line Feed Line Feed หมายถึงขึ้นบรรทัดใหม่
  • ถัดไปคือศูนย์หรือมากกว่าบรรทัดส่วนหัวและ Carriage Return (CRLF)
  • จากนั้นก็มีบรรทัดว่าง CRLF
  • สุดท้าย เนื้อหาของข้อความเป็นทางเลือก เนื้อหาของข้อความอาจมีผลลัพธ์ของคิวรี ข้อมูลคิวรี หรือไฟล์

ในส่วนด้านบน เราได้เห็นว่าส่วนหัวของการตอบสนองมีลักษณะอย่างไร

เว็บเซิร์ฟเวอร์ส่งคืนรหัส HTTP และข้อความที่เกี่ยวข้องไปยังไคลเอนต์ รหัสสถานะ HTTP เหล่านี้และข้อความมีอธิบายไว้ในส่วนต่อไปนี้

รหัส ข้อความ
100ดำเนินการต่อ
101การสลับโปรโตคอล
200ตกลง
201สร้าง
202รับแล้ว
203ข้อมูลที่ไม่น่าเชื่อถือ
204ไม่มีเนื้อหา
205รีเซ็ตเนื้อหา
206เนื้อหาบางส่วน
300หลายทางเลือก
301เคลื่อนไหวอย่างถาวร
302พบ
303ดูอื่นๆ
304ไม่ดัดแปลง
305ใช้พร็อกซี่
306ไม่ได้ใช้
307เปลี่ยนเส้นทางชั่วคราว
400คำขอไม่ดี
401ไม่ได้รับอนุญาต
402ต้องชำระเงิน
403ต้องห้าม
404ไม่พบ
405วิธีการไม่ได้รับอนุญาต
406ไม่ยอมรับ
407ต้องมีการตรวจสอบสิทธิ์พร็อกซี
408หมดเวลาการร้องขอ
409ขัดแย้ง
410ที่ไปแล้ว
411ความยาวที่ต้องการ
412เงื่อนไขเบื้องต้นล้มเหลว
413ขอเอนทิตีใหญ่เกินไป
414ขอ-url ยาวเกินไป
415ประเภทสื่อที่ไม่รองรับ
417ความคาดหวังล้มเหลว
500ข้อผิดพลาดภายในเซิร์ฟเวอร์
501ไม่ได้ดำเนินการ
502บาดเกตเวย์
503ไม่สามารถให้บริการได้
504หมดเวลาเกตเวย์
505ไม่รองรับเวอร์ชัน HTTP

วิธีที่แตกต่างกันสามวิธีใช้เพื่อตั้งค่ารหัสสถานะ HTTP ตามที่ระบุด้านล่าง:

    โมฆะสาธารณะ setStatus (int statusCode): ตั้งค่ารหัสสถานะ ซึ่งใช้ค่าจำนวนเต็มสำหรับรหัสสถานะเป็นอาร์กิวเมนต์Public Void Sendredirect (URL สตริง): ฟังก์ชันนี้สร้างการตอบสนองที่มีรหัส 302 นอกจากนี้ยังสร้างส่วนหัวของตำแหน่งซึ่งระบุ URL ของเอกสารใหม่โมฆะสาธารณะ sendError (รหัส int, ข้อความสตริง): ฟังก์ชันนี้ส่งรหัสสถานะ 404 HTTP ไปยังเบราว์เซอร์พร้อมข้อความสั้น

เราจะดูตัวอย่างตรงไปตรงมาซึ่งจะแสดงรหัสสถานะข้อผิดพลาด 407 ให้กับลูกค้า

ตัวอย่าง:

|_+_|

รหัสด้านบนจะแสดงรหัสสถานะ HTTP 407 พร้อมเครื่องหมาย ต้องการการรับรองความถูกต้อง ข้อความ.

การประมวลผลแบบฟอร์มใน JSP

หลายครั้งเราจำเป็นต้องส่งข้อมูลจากเบราว์เซอร์ไปยังเว็บเซิร์ฟเวอร์และสุดท้ายส่งไปยังโปรแกรม มีสองวิธีคือ GET และ POST ที่เบราว์เซอร์ใช้เพื่อส่งข้อมูลนี้ไปยังเว็บเซิร์ฟเวอร์ สี่วิธีที่ใช้ในการอ่านข้อมูลโดยใช้ JSP, รับพารามิเตอร์ () , getParameterValues() , getParameterNames() , และ getInputStream() .

วิธี GET

เมธอด GET ใช้สำหรับส่งข้อมูลผู้ใช้ที่เข้ารหัสและต่อท้ายคำขอของเพจ ข้อมูลผู้ใช้ที่เข้ารหัสและคำขอหน้าจะถูกคั่นด้วยสัญลักษณ์ '?' วิธีนี้เป็นค่าเริ่มต้นสำหรับการส่งข้อมูลผู้ใช้ไปยังเว็บเซิร์ฟเวอร์จากเบราว์เซอร์ ส่งกลับสตริงที่จะอยู่ใน ที่ตั้ง: กล่อง ของเบราว์เซอร์ หากคุณมีข้อมูลที่เป็นความลับ เช่น รหัสผ่าน อย่าใช้วิธี GET

ตัวอย่างวิธีการ GET โดยใช้ URL

ให้เราสร้าง URL ที่จะส่งผ่านสองค่าที่แตกต่างกันไปยังโปรแกรม GetURLForm โดยใช้เมธอด GET

|_+_|

เราจะเขียนโค้ดด้านล่างลงในไฟล์ main.jsp เราได้ใช้วิธี getParameter() ในการอ่านข้อมูลโดยใช้ JSP

ตัวอย่าง:

|_+_|

เอาท์พุท:

|_+_|

การจัดการคุกกี้

คุกกี้คืออะไร? คุกกี้คือไฟล์ข้อความที่มีอยู่ในเดสก์ท็อปของลูกค้าและใช้เพื่อวัตถุประสงค์ในการติดตาม คุกกี้ HTTP ได้รับการสนับสนุนโดย JSP ที่นี่ เราจะเห็นลักษณะทางกายวิภาคของคุกกี้ HTTP วิธีการตั้งค่าหรือรีเซ็ตคุกกี้ และวิธีการในคุกกี้

กายวิภาคของคุกกี้

คุกกี้จะแสดงอยู่ที่ส่วนหัว HTTP เสมอ เมื่อ JSP ตั้งค่าคุกกี้ในส่วนหัว HTTP จะมีโครงสร้างดังต่อไปนี้

|_+_|

ใน ส่วนหัวชุดคุกกี้ ด้านบนคุณสามารถสังเกต ชื่อ-ค่า คู่, วันที่ ใน GMT, a เส้นทาง , และ โดเมน . คู่ชื่อ-ค่านี้มีอยู่ในรูปแบบ URL องค์ประกอบอื่นในคุกกี้ด้านบนคือ หมดอายุ ซึ่งบอกให้เบราว์เซอร์ลืมคุกกี้นี้หลังจากวันที่และเวลาที่ระบุ

วิธีการใช้คุกกี้

ต่อไปนี้เป็นวิธีการที่สำคัญบางประการที่เกี่ยวข้องกับคุกกี้ พร้อมด้วยคำอธิบาย

    สตริงสาธารณะ getDomain(): ฟังก์ชันนี้จะดึงโดเมนของคุกกี้โมฆะสาธารณะ setDomain (รูปแบบสตริง): คุณสามารถตั้งค่าโดเมนสำหรับคุกกี้ของคุณได้โดยใช้ฟังก์ชันนี้int สาธารณะ getMaxAge(): ดึงอายุสูงสุดของคุกกี้ อายุจะแสดงเป็นวินาทีโมฆะสาธารณะ setMaxAge (หมดอายุ int): ฟังก์ชันนี้จะกำหนดระยะเวลาก่อนที่คุกกี้จะหมดอายุสตริงสาธารณะ getValue(): มันดึงค่าของคุกกี้สตริงสาธารณะ getName(): มันดึงชื่อคุกกี้ คุณไม่สามารถเปลี่ยนชื่อคุกกี้หลังจากสร้างโมฆะสาธารณะ setValue (สตริง newValue): ฟังก์ชันนี้แก้ไขค่าคุกกี้สตริงสาธารณะ getPath(): ส่งผลให้เกิดเส้นทางที่เกี่ยวข้องกับคุกกี้โมฆะสาธารณะ setPath (สตริง uri): ฟังก์ชันนี้กำหนดเส้นทางสำหรับคุกกี้สตริงสาธารณะ getComment(): ส่งผลให้เกิดความคิดเห็นซึ่งระบุวัตถุประสงค์หรือการใช้คุกกี้ หากคุกกี้ไม่มีความคิดเห็น จะส่งคืน NULLโมฆะสาธารณะ setSecure (แฟล็กบูลีน): ระบุค่าบูลีนที่กำหนดว่าจะส่งคุกกี้ผ่านการเชื่อมต่อที่เข้ารหัสหรือไม่โมฆะสาธารณะ setComment(วัตถุประสงค์สตริง): ฟังก์ชันนี้จะตั้งค่าความคิดเห็นสำหรับคุกกี้ที่ระบุวัตถุประสงค์

วิธีการตั้งค่าคุกกี้?

มีสามวิธีที่ตรงไปตรงมาในการตั้งค่าคุกกี้ วิธีการเหล่านี้อธิบายไว้ด้านล่าง:

  1. ขั้นแรก สร้างวัตถุคุกกี้ เรียกตัวสร้างคุกกี้ด้วยชื่อของคุกกี้และค่าที่เกี่ยวข้อง ทั้งชื่อและค่าจะแสดงเป็นสตริง
|_+_|

ขณะสร้างคุกกี้ คุณต้องจำไว้ว่าไม่ควรมีช่องว่างหรือสัญลักษณ์พิเศษในชื่อและค่า

  1. หลังจากสร้างคุกกี้แล้ว เราจะกำหนดอายุสูงสุดของคุกกี้โดยใช้ปุ่ม setMaxAge การทำงาน.
|_+_|

ฟังก์ชันด้านบนกำหนดอายุคุกกี้สูงสุด 24 ชั่วโมง

  1. สุดท้าย ใช้ response.addCookie เพื่อเพิ่มคุกกี้ในส่วนหัวการตอบสนอง HTTP
|_+_|

บทสรุป

JavaServer Pages หรือ Jakarta Server Pages (JSP) เป็นเทคโนโลยีที่ช่วยให้นักพัฒนาสามารถสร้างเนื้อหาหรือหน้าเว็บแบบไดนามิกได้ มีข้อดีขั้นสูงหลายประการของ JSP เนื่องจากดูแลรักษาง่าย ใช้โค้ดน้อยกว่าเซิร์ฟเล็ต และมีการพัฒนาที่รวดเร็ว บทความนี้เป็นคู่มือฉบับย่อเพื่อเรียนรู้ JSP สำหรับผู้ใช้มือใหม่

เราได้ครอบคลุมทุกแง่มุมของ JSP ที่จำเป็นสำหรับนักพัฒนามือใหม่ในการเรียนรู้ ก่อนเริ่มโปรแกรม JSP ใดๆ ให้ตั้งค่าสภาพแวดล้อม Java และ Tomcat classpath ก่อน นี่คือบทช่วยสอนที่สมบูรณ์เกี่ยวกับองค์ประกอบ JSP ที่จำเป็นทั้งหมด

เรามี คู่มือฉบับย่อเกี่ยวกับทฤษฎีกราฟ ซึ่งกล่าวถึงรายละเอียดทั้งหมดที่เกี่ยวข้องกับทฤษฎีกราฟอย่างละเอียด