Spring MVC @PathVariable Kullanımı

Spring MVC
Spring Dersleri

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ı

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Burak KUTBAY 2010 - 2019
%d blogcu bunu beğendi: