ฉันจำเป็นต้องรู้จัก servlets และ JSP เพื่อเรียนรู้ spring หรือ hibernate หรือ Java web framework อื่น ๆ หรือไม่? [ปิด]


17

ฉันถามคนมากมายว่าจะเริ่มเรียนรู้การพัฒนาเว็บ Java ได้อย่างไรฉันรู้จักคอร์ java (Threading, Generics, Collections, ประสบการณ์เล็กน้อยกับ (JDBC)) แต่ฉันไม่รู้จัก JSP และ servlets ฉันมีส่วนแบ่งการพัฒนาพอใช้กับแอพพลิเคชั่นบนเว็บหลายตัวที่ใช้ PHP สำหรับฝั่งเซิร์ฟเวอร์และ HTML, CSS, Javascript, HTML5 สำหรับฝั่งไคลเอ็นต์

คนส่วนใหญ่ที่ฉันถามบอกให้ฉันกระโดดไปข้างหน้าเพื่อไฮเบอร์เนตในขณะที่บางคนบอกฉันว่าฉันไม่จำเป็นต้องเรียนรู้ servlets และ jsps และฉันควรศึกษากรอบการทำงานของฤดูใบไม้ผลิทันที มันเป็นเรื่องจริงเหรอ? ฉันไม่จำเป็นต้องเรียนรู้เซิร์ฟเล็ตและ JSP เพื่อเรียนรู้การจำศีลหรือฤดูใบไม้ผลิ

คำตอบทั้งหมดของพวกเขาทำให้ฉันสับสนและตอนนี้ฉันสูญเสียสิ่งที่เรียนรู้หรือศึกษาไปอย่างสิ้นเชิง ฉันรู้สึกว่าถ้าฉันข้ามการเรียนรู้ JSP และ servlets ฉันจะพลาดแนวคิดที่สำคัญมากมายที่จะช่วยฉันในอนาคต

ดังนั้นคำถามฉันต้องมีพื้นฐาน / รู้ servlets และ JSP เพื่อเรียนรู้ spring หรือ hibernate หรือ Java web framework อื่น ๆ


3
โปรดทราบว่าไฮเบอร์เนตเป็นเพียงชั้นนามธรรมที่ไม่มีอะไรเพิ่มเติมและสามารถใช้เพื่อเชื่อมต่อแหล่งข้อมูลกับแอปพลิเคชันจาวาประเภทใดก็ได้ไม่ใช่แค่เว็บแอปพลิเคชัน
Ed Griebel

1
รู้เกี่ยวกับ servlets และ JSP จะไม่เจ็บดูที่ "Head First - Servlets และ JSP" อ่านเข้าใจง่าย แต่ครอบคลุมมาก
Jaydee

@ Jaydee ฉันกำลังมุ่งหน้าไปยัง Core Servlets และ JSP โดย Marty Hall + servlets ของ Murach และ JSP
KyelJmD

ฉันไม่คิดว่าคำถามนี้ได้รับคำตอบอย่างเพียงพอ Bear Bibeaultนักพัฒนาและผู้เขียนที่รู้จักกันดียืนยันว่าหนึ่งเรียนรู้ JSP และ Servlets ก่อนเรียนรู้กรอบใด ๆ ใครสนใจที่จะแสดงว่าทำไมวันนี้อาจจะใช่หรือไม่? นี่คือโพสต์ของเขา - coderanch.com/t/521300/JSP/java/JSP-servlets-struts
Borat

Bear Bibeaultเอาล่ะฉันมีคำตอบจาก ดูลิงก์ทั้งสองนี้ - coderanch.com/t/633527/Spring/ …และcoderanch.com/t/633526/JSP/java/…
Borat

คำตอบ:


17

หากคุณเข้าใจ HTML, CSS และ JavaScript เป็นอย่างดีแสดงว่าคุณมีหลายคนที่จบลงด้วยการพัฒนาเว็บไซต์ แนวคิดเบื้องหลัง JSP นั้นคล้ายกับ PHP มาก นิสัยใจคอที่แตกต่างกัน servlet เป็นชื่อสำหรับโค้ด Java ที่ทำหน้าที่ร้องขอ แค่นี้แหละ เฟรมเวิร์ก Struts ดั้งเดิมทั้งหมดเป็นเซิร์ฟเล็ตเดียว

ฉันจะเพิ่มTomcatหรือJettyลงในรายการเทคโนโลยีของคุณเพื่อเรียนรู้ Tomcat เป็นการนำ Java Servlet Container ดั้งเดิมมาใช้และเป็นเว็บเซิร์ฟเวอร์ที่โดดเด่นและเป็นที่นิยม GlassFish ถูกสร้างขึ้นจากด้านบน ฉันใช้ Jetty แทน Tomcat ในโครงการใหม่ของฉันเพราะมันง่ายกว่ายืดหยุ่นกว่าและเร็วกว่า Jetty ถูกออกแบบมาเพื่อให้บริการเว็บต่างจากเว็บแอป แต่เว็บแอปเป็นเพียงบริการบนเว็บที่ให้บริการ HTML ในการตอบสนองต่อคำขอ HTTP ดิบดังนั้นหากคุณเข้าใจ HTTP (ซึ่งคุณสามารถเรียนรู้ส่วนสำคัญของในไม่กี่ชั่วโมงต่อวัน) มันง่ายมากที่จะทำงานกับ

คุณสามารถทำเว็บไซต์เล็ก ๆ กับ Tomcat และ JSP ( กวดวิชาที่นี่หรือ JSF) รู้เพียงแค่สิ่งที่คุณรู้และใช้เวลาไม่กี่ชั่วโมงในการสอน ด้วยวิธีนี้คุณสามารถเริ่มต้นจากจุดที่คุณรู้สึกสบายก่อนยืดกล้ามเนื้อ จากนั้นสร้างjavax.servlet.http.HttpServletที่เขียน "<html> <head> <title> สวัสดี </title> </head> <head> <body> <h1> สวัสดีชาวโลก </h1> </body> </ html > "ไปยังวัตถุตอบกลับแสดงรายการใน Tomcat web.xml ของคุณและส่งคำขอ HTTP จากเว็บเบราว์เซอร์ มันไม่ใช่วิทยาศาสตร์จรวด เฟรมเวิร์กเว็บ Java ทั้งหมดเป็นรูปแบบของกิจกรรมพื้นฐานสองอย่างนั้น

ถ้าคุณไปเส้นทาง Jetty มันมีโครงสร้างน้อยกว่า ลองดูตัวอย่างHello Jettyนี้

หากคุณเพิ่งจะสร้างบล็อกหรือไซต์อีคอมเมิร์ซมาตรฐานฉันจะเริ่มด้วยSquareSpaceหรือWordpressหรืออะไรทำนองนั้น คุณได้รับมากจากชั้นวางไม่มีวิธีที่จะพิสูจน์การเข้ารหัสที่กำหนดเองใด ๆ อีกต่อไป

จุดแข็งของ Java สำหรับเว็บแอปพลิเคชันคือความน่าเชื่อถือการบำรุงรักษาและประสิทธิภาพ PHP หรือ Ruby / Rails นั้นง่ายกว่า แต่ Java จะขยายได้มากเท่าที่คุณต้องการ ฉันไม่ได้รู้สึกสับสนกับกรอบเว็บ Java ใด ๆ เมื่อคุณมีทีมงานที่ทำงานกับเว็บแอพพลิเคชั่นขนาดใหญ่หรือคุณจำเป็นต้องใช้ Hibernate ดังนั้นเฟรมเวิร์กอย่าง Spring จะเปล่งประกาย ฤดูใบไม้ผลิเป็นที่นิยมที่สุด เมื่อคุณมีความคุ้นเคยกับ servlets และ JSP / JSF แล้วเรียนรู้ว่า Spring เชื่อมโยงสิ่งเหล่านั้นเข้าด้วยกันอย่างไรกับแบบจำลองข้อมูล

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

สิ่งที่ยังคงต้องการรหัสประสิทธิภาพสูงที่กำหนดเอง (ใน Java, PHP, อะไรก็ตาม) อาจจะมีฐานข้อมูลเชิงสัมพันธ์ / SQL ที่ให้พลังงานแก่พวกเขา ฉันขอแนะนำให้คุณทำความคุ้นเคยกับ SQL และ JDBC (การเชื่อมต่อฐานข้อมูล Java) เป็นอันดับแรก หลังจากที่คุณคุ้นเคยกับโลกของวัตถุ Java และโลกของฐานข้อมูลเชิงสัมพันธ์และ SQL แล้วคุณสามารถเรียนรู้Ebean / JPA (Java Persistence API) / ORM (การทำแผนที่วัตถุสัมพันธ์) ซึ่งเชื่อมต่อโลกวัตถุกับโลกสัมพันธ์

ออมของมีความซับซ้อนและแปลก ส่วนใหญ่มีค่าการต่อสู้ในที่สุด Ebean เป็นวิธีที่ง่ายที่สุดที่ฉันรู้จัก ฉันรู้สึกสะดวกสบายกับมันหลังจากผ่านไป 8 เดือนกว่าฉันกับไฮเบอร์เนตหลังจากผ่านไป 12 ปี ฉันรู้จักผู้คนจำนวนมากที่ใช้ Spring with Hibernate และพวกเขาดูเหมือนจะไม่มีปัญหาใด ๆ หรือแม้กระทั่งทราบอย่างชัดเจนว่า Hibernate คืออะไรหรือทำอะไรดังนั้นฉันจะบอกว่าถ้าคุณจะใช้ Hibernate ผ่านฤดูใบไม้ผลิ อาจเป็นเพราะฉันได้ทำงานกับมันนานกว่านี้ฉันพยายามจัดการไฮเบอร์เนตให้สมบูรณ์ด้วยแผนที่แฮชสองสามชุดสำหรับการทดสอบซึ่งยอดเยี่ยมมาก (ภาพรวมตามคำขอ)

คุณมีทักษะที่สำคัญที่สุดอยู่แล้ว เอาคนอื่นทีละคนและพยายามไม่ให้จม


คุณมีลิงก์หรือบทช่วยสอนที่ฉันสามารถเริ่มเรียนรู้เทคโนโลยีดังกล่าวได้หรือไม่ หรืออาจเป็นคำแนะนำที่ดีสำหรับหนังสือ แอปพลิเคชันส่วนใหญ่ที่ฉันทำใช้ RDBMS จาก SQL Server ไปเป็น MySQl แบบง่าย
KyelJmD

ฉันล้างคำตอบและเพิ่มลิงก์ตามที่ร้องขอ Hibernate / JPA และกรอบงานเว็บต่างๆใช้เวลาในการเรียนรู้และเป็นหลัก เทคโนโลยีอื่น ๆ ส่วนใหญ่คุณรู้เพียงพอแล้วว่าคุณควรจะสามารถทำงานได้ในเวลาไม่กี่ชั่วโมงหรือหนึ่งวัน ฉันไม่รู้ Spring แต่ตรวจสอบเอกสารประกอบบนเว็บไซต์ของพวกเขาหรือรับหนังสือที่ได้รับคะแนนสูงใน Amazon
GlenPeterson

ฉันไม่เห็นว่าสิ่งนี้ตอบคำถามได้อย่างไร Bear Bibeaultนักพัฒนาและผู้เขียนที่รู้จักกันดียืนยันว่าหนึ่งเรียนรู้ JSP และ Servlets ก่อนเรียนรู้กรอบใด ๆ สนใจที่จะแสดงเหตุผลที่อาจจะใช่หรือไม่ใช่ในวันนี้? นี่คือโพสต์ของเขา - coderanch.com/t/521300/JSP/java/JSP-servlets-struts
Borat

@GlenPeterson "กรอบ Struts ดั้งเดิมทั้งหมดเป็น servlet เดียว" ความหมาย? มันจะไม่ทำให้การเรียก http ทุกครั้งหรือไม่
Pacerier

@Pacerier เราเคยโหลด Struts 1 ใน Tomcat เป็น servlet เซิร์ฟเล็ต Struts Controller จะส่งคำร้องขอที่แตกต่างกันไปยังเธรดที่ต่างกันในลักษณะเดียวกับที่เว็บเซิร์ฟเวอร์ต้องการที่ระดับเซิร์ฟเล็ตแทนที่จะเป็นระดับคอนเทนเนอร์ ฉันคิดว่าค่าใช้จ่ายน้อยมาก สิ่งที่มีแนวโน้มที่จะช้าที่สุดคือการเรียกฐานข้อมูล ช้าที่สุดอันดับที่สองสร้าง HTML และส่งคืนให้กับลูกค้า ในขณะนั้นเป็นที่นิยมที่จะใช้เซิร์ฟเวอร์แยกต่างหากสำหรับเนื้อหาคงที่เพื่อความเร็วดังนั้นมันจึงเป็นไปได้
GlenPeterson

4

ฉันขอแนะนำให้เรียนรู้เกี่ยวกับ JSP พื้นฐานและ Servlets เพราะจะช่วยให้คุณเข้าใจแนวคิดที่ง่ายขึ้นในฤดูใบไม้ผลิ เนื่องจากคุณมีประสบการณ์เกี่ยวกับ CGIs ที่ทำงานบน PHP JSP / Servlets ส่วนใหญ่จะเป็นวิธีที่แตกต่างกันในการทำสิ่งที่คุณคุ้นเคยดังนั้นจึงควรดำเนินการอย่างรวดเร็ว สิ่งที่ยากที่สุดที่คุณอาจพบคือการเก็บสำนวนที่เป็นเอกลักษณ์ในโลกของจาวา

เท่าที่ไฮเบอร์เนตไปแล้วฉันจะเห็นด้วยกับ MebAlone และพูดว่าเรียนรู้ได้ถ้าคุณต้องการ แต่ถ้าตั้งค่าไว้แล้วคุณสามารถทำ 90% ของสิ่งที่คุณต้องทำ


2

ดูเหมือนคุณต้องการเรียนรู้การพัฒนาเว็บไซต์ฝั่งเซิร์ฟเวอร์ด้วยจาวา มีเฟรมเวิร์กจำนวนหนึ่ง ฤดูใบไม้ผลิ MVC เป็นที่นิยมมากที่สุดเป็นผู้ใหญ่เต็มรูปแบบมากและกรอบที่ดีที่จะรู้ Spring MVC และกรอบงานเว็บ java อื่น ๆ ให้นามธรรม Java servlet API จากโปรแกรมเมอร์ - ดังนั้นในทางเทคนิคคุณไม่จำเป็นต้องรู้ แต่ฉันขอแนะนำให้เรียนรู้พื้นฐาน - โดยเฉพาะคลาสสำคัญ ๆ วันเรียนควรพาคุณไปที่นั่น

สำหรับ JSP ถ้าคุณรู้จัก PHP คุณเข้าใจสิ่งสำคัญอยู่แล้ว JSP เป็นจาวาสคริปต์ฝั่งเซิร์ฟเวอร์รุ่น

Hibernate เป็นการใช้งาน (ที่นิยมมากที่สุด) ของ JPA ซึ่งเป็นจาวาสเปคสำหรับวัตถุที่ยังคงอยู่กับ RDBMS ด้วยการระเบิดในความนิยมของ NOSQL db (Hadoop, Mongo และอื่น ๆ ), ไฮเบอร์เนตนั้นน้อยกว่า 'ต้องรู้' มากกว่าเมื่อ 18 เดือนที่แล้ว โดยส่วนตัวฉันเรียนรู้เทคโนโลยีการจัดเก็บบนพื้นฐานที่จำเป็นต้องรู้เพราะมีจำนวนมากและคุณสูญเสียสิ่งที่คุณไม่ได้ใช้


คุณสามารถแนะนำหนังสือเล่มใดสำหรับ Spring MVC อะไรคือความแตกต่างในการเดิมพัน Spring and Spring MVC
KyelJmD

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

2

คำตอบสั้น ๆ : ไม่คุณไม่จำเป็นต้องเรียนรู้ Servlets และ JSP เป็นสิ่งที่จำเป็นสำหรับ Spring MVC และเว็บเฟรมเวิร์ก Java อื่น ๆ อีกมากมาย

ลองไฮเบอร์เนตออกจากภาพก่อน เป็นเลเยอร์เฟรมเวิร์กที่คงอยู่และไม่มีอะไรเกี่ยวข้องกับ Servlets และ JSP

Servlet API เป็นระดับต่ำสุดสำหรับเกือบทุกเว็บ Java frameworks แม้แต่ JSP ก็ถูกคอมไพล์ไปยังเซิร์ฟเล็ต

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


คุณต้องการแนะนำหนังสือเล่มใดหรือวิดีโอสอนให้เรียนรู้ Spring MVC
KyelJmD


1
@YuriyZubarev - ฉันไม่เห็นว่าสิ่งนี้ตอบคำถาม Bear Bibeaultนักพัฒนาและผู้เขียนที่รู้จักกันดียืนยันว่าหนึ่งเรียนรู้ JSP และ Servlets ก่อนเรียนรู้กรอบใด ๆ สนใจที่จะแสดงเหตุผลที่อาจจะใช่หรือไม่ใช่ในวันนี้? นี่คือโพสต์ของเขา - coderanch.com/t/521300/JSP/java/JSP-servlets-struts
Borat

-1

ดูเหมือนว่าคุณจะติดอยู่กับปัญหาที่ฉันเผชิญเมื่อเร็ว ๆ นี้ เป้าหมายของฉันคือเรียนรู้การพัฒนาฝั่งเซิร์ฟเวอร์ด้วย Java ดังนั้นฉันเริ่มต้นด้วย servlets เข้าใจการทำงานของพวกเขาและเขียนโปรแกรมง่าย ๆ เพื่อเรียกใช้บนเซิร์ฟเวอร์ TomCat TomCat เป็นข้อกำหนดเบื้องต้น คุณควรทำความคุ้นเคยกับ TomCat แน่นอนหากคุณต้องการดำเนินการต่อไป เท่าที่มีความเกี่ยวข้องกับ struts2 หรือ Spring แล้ว struts2 และ spring เป็นโครงสร้างที่สร้างขึ้นบน servlets ซึ่งทำให้มีความเข้าใจอย่างลึกซึ้งเกี่ยวกับ servlets ที่จำเป็นถ้าคุณต้องการความแข็งแกร่งในระดับพื้นฐาน ฉันเริ่มด้วยบทเรียน Java Brains สำหรับผู้เริ่มต้นบทเรียนเหล่านี้น่าทึ่ง ผลงานบางชิ้นของ Jakob Jenkov ในบล็อกของเขาก็น่าทึ่งเช่นกัน Struts2 และ Spring จะง่ายขึ้นเมื่อคุณรู้จัก servlets เท่าที่เกี่ยวข้องกับการจำศีลผมขอแนะนำให้คุณเริ่มต้นด้วยการคุ้นเคยกับ JDBC ไปตามขั้นตอน servlets, struts, JDBC, Spring, Hibernate หวังว่าคำตอบของฉันจะช่วย :)


โพสต์นี้ค่อนข้างอ่านยาก (ผนังข้อความ) คุณจะช่วยแก้ไขมันให้เป็นรูปร่างที่ดีขึ้นได้ไหม
ริ้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.