מדריך אביב MVC

1. סקירה כללית

זה פשוט מדריך MVC באביב מראה כיצד להקים פרויקט MVC של Spring, הן עם תצורה מבוססת Java והן עם תצורת XML.

תלות Maven עבור פרויקט Spring MVC מתוארת בפירוט במאמר תלות MVC באביב.

2. מהו אביב MVC?

כמו שהשם מרמז, זהו מודול של מסגרת האביב העוסקת בתבנית Model-View-Controller, או MVC. הוא משלב את כל היתרונות של דפוס ה- MVC עם הנוחות של האביב.

קפיץ מיישם את MVC עם תבנית הבקר הקדמי באמצעות שלה DispatcherServlet.

בקצרה, ה- DispatcherServlet משמש כבקר הראשי לניתוב בקשות ליעדם המיועד. המודל אינו אלא נתוני היישום שלנו, והתצוגה מיוצגת על ידי כל אחד ממנועי התבנית השונים. אנו נסתכל על JSPs בדוגמה שלנו בעוד זמן מה.

3. אביב MVC באמצעות תצורת Java

כדי לאפשר תמיכה ב- Spring MVC באמצעות מחלקת תצורה של Java, כל שעלינו לעשות הוא תוסיף את ה @EnableWebMvc ביאור:

@EnableWebMvc @ תצורה מחלקה ציבורית WebConfig {/// ...}

זה יגדיר את התמיכה הבסיסית הדרושה לנו עבור פרויקט MVC, כגון רישום בקרים ומיפויים, ממירי סוגים, תמיכה באימות, ממירי הודעות וטיפול בחריגים.

אם אנו רוצים להתאים אישית את התצורה הזו, עלינו ליישם את ה- WebMvcConfigurer מִמְשָׁק:

@EnableWebMvc @ תצורה מחלקה ציבורית WebConfig מיישם את WebMvcConfigurer {@Override public void addViewControllers (RegisterControllerRegistry registry) {registry.addViewController ("/"). SetViewName ("index"); } @Bean Public ViewResolver viewResolver () {InternalResourceViewResolver שעועית = חדש InternalResourceViewResolver (); bean.setViewClass (JstlView.class); bean.setPrefix ("/ WEB-INF / view /"); bean.setSuffix (". jsp"); שעועית להחזיר; }}

בדוגמה זו רשמנו a ViewResolver שעועית שתחזור .jsp נופים מה / WEB-INF / תצוגה מַדרִיך.

חשוב מאוד כאן זה אנו יכולים לרשום בקרי תצוגה שיוצרים מיפוי ישיר בין כתובת האתר ושם התצוגה משתמש ב ViewControllerRegistry. בדרך זו, אין צורך בשום בקר בין השניים.

אם אנו רוצים להגדיר ולסרוק גם שיעורי בקרים, נוכל להוסיף את ה- @ComponentScan ביאור עם החבילה המכילה את הבקרים:

@EnableWebMvc @Configuration @ComponentScan (basePackages = {"com.baeldung.web.controller"}) WebConfig בכיתה ציבורית מיישם את WebMvcConfigurer {// ...}

כדי לאתחל יישום שטוען תצורה זו, אנו זקוקים גם למחלקת אתחול:

מחלקה ציבורית MainWebAppInitializer מיישם את WebApplicationInitializer {@Override public void onStartup (final ServletContext sc) זורק ServletException {AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext (); root.scan ("com.baeldung"); sc.addListener (ContextLoaderListener חדש (שורש)); ServletRegistration.Dynamic appServlet = sc.addServlet ("mvc", DispatcherServlet חדש (GenericWebApplicationContext חדש ())); appServlet.setLoadOnStartup (1); appServlet.addMapping ("/"); }}

שים לב שעבור גרסאות קודמות לאביב 5, עלינו להשתמש ב- WebMvcConfigurerAdapter class במקום הממשק.

4. אביב MVC באמצעות תצורת XML

לחלופין לתצורת Java לעיל, אנו יכולים גם להשתמש בתצורת XML בלבד:

אם אנו רוצים להשתמש בתצורת XML גרידא, נצטרך להוסיף גם web.xml כדי לאתחל את היישום. לפרטים נוספים אודות גישה זו, עיין במאמר הקודם שלנו.

5. בקר ותצוגות

בואו נסתכל על דוגמה לבקר בסיסי:

@Controller class class SampleController {@GetMapping ("/ sample") public String showForm () {return "sample"; }}

ומשאב ה- jsp המקביל הוא sample.jsp קוֹבֶץ:

קבצי התצוגה מבוססי JSP ממוקמים תחת /WEB-INF התיקייה של הפרויקט, כך שהם נגישים רק לתשתית Spring ולא באמצעות גישה ישירה לכתובת אתר.

6. אביב MVC עם מגף

Spring Boot הוא תוספת לפלטפורמת Spring שמאפשרת מאוד להתחיל בעבודה וליצור יישומים עצמאיים בכיתה. מַגָף לא נועד להחליף את האביב, אלא להפוך את העבודה איתו למהירה וקלה יותר.

6.1. מתחילים למגף האביב

המסגרת החדשה מספקת תלות נוחה למתחילים - שהם מתארי תלות שיכול להכניס את כל הטכנולוגיה הדרושה לפונקציונליות מסוימת.

לאלה יש יתרון שאיננו צריכים עוד לציין גרסה לכל תלות אלא מאפשרים למתנע לנהל תלות עבורנו.

הדרך המהירה ביותר להתחיל היא על ידי הוספת האב-אתחול-האב pom.xml:

 org.springframework.boot spring-boot-starter-parent 2.2.2.RELEASE 

זה ידאג לניהול תלות.

6.2. נקודת כניסה למגף האביב

כל יישום שנבנה באמצעות מגף אביב צריך רק להגדיר את נקודת הכניסה הראשית. זה בדרך כלל שיעור Java עם ה- רָאשִׁי שיטה, ביאור עם @ SpringBootApplication:

@SpringBootApplication מחלקה ציבורית יישום {public static void main (String [] args) {SpringApplication.run (Application.class, args); }} 

ביאור זה מוסיף את ההערות הנוספות הבאות:

  • @תְצוּרָה - המסמן את הכיתה כמקור להגדרות שעועית
  • @EnableAutoConfiguration - שמורה למסגרת להוסיף שעועית בהתבסס על התלות בכביש השביל באופן אוטומטי
  • @ComponentScan - הסורק אחר תצורות ושעועית באותה חבילה כמו ה- יישום בכיתה ומטה

בעזרת Spring Boot, אנו יכולים להגדיר חזית באמצעות Thymeleaf או JSP ללא שימוש ב- ViewResolver, כהגדרתם בסעיף 3. על ידי הוספת אביב-אתחול-התחלה-טימילית תלות ב- pom.xml שלנו, Thymeleaf מופעלת, ואין צורך בתצורה נוספת.

קוד המקור של אפליקציית האתחול זמין, כמו תמיד, ב- GitHub.

לבסוף, אם אתם מחפשים להתחיל עם Spring Boot, עיינו במבוא ההתייחסות שלנו כאן.

7. מסקנה

בדוגמה זו הגדרנו פרויקט Spring MVC פשוט ופונקציונלי, באמצעות תצורת Java.

היישום של מדריך MVC פשוט זה באביב ניתן למצוא בפרויקט GitHub.

כאשר הפרויקט פועל באופן מקומי, sample.jsp ניתן לגשת אליו בכתובת // localhost: 8080 / spring-mvc-basics / sample.