Merhaba arkadaşlar, bu yazımda xml dosyası ile yaptığımız configurationları Java tabanlı ve notasyon kullanarak uygulayacağız. Şimdi kod kısmına geçelim ve kodları anlamaya çalışalım:
HelloController.java
1 2 3 4 5 6 7 8 9 10 |
@RequestMapping("/02_controller") @Controller public class HelloController { @GetMapping(value="/hello") public String getHello(ModelMap model) { model.addAttribute("test","GetMapping example"); return "hello"; } } |
@GetMapping,notasyonu @RequestMapping(method=RequestMethod.GET) anlamına gelmektedir. Aralarında bir fark yoktur.
@PostMapping, notasyonu @RequestMapping(method=RequestMethod.POST) anlamına gelmektedir. Kod okunabilirliğini arttırabilmek için kullanılabilirler.
Şimdi configuration dosyası olarak kullanacağımız sınıfımızı inceleyelim:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
@EnableWebMvc @Configuration @ComponentScan(basePackages = { "_02_com.furkan" }) public class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); } @Bean public ViewResolver viewResolver() { InternalResourceViewResolver bean = new InternalResourceViewResolver(); bean.setViewClass(JstlView.class); bean.setPrefix("/WEB-INF/_02_jsp/"); bean.setSuffix(".jsp"); return bean; } } |
@EnableMvc, Projenin MVC projesi olduğunu belirtiyor.
@Configuration, Bu sınıfın Config için kullanılacağını belirtiyor. Yani spring-servlet.xml dosyası olarak bu sınıfımızı tanıyacak.
@ComponentScan, <context:component-scan> elementinin yaptigi isi yapar. @Autowired notasyonunun çalışmasını sağlar. İşaretlenmiş beanlerin yönetimini sağlamak için kullanılan notasyonları tanır. Bu işlemleri yapmak için paket belirtilmiş olmalıdır.
ViewResolver metodu aşağıdaki xml parçasının yerine kullanılır ve aynı işlemi yapar.
1 2 3 4 5 |
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/_01_jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> |
Şimdi web.xml dosyamız yerine kullanacağımız sınıfımızı inceleyelim:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class HelloWorldInitializer implements WebApplicationInitializer { @Override public void onStartup(final ServletContext sc) throws ServletException { AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); root.scan("_02_com.furkan"); sc.addListener(new ContextLoaderListener(root)); ServletRegistration.Dynamic appServlet = sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext())); appServlet.setLoadOnStartup(1); appServlet.addMapping("/"); } } |
mvc, adı ile dispatcherServlet tanımlanmıştır. Servlet’in map adreside belirtilmiştir. Şimdi jsp sayfamıza bakalım:
1 2 3 4 5 6 7 8 9 10 11 12 |
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <h1>HelloPage Example = ${test}</h1> </body> </html> |
Çıktı:
Görüldüğü üzere /hello sayfamızı açtık ve model nesnesi sayesinde veri yazdırmış olduk.
Burada yazımı bitiriyorum diğer yazılarımda görüşmek üzere…