-
Struts เช่น Tomcat, Turbine และโปรเจ็กต์ Apache อื่นๆ เป็นซอฟต์แวร์โอเพ่นซอร์ส ซึ่งเป็นหนึ่งในข้อดีของมัน ช่วยให้นักพัฒนามีความเข้าใจอย่างลึกซึ้งยิ่งขึ้นเกี่ยวกับกลไกการใช้งานภายใน เฟรมเวิร์กโอเพ่นซอร์ส Struts ถูกสร้างขึ้นเพื่อให้นักพัฒนาสามารถสร้างเว็บแอปพลิเคชันที่ใช้เทคโนโลยี Java Servlet และ JavaServer Pages (JSP) ได้ง่ายขึ้น กรอบงาน Struts ช่วยให้นักพัฒนามีกรอบงานมาตรฐานแบบครบวงจร โดยการใช้ Struts เป็นพื้นฐาน นักพัฒนาสามารถมุ่งเน้นไปที่ตรรกะทางธุรกิจของแอปพลิเคชันได้มากขึ้น เฟรมเวิร์ก Struts นั้นเป็นการใช้งาน Model-View-Controller (MVC) โดยใช้เทคโนโลยี Java Servlet และ JavaServer Pages
โดยเฉพาะข้อดีของ Struts คือ:
1. นำโมเดล MVC ไปใช้โดยมีโครงสร้างที่ชัดเจน ช่วยให้นักพัฒนามุ่งเน้นไปที่การนำตรรกะทางธุรกิจไปใช้เท่านั้น
2. มีแท็กมากมายที่สามารถใช้ได้ ไลบรารีแท็ก Struts (Taglib) สามารถปรับปรุงประสิทธิภาพการพัฒนาได้อย่างมากหากสามารถใช้งานได้อย่างยืดหยุ่น นอกจากนี้ เท่าที่นักพัฒนา JSP ในประเทศกังวล นอกเหนือจากการใช้แท็กทั่วไปที่มาพร้อมกับ JSP แล้ว พวกเขาไม่ค่อยพัฒนาแท็กของตนเอง บางที Struts อาจเป็นจุดเริ่มต้นที่ดี
3. การนำทางเพจ การนำทางเพจจะเป็นทิศทางการพัฒนาในอนาคต คุณสามารถเข้าใจการเชื่อมต่อระหว่างส่วนต่างๆ ของทั้งระบบผ่านไฟล์การกำหนดค่า ซึ่งเป็นประโยชน์อย่างมากสำหรับการบำรุงรักษาในภายหลัง ข้อได้เปรียบนี้จะชัดเจนยิ่งขึ้นเมื่อมีนักพัฒนากลุ่มอื่นเข้ามารับช่วงต่อโครงการ
4. จัดเตรียมกลไกการจัดการข้อยกเว้น
5. การจัดการพูลการเชื่อมต่อฐานข้อมูล
6. รองรับ I18N
ข้อบกพร่อง:
1. เมื่อไปที่เลเยอร์การแสดงผล คุณต้องกำหนดค่าการส่งต่อ ทุกครั้งที่คุณไปที่เลเยอร์การแสดงผล ฉันเชื่อว่าส่วนใหญ่จะไปที่ jsp โดยตรง เมื่อพูดถึงการเปลี่ยนเส้นทาง คุณจะต้องกำหนดค่าการส่งต่อ ในเลเยอร์การแสดงผล คุณต้องกำหนดค่า Struts สิบครั้ง และบางครั้งจะไม่รวมการเปลี่ยนแปลงไดเร็กทอรีและไฟล์ ซึ่งต้องมีการแก้ไขการส่งต่ออีกครั้ง โปรดทราบว่าทุกครั้งที่มีการแก้ไขการกำหนดค่า จำเป็นต้องมีทั้งโปรเจ็กต์ และต้องรีสตาร์ทเซิร์ฟเวอร์อย่าง Tomcate หากการเปลี่ยนแปลงทางธุรกิจเป็นระบบที่ซับซ้อนและบ่อยครั้ง การดำเนินการดังกล่าวจะง่ายดายอย่างเหลือเชื่อ ตอนนี้มีคนหลายสิบหรือหลายร้อยคนกำลังใช้ระบบของเราทางออนไลน์ในเวลาเดียวกัน
2. Struts Action จะต้องปลอดภัยต่อเธรด ซึ่งอนุญาตให้อินสแตนซ์เดียวเท่านั้นที่จัดการคำขอทั้งหมดได้ ดังนั้น ทรัพยากรทั้งหมดที่ใช้โดยการดำเนินการจะต้องซิงโครไนซ์อย่างสม่ำเสมอ ซึ่งทำให้เกิดปัญหาความปลอดภัยของเธรด
3. การทดสอบไม่สะดวก แต่ละ Action of Struts ควบคู่กับ Web Layer ดังนั้นการทดสอบจึงขึ้นอยู่กับ Web Container และการทดสอบหน่วยก็ทำได้ยากเช่นกัน อย่างไรก็ตาม มีเครื่องมือขยาย Junit Struts TestCase ที่สามารถใช้การทดสอบหน่วยได้
4. การแปลงประเภท FormBean ของ Struts ถือว่าข้อมูลทั้งหมดเป็นประเภทสตริง และสามารถใช้เครื่องมือ Commons-Beanutils สำหรับการแปลงประเภท แต่การแปลงทั้งหมดอยู่ที่ระดับคลาส และประเภทการแปลงไม่สามารถกำหนดค่าได้ นอกจากนี้ยังเป็นเรื่องยากมากที่จะส่งข้อความแสดงข้อผิดพลาดระหว่างการแปลงประเภทให้กับผู้ใช้
5. การพึ่งพา Servlet มากเกินไปต้องอาศัย ServletRequest และ ServletResponse เมื่อประมวลผล Action ดังนั้นจึงไม่สามารถกำจัดคอนเทนเนอร์ Servlet ได้
6. ในแง่ของภาษานิพจน์ส่วนหน้า Struts รวม JSTL ดังนั้นจึงใช้ภาษานิพจน์ JSTL เพื่อรับข้อมูลเป็นหลัก อย่างไรก็ตาม ภาษาการแสดงออกของ JSTL นั้นอ่อนแอมากในการจัดการคุณสมบัติของคอลเลกชันและดัชนี
7. เป็นการยากที่จะควบคุมการดำเนินการของ Action เมื่อ Struts สร้างการดำเนินการ การควบคุมลำดับการดำเนินการจะเป็นเรื่องยากมาก คุณอาจต้องเขียน Servlet ใหม่อีกครั้งเพื่อให้ทราบถึงข้อกำหนดด้านการทำงานของคุณ
8. การประมวลผลก่อนและหลังการดำเนินการ เมื่อ Struts ประมวลผลการดำเนินการจะขึ้นอยู่กับลำดับชั้นของคลาส
9. การสนับสนุนเหตุการณ์ไม่เพียงพอ ใน Struts แบบฟอร์มจะสอดคล้องกับคลาส Action (หรือ DispatchAction) กล่าวอีกนัยหนึ่ง: ใน Struts แบบฟอร์มจะสอดคล้องกับเหตุการณ์เดียวเท่านั้น เรียกว่า application event, application เหตุการณ์เป็นเหตุการณ์ที่มีเนื้อหยาบเมื่อเปรียบเทียบกับเหตุการณ์ส่วนประกอบ
อ็อบเจ็กต์ฟอร์มที่สำคัญของ Struts คืออ็อบเจ็กต์ที่แสดงถึงแอปพลิเคชัน ฟิลด์เหล่านี้ประกอบด้วยฟิลด์อินพุตในแบบฟอร์มเพจ Jsp เนื่องจากฟอร์มสอดคล้องกับเหตุการณ์เมื่อเราต้องการ รายละเอียดได้รับการปรับปรุงให้กับฟิลด์เหล่านี้ในรูปแบบ กล่าวคือ เมื่อฟิลด์หนึ่งสอดคล้องกับเหตุการณ์เดียว มันเป็นไปไม่ได้เลยที่จะใช้ Struts เพียงอย่างเดียว แน่นอนว่าสามารถทำได้โดยการรวม JavaScript เข้าด้วยกัน
บทความนี้มาจากบล็อก CSDN โปรดระบุแหล่งที่มาเมื่อพิมพ์ซ้ำ: http://blog.csdn.net/zhrl0000/archive/2009/12/17/5027947.aspx
-