คำตอบปกติของ "สิ่งที่ถูกต้องคืออะไร" หรือ "นี่เป็นวิธีที่ถูกต้องหรือไม่" คือ ..... มันขึ้นอยู่กับ
สิ่งที่ฉันทำได้คือบอกข้อดีและข้อเสียของความคิดเฉพาะ สิ่งที่ตามมาคือความคิดเห็นของฉัน 100% ฉันไม่รู้ข้อกำหนดหรือกฎเกณฑ์เฉพาะใด ๆ ฉันแน่ใจว่าบางคนจะไม่เห็นด้วยกับฉัน
ของ JSP
มาทำงานกันว่าจะใส่ JSP ใน WEB-INF หรือไม่
ข้อดีของการวาง JSP ไว้ใน WEB-INF:
- คุณควบคุมวิธีการดำเนินการของ JSP หากคุณต้องการให้ JSP เป็นพารามิเตอร์และใช้งานได้อีกครั้ง (ซึ่งยากมากกับ JSP ต่อไป) คุณสามารถใส่ไว้ใน WEB-INF และใช้ servlet หรือ Struts action controller หรือตัวควบคุมด้านหน้าอื่น ๆ เพื่อทำการประมวลผลล่วงหน้า จากนั้นผ่านการควบคุมไปยัง JSP ผ่านในบริบทของสภาพแวดล้อมที่เหมาะสม (เช่นแอตทริบิวต์การร้องขอการตรวจสอบความปลอดภัยใด ๆ การสุขาภิบาลพารามิเตอร์ ฯลฯ )
- คุณสามารถเขียนโปรแกรมหรือแม้กระทั่งที่ไฟร์วอลล์หรือการร้องขอ HTTP ระดับบล็อก IDS ไปที่ * .jsp เพื่อลดโอกาสที่บางคนอัพโหลด JSP ไปยังรูทเว็บจากนั้นจะสามารถเรียกใช้โค้ดเป็นเว็บเซิร์ฟเวอร์ได้ พวกเขาจะต้องเขียน JSP ที่มีอยู่มากเกินไป ไม่ได้รับความปลอดภัยมากนัก แต่มันทำให้การประนีประนอมหนักขึ้นเล็กน้อย
- บังคับใช้นิสัยที่ดีเช่น MVC ตัวควบคุมด้านหน้าฟิลเตอร์ servlet การฉีดพึ่งพาเป็นต้นเมื่อเทียบกับ JSP ที่ชั่วร้ายขนาดใหญ่ที่ทำงานทั้งหมดเองและยากที่จะอ่าน / ดูแล
ข้อเสียของการวาง JSP ใน WEB-INF:
- คุณไม่สามารถเข้าถึงหน้านี้ได้โดยตรงแม้ว่าจะเป็นหน้าแบบสแตนด์อโลนที่เรียบง่ายซึ่งไม่ต้องการการประมวลผลล่วงหน้า นี่เป็นเพราะไฟล์ภายใต้ / WEB-INF ไม่สามารถใช้งานได้โดยภาชนะเซิร์ฟเล็ต
ไฟล์คงที่
ในแง่ของไฟล์แบบคงที่ล้วนๆเช่น HTML, รูปภาพ, สไตล์ชีต, จาวาสคริปต์ ฯลฯ วางไฟล์เหล่านั้นไว้ใต้เว็บรูท (my_app ในกรณีของคุณ) แต่ไม่ใช่ / WEB-INF (เพราะไม่สามารถเข้าถึงได้)
เค้าโครงโดยรวม
สำหรับเค้าโครงไดเรกทอรีโดยรวมนั้นขึ้นอยู่กับกระบวนการสร้างของคุณ ฉันชอบจัดเก็บทุกอย่างภายใต้ "src" หรือ "แหล่งที่มา" เพราะทำให้ชัดเจนว่าไฟล์ใดที่ถูกสร้างขึ้นโดยการสร้างและเป็นแหล่งที่บริสุทธิ์ main
ให้คุณแยกรหัสการทดสอบเช่นคลาส junit จากซอร์สโค้ดหลักของคุณซึ่งก็ดีเหมือนกัน แต่ถ้าคุณไม่มีการทดสอบหน่วย (โอ้ไม่!) มันก็เป็นความแตกต่างที่ไร้ความหมาย
ในทางตรงกันข้ามหากคุณไม่ได้จัดการรูทเว็บในระหว่างการสร้าง (เช่นถ้ามันเป็นไฟล์ JSP และสแตติกทั้งหมด) บางทีคุณอาจเก็บมันไว้ที่ระดับบนสุดเช่น/webroot
หรือ/deploy
คัดลอกไฟล์ตามที่ต้องการเช่น ไฟล์. class หรือ. jar มันเป็นนิสัยของมนุษย์ (โดยเฉพาะนักพัฒนา) เพื่อจัดระเบียบมากเกินไป สัญญาณที่ดีของการจัดระเบียบมากคือการมีโฟลเดอร์จำนวนมากโดยมีโฟลเดอร์ย่อยเพียงโฟลเดอร์เดียว
สิ่งที่คุณแสดง
คุณระบุว่าคุณกำลังติดตามการประชุมที่กำหนดโดย maven ดังนั้นหากคุณกำลังใช้ maven อยู่แล้วเพียงแค่ยึดตามเค้าโครงนั้น ไม่มีอะไรผิดปกติกับเค้าโครงที่คุณอธิบาย