Spring MVC @PathVariable Kullanımı
Spring MVC Dersleri‘ne devam ediyoruz.
Spring MVC PathVariable anotasyonunun kullanımına bakacağız. PathVariable anotasyonu url de bulunan değişkenleri ilgili metodlara aktararak ilgili metodun işlemi yapmasını sağlamaktayız. Bu değişkenler bir ya da birden fazla olabilmektedir. Örnek verecek olursak;
universite/1 universite/2 universite/3 universite/4 havadurumu/izmir/1 havadurumu/istanbul/4 havadurumu/ankara/9
gibi urllerde bu değerlere karşılık gelen cevapları göstereceğiz. Önceki dersimizde gördümüz RequestMapping anotasyonunda (bknz: RequestMapping Anotasyonu) her url cevabı için bu anotasyonu yazmamız mümkün değil. O yüzden sadece bir aynı metoda farklı değerlere göre cevap döndürmek istediğimizde @PathVariable anostasyonu kullanılmaktadır.
PathVariable anotasyonunun nasıl işlediğine bir örnek vererek bakalım. Bu örneğimizde iki farklı metodumuzu farklı değişkenler ve url ile çağırıp kullanacağız.
@Controller public class Controller{ @GetMapping("/universite/{uniid}") @ResponseBody public String getUniById(@PathVariable("uniid") String uniid, Model model) { return "Cevap - Universite= " + uniid; } @GetMapping("/havadurumu/{sehir}/{ilce}") @ResponseBody public String getByHavaDurumu(@PathVariable("ilce") String[] ilce, @PathVariable("sehir") List<String> sehir) { return "Cevap - ;" + " ilce= " + ilce + " " + " sehir = " + sehir; } }
Yukarıdaki controllerımızda bir metod ve mapping edilecek URL’i ve devamında gelecek değişkenlerimizi yazıyoruz. İkinci metodumuzda ise birden fazla değişken ekleyerek cevap almayı başarabilmekteyiz.
Spring konfigürasyon dosyamız
@Configuration @EnableWebMvc @ComponentScan(basePackages = { "com.burakkutbay.blog.spring.controller" }) public class WebConfig extends WebMvcConfigurerAdapter { @Bean public InternalResourceViewResolver resolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setViewClass(JstlView.class); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); return resolver; } }
Bağımlıklarımıza bakalım.
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.7.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>javax.servlet.jsp.jstl-api</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
Şimdi programımız çalıştıracak olan ana classımızı yazalım.
public class Web extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { return new Class[] {}; } @Override protected Class<?>[] getServletConfigClasses() { return new Class[] { WebConfig.class }; } @Override protected String[] getServletMappings() { return new String[] { "/" }; } }
Bu işlemlerden sonra belirttiğimiz urllerde ilgili değişkenleri doldurarak web sayfasından cevap geldiğini görebilmekteyiz.
Önceki Ders: Request Mapping Kullanımı | Spring MVC Dersleri | Sonraki Ders: Form İşlemleri ModelAttribute Kullanımı |
No Comment! Be the first one.