JavaRush /จาวาบล็อก /Random-TH /ส่วนที่ 1 สิ่งที่คุณต้องรู้ก่อนเรียนรู้ Spring และ JavaEE...
Professor Hans Noodles
ระดับ

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

เผยแพร่ในกลุ่ม
หากคุณได้เรียน Java SE จบไปแล้วหรือใกล้เคียงก็ถึงเวลาคิดถึงขั้นตอนต่อไปในการพิชิตอาชีพของ Java Developer ส่วนที่ 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

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

    เราไม่สนใจ.

  2. Data link layer - รับผิดชอบในการส่งข้อมูลไปยังโหนดเครือข่ายและสร้างช่องทางการส่งข้อมูลบนวัตถุทางกายภาพ

    Нам не интересен, если только нет желания писать прошивку для каналообразующей аппаратуры.

  3. Сетевой уровень — для определения addressов отдельных пользователей сети и маршрутов к ним. На этом уровне стоит остановиться подробнее, а именно — на addressе пользователя в сети.

    Он определяется специальным протоколом: самый распространённый — IPv4 (Internet Protocol version 4). Именно его нужно использовать веб-программисту для обращения к другому абоненту сети.

    IPv4 состоит из четырех byteовых значений, разделенных точкой, например: 192.0.2.235. Стоит помнить, что значения byteовые, а значит, они лежат в пределах 0..255.

    IP-address, в свою очередь, делятся на классы, и просто так присвоить себе красивую комбинацию циферок не получится, но так сильно углубляться мы не станем. Достаточно понимать, что IP-address — это уникальный идентификатор абонента в сети, по которому мы сможем к нему обратиться.

  4. Транспортный уровень — занимается доставкой информации addressту. Для этого используются разные протоколы, которые нам пока не интересны. Гораздо больше нас интересует понятие, которое появляется на этом уровне, — port.

    Порты отвечают за идентификацию конкретного applications на компьютере. Например, ты написал чат на Java, установил на 2 компа и хочешь отправить своему собеседнику. Твое сообщение упаковывается, отправляется по конкретному IP-addressу, доставляется твоему собеседнику, но его ПК не знает, что делать с полученной информацией, так How не понимает, Howое приложение должно обработать твое сообщение. Для этого и указываются порты при общении абонентов в сети.

    Порт представляет собой число от 0 до 65535. Он добавляется к IP-addressу после двоеточия: 192.0.2.235:8080. Но нельзя использовать все порты из указанного диапазона: часть из них зарезервирована под операционную систему, еще часть принято использовать с конкретно оговоренной целью. В преднаmeaning разных портов углубляться не будем, пока достаточно понимать их роль в процессе общения в сети.

  5. Сеансовый уровень — создает и управляет сеансами связи приложений. На этом уровне становится возможным взаимодействие приложений, отправка requestов служебного уровня. Для нас важно знать, что на этом уровне между двумя абонентами открывается сессия (session), с которой нам часто придется работать.

    Сессия — сущность, которая создается при установке связи между двумя пользователями. В ней можно сохранять нужную нам информацию о юзере, об истории их взаимодействия. Важной деталью является то, что при остановке обмена информацией сессия не пропадает, а сохраняет свое состояние на протяжении установленного промежутка времени, поэтому пользователи могут продолжить обмен информацией после перерыва.

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

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

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

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

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

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

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