CodeGym /จาวาบล็อก /สุ่ม /ส่วนที่ 1 สิ่งที่คุณต้องรู้ก่อนเรียนรู้ Spring และ JavaEE...
John Squirrels
ระดับ
San Francisco

ส่วนที่ 1 สิ่งที่คุณต้องรู้ก่อนเรียนรู้ Spring และ JavaEE

เผยแพร่ในกลุ่ม
หากคุณเรียนจบ (หรือใกล้จะ) เรียนรู้ Java SE แล้ว ก็ถึงเวลาคิดถึงขั้นตอนต่อไปในการพิชิตอาชีพของนักพัฒนา Java ส่วนที่ 1 สิ่งที่คุณต้องรู้ก่อนเรียนรู้ Spring และ JavaEE - 1 ในแง่หนึ่ง คุณมีความเข้าใจ Java ดีอยู่แล้ว: คุณรู้วิธีทำงานกับ IDE, เขียนโปรแกรม และอื่นๆ อีกมากมาย แต่คุณควรทำอย่างไรต่อไปกับโปรแกรมของคุณ? คุณจะทำให้พวกมันเย็นลงและ "ปลดปล่อยพวกมันสู่โลก" ได้อย่างไร? เห็นได้ชัดว่าถึงเวลาแล้วที่จะต้องศึกษาเทคโนโลยีขององค์กร และตอนนี้ความสนุกก็เริ่มขึ้น ไม่สำคัญว่าคุณจะตัดสินใจเริ่มต้นด้วยกลุ่มเทคโนโลยีใด ไม่ว่าจะเป็น JavaEE หรือ Spring คุณมักจะเจอสิ่งต่างๆ มากมายที่อยู่ห่างไกลเกินกว่าที่คุณเข้าใจ ระหว่างพื้นฐาน Java และเทคโนโลยีขั้นสูง ยังคงมีขั้นตอนขั้นกลางในความรู้ที่ต้องดำเนินการเพื่อรักษาสิ่งที่เหลืออยู่ของการควบคุมตนเองและความมั่นใจในตนเองของคุณในขณะที่คุณอ่านเอกสารมากมาย ดังนั้น,คือการให้ความรู้ทางทฤษฎีขั้นต่ำที่จำเป็นสำหรับการศึกษา JavaEE หรือ Spring ของคุณเพิ่มเติม วัสดุนี้แบ่งออกเป็น 7 ส่วน:
  1. เราจะพูดคุยเกี่ยวกับเครือข่ายเล็กน้อย
  2. เราจะตรวจสอบไคลเอนต์เซิร์ฟเวอร์และสถาปัตยกรรมสามชั้น
  3. เราจะสำรวจโปรโตคอล HTTP/HTTPS
  4. เราจะเรียนรู้ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับ Maven
  5. เรากำลังพูดถึงการเข้าสู่ระบบ
  6. เกี่ยวกับคอนเทนเนอร์เซิร์ฟเล็ต
  7. และสุดท้ายเกี่ยวกับ MVC

ตอนที่ 1 เราจะพูดถึงเรื่องเครือข่ายกันเล็กน้อย

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

แบบจำลอง OSI

โมเดล Open Systems Interconnection (OSI) สร้างวิธีการแบบแบ่งชั้นเพื่อสร้างเครือข่าย แสดงให้เห็นอย่างชัดเจนว่าเอนทิตีเลเยอร์ใดของเครือข่ายเดียวกันสามารถโต้ตอบระหว่างกันได้อย่างไรและที่ใด โดยรวมแล้วโมเดลนี้มีทั้งหมด 7 เลเยอร์:
7 แอปพลิเคชัน
6 การนำเสนอ
5 การประชุม
4 ขนส่ง
3 เครือข่าย
2 ลิงค์ข้อมูล
1 ทางกายภาพ
การแบ่งโมเดลออกเป็นเลเยอร์ที่เป็นนามธรรมช่วยให้นักพัฒนาที่ทำงานบนเลเยอร์การขนส่ง เช่น ไม่ต้องคิดเกี่ยวกับรายละเอียดการใช้งานในระดับเครือข่ายและเลเยอร์เซสชัน วิธีการนี้ยังใช้ในการเขียนโปรแกรม ลองพิจารณาเลเยอร์ทั้งหมดของโมเดล OSI และพิจารณาว่าเลเยอร์ใดที่เราสนใจ:
  1. เลเยอร์ทางกายภาพ — เลเยอร์นี้เกี่ยวข้องกับกฎของฟิสิกส์และวิธีการใช้เพื่อวัตถุประสงค์ของเรา ตัวอย่างเช่น การสร้างสายเคเบิลและวางสายเคเบิลไปยังเอนทิตีในเครือข่าย

    เลเยอร์นี้ไม่สนใจเรา

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

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

  3. เลเยอร์เครือข่าย — เลเยอร์นี้ใช้สำหรับกำหนดที่อยู่ของผู้ใช้เครือข่ายแต่ละคนและเส้นทางไปยังพวกเขา มีประโยชน์ในการเรียนรู้เพิ่มเติมเกี่ยวกับรายละเอียดของเลเยอร์นี้ ซึ่งก็คือที่อยู่เครือข่าย

    ที่อยู่เครือข่ายถูกกำหนดโดยโปรโตคอลพิเศษ: ที่พบมากที่สุดคือ IPv4 (Internet Protocol รุ่น 4) นี่คือโปรโตคอลที่โปรแกรมเมอร์เว็บต้องใช้เพื่อติดต่อกับผู้ใช้เครือข่ายรายอื่น

    ที่อยู่ IPv4 ประกอบด้วยค่าสี่ไบต์ที่คั่นด้วยจุด เช่น 192.0.2.235 คุณควรจำไว้ว่าค่าเหล่านี้เป็นไบต์ ซึ่งหมายความว่าค่าเหล่านี้อยู่ในช่วง 0..255

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

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

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

    พอร์ตคือตัวเลขในช่วงตั้งแต่ 0 ถึง 65535 ซึ่งจะถูกเพิ่มไปยังที่อยู่ IP หลังจากเครื่องหมายทวิภาค: 192.0.2.235:8080 แต่คุณไม่สามารถใช้พอร์ตทั้งหมดในช่วงที่ระบุได้: บางพอร์ตสงวนไว้สำหรับระบบปฏิบัติการและพอร์ตอื่น ๆ จะถูกใช้เพื่อวัตถุประสงค์เฉพาะ เราจะไม่เจาะลึกถึงจุดประสงค์ของพอร์ตต่างๆ สำหรับตอนนี้ก็เพียงพอแล้วที่จะเข้าใจบทบาทของพวกเขาในกระบวนการสื่อสารบนเครือข่าย

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

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

    หากแอปพลิเคชันกำลังสื่อสารกับผู้ใช้หลายคนในเวลาเดียวกัน จะมีการสร้างการเชื่อมต่อ (และเซสชัน) ตามจำนวนที่สอดคล้องกัน แต่ละเซสชันมีตัวระบุเฉพาะ (ID)ซึ่งทำให้แอปพลิเคชันสามารถแยกความแตกต่างระหว่างผู้ใช้ที่กำลังสื่อสารด้วย

  6. เลเยอร์การนำเสนอ — เลเยอร์นี้มีหน้าที่ในการเข้ารหัส/ถอดรหัสข้อมูล เห็นได้ชัดว่าหากเราต้องการส่งสตริง "Hello web" ไปยังผู้ใช้รายอื่น สตริงนั้นจะถูกแปลงเป็น (เข้ารหัสเป็น) รหัสไบนารีก่อนแล้วจึงส่งเท่านั้น เมื่อถึงผู้รับ ข้อความจะถูกแปลงกลับ (ถอดรหัส) และผู้รับสามารถดูข้อความต้นฉบับได้ การดำเนินการเหล่านี้เกิดขึ้นที่เลเยอร์การนำเสนอ

  7. Application Layerเป็น Layer ที่น่าสนใจที่สุดสำหรับเรา อนุญาตให้แอปพลิเคชันสื่อสารกับเครือข่าย ที่เลเยอร์นี้ เรารับและส่งข้อความ และส่งคำขอไปยังบริการและฐานข้อมูลระยะไกล

    มีโปรโตคอลมากมายที่ใช้ในเลเยอร์นี้: POP3, FTP, SMTP, XMPP, RDP, SIP, TELNET และแน่นอน HTTP/HTTPS โปรโตคอลคือข้อตกลงสากลที่เราปฏิบัติตามเมื่อทำการสื่อสาร เราจะให้การสนทนาโดยละเอียดแยกต่างหากเกี่ยวกับ HTTP/HTTPS

ส่วนที่ 1 สิ่งที่คุณต้องรู้ก่อนเรียนรู้ Spring และ JavaEE - 2เราไม่จำเป็นต้องรู้ว่าแต่ละเลเยอร์ของโมเดลทำงานอย่างไร สิ่งสำคัญคือการเข้าใจหลักการเบื้องหลังการทำงานขององค์ประกอบที่เราจะต้องทำงานด้วยเมื่อเขียนเว็บแอปพลิเคชัน ได้แก่ :
  • ที่อยู่ IP — ที่อยู่ของผู้ใช้ในเครือข่าย
  • พอร์ต — ที่อยู่ของแอปพลิเคชันเฉพาะของผู้ใช้
  • เซสชัน — เอนทิตีที่มีอยู่ตลอดระยะเวลาของการสื่อสารระหว่างผู้ใช้สองคน
  • โปรโตคอลแอปพลิเคชัน (HTTP/HTTPS) — เป็นกฎที่เราจะปฏิบัติตามเมื่อเขียนและส่งข้อความ
ตัวอย่างเช่น เมื่อเราไปที่ร้านค้าออนไลน์ เราจะระบุที่อยู่และพอร์ตของร้านค้านั้น ในการเยี่ยมชมครั้งแรกของเรา เซสชันจะถูกสร้างขึ้น ร้านค้าสามารถบันทึกข้อมูลในเซสชั่น ตัวอย่างเช่น ร้านค้าอาจบันทึกข้อมูลเกี่ยวกับสินค้าที่เราทิ้งไว้ในตะกร้าสินค้า หากเราปิดแท็บที่มีร้านค้าออนไลน์แล้วกลับเข้าไปใหม่ในภายหลัง สินค้าของเราจะยังคงอยู่ในรถเข็นเพราะสินค้าเหล่านั้นถูกบันทึกไว้ในเซสชัน แน่นอน ข้อมูลทั้งหมดที่เราได้รับจากร้านค้าที่เราได้รับผ่านโปรโตคอล HTTP/HTTPS และเบราว์เซอร์ของเรารู้วิธีดำเนินการ คุณอาจคัดค้าน โดยบอกว่าคุณไม่เคยป้อนที่อยู่และพอร์ตในเบราว์เซอร์ และคุณก็พูดถูกบางส่วน สิ่งที่คุณทำคือป้อนชื่อโดเมนซึ่งแปลงโดยเซิร์ฟเวอร์ DNS มาดูกันดีกว่าว่าที่นี่มีอะไรบ้าง

DNS (ระบบชื่อโดเมน)

ดังที่เราได้เรียนรู้ไปแล้ว ผู้ใช้เครือข่ายแต่ละคนมีที่อยู่เฉพาะ หากเรากำลังพูดถึงแอป พลิเคชัน ที่อยู่เฉพาะของมันคือIPv4-address:port หากคุณทราบที่อยู่นี้ คุณจะสามารถเข้าถึงแอปพลิเคชันได้โดยตรง ลองนึกภาพว่าเราเขียนเว็บแอพพลิเคชั่นที่แสดงอุณหภูมิอากาศเฉลี่ยของทุกประเทศแบบเรียลไทม์ เราปรับใช้บนเซิร์ฟเวอร์ที่มีที่อยู่ 226.69.237.119 บนพอร์ต 8080 เพื่อให้สามารถรับข้อมูลจากเราได้ ผู้ใช้ต้องป้อนตัวเลข 5 ตัวในเบราว์เซอร์: 226.69.237.119:8080 ผู้คนไม่ชอบจำชุดตัวเลข พวกเราหลายคนจำหมายเลขโทรศัพท์มากกว่าสองหมายเลขไม่ได้ นั่นเป็นเหตุผลที่ระบบชื่อโดเมนถูกประดิษฐ์ขึ้น เราสามารถสร้าง "นามแฝง" สำหรับที่อยู่ของเราได้ เช่น world-temperature.com แทนที่จะมองหาเราโดยใช้ที่อยู่ที่ประกอบด้วยหมายเลขที่จำยาก 5 หมายเลข ผู้ใช้สามารถป้อนชื่อโดเมนของเราในแถบที่อยู่ของเบราว์เซอร์ มีเซิร์ฟเวอร์ DNSที่จับคู่ชื่อโดเมนกับที่อยู่จริง ตัวอย่างเช่น เมื่อผู้ใช้ป้อน codegym.cc ในเบราว์เซอร์ คำขอจะถูกส่งไปยังเซิร์ฟเวอร์ DNS ซึ่งจะแปลงเป็นที่อยู่จริง ส่วนที่ 1 สิ่งที่คุณต้องรู้ก่อนเรียนรู้ Spring และ JavaEE - 4นี่เป็นสิ่งสำคัญสำหรับเราที่จะต้องเข้าใจ เนื่องจากแอปพลิเคชันของเราจะเรียกใช้บริการระยะไกลทั้งจากชื่อโดเมนและตามที่อยู่จริง เราต้องเข้าใจว่าไม่ว่าในกรณีใดบริการจะเหมือนกัน แค่นี้ก่อน! ในบทความนี้ เราดูที่พื้นฐานของระบบเครือข่าย ซึ่งจะมีประโยชน์เมื่อคุณเริ่มเรียนรู้การเขียนโปรแกรมบนเว็บครั้งต่อไปเราจะมาดูกันว่าสถาปัตยกรรมไคลเอนต์-เซิร์ฟเวอร์คืออะไร และเหตุใดการทำความเข้าใจจึงสำคัญมาก ส่วนที่ 2 พูดคุยเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์ ส่วนที่ 3 HTTP/HTTPS ส่วนที่ 4 พื้นฐานของ Maven ส่วนที่ 5 Servlets และ Java Servlet API การเขียน Web Application อย่างง่าย ตอนที่ 6. Servlet container ตอนที่ 7. แนะนำรูปแบบ MVC (Model-View-Controller)
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION