Sobes.tech
Junior

Spring MVC ishga tushishi uchun nima kerak?

sobes.tech AI

AIdan javob

Spring MVC-ni ishga tushirish uchun:

  1. Veb-server: Apache Tomcat, Jetty yoki Undertow kabi servlet konteyneri, veb-ilovani joylashtirish uchun.
  2. Spring konfiguratsiyasi:
    • XML yoki Java konfiguratsiyasi (annotatsiyalar yordamida), Spring komponentlarini (kontrollerlar, xizmatlar, repositorylar va boshqalar) va ularning o‘zaro bog‘liqligini belgilaydi.
    • DispatcherServlet konfiguratsiyasi web.xml faylida yoki Java konfiguratsiyasi (AbstractAnnotationConfigDispatcherServletInitializer) yordamida amalga oshiriladi. DispatcherServlet Spring MVC ning front controller bo‘lib, so‘rovlarni mos keladigan handlerlarga delegatsiya qiladi.
  3. Maven/Gradle bog‘liqliklari: Kerakli bog‘liqliklarni qurilish fayliga qo‘shish (pom.xml yoki build.gradle):
    • spring-webmvc: Spring MVC uchun asosiy bog‘liqlik.
    • Shablon motorlari uchun bog‘liqliklar (Thymeleaf, JSP, FreeMarker va boshqalar) shablonlar ishlatilganda.
    • Validatsiya uchun bog‘liqliklar (masalan, Hibernate Validator).
    • JSON/XML uchun bog‘liqliklar (masalan, Jackson yoki JAXB).
  4. Kontrollerlar: @Controller yoki @RestController annotatsiyalari bilan belgilangan sinflar, @RequestMapping, @GetMapping, @PostMapping va boshqalar bilan belgilangan metodlar, kiruvchi HTTP so‘rovlarini ishlash uchun.

Minimal Java konfiguratsiya misoli:

// WebMvcConfig.java
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebMvcConfig implements WebMvcConfigurer {
    // Qo‘shimcha konfiguratsiya, agar kerak bo‘lsa (masalan, ViewResolver konfiguratsiyasi)
}

DispatcherServletni Java konfiguratsiyasi yordamida sozlash misoli:

// AppInitializer.java
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null; // Asosiy kontekstlar yo‘q
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[]{WebMvcConfig.class}; // Spring MVC konfiguratsiyasi
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"}; // DispatcherServlet URLga moslashtiriladi
    }
}

Oddiy kontroler misoli:

// HelloController.java
@Controller
public class HelloController {

    @GetMapping("/hello")
    public String hello(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) {
        model.addAttribute("name", name);
        return "hello"; // Ko‘rinish nomi (masalan, hello.jsp yoki hello.html)
    }
}

Xulosa qilib aytganda, Spring MVC veb-ilova (JAR yoki WAR) sifatida barcha kerakli komponentlar va konfiguratsiyalar bilan veb-serverda joylashtiriladi. DispatcherServlet ishga tushirilganda, u kiruvchi so‘rovlarni qabul qilib, ularni mos keladigan kontrolerlar bilan bog‘laydi va ishlashni boshlaydi.