상세 컨텐츠

본문 제목

37) Spring MVC 연결(JAVA)

Today's Study/Academy

by Hello-Melo 2022. 5. 24. 16:27

본문

22.5.24

 

 - 대망의 Spring 첫시간

 - Spring MVC를 처음 연결해보는 법을 학습 및 연습

 - 이 부분을 먼저 이해하고 넘어가면 코어 등 다른 부분을 더 쉽게 이해 가능

 - Spring MVC는 JAVA를 이용한 방법과 web.xml을 이용한 방법 2가지가 있는데 여기서는

    Java를 이용한 방법을 공부

 

 

1. WebConfig

package com.jafa.config;

import javax.servlet.Filter;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

	@Override
	protected Class<?>[] getRootConfigClasses() {
		return new Class[] {RootConfig.class};
		}

	@Override
	protected Class<?>[] getServletConfigClasses() {
		return new Class[] {ServletConfig.class};
	}

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

	@Override
	protected Filter[] getServletFilters() {
		CharacterEncodingFilter filter = new CharacterEncodingFilter();
		filter.setEncoding("utf-8");
		return new Filter[] {filter};
	}
	
	
}

 - webconfig는  web.xml과 같은 역할을 함

 - Root와 Servlet Config를 넣어 주고, ServletMapping을 사용하기 위해 선언해줌

 - post 방식으로 보낸 부분을 한글처리 하기 위해 Filter도 WebConfig에서 처리해줌.

 

2. RootConfig

package com.jafa.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.jafa.controller.HomeController;

@Configuration
public class RootConfig {

	@Bean
	public HomeController homeController() {
		return new HomeController();
	}
	
}

 

 - Configuration을 어노테이션해줘서 설정을 해당 하는 부분임을 선언하고, Bean을 어노테이션해서

   해당 컨트롤러가 스프링에서 인식을 할 수 있게 해준다.

 - RootConfig에서 Bean으로 설정해주면 ServletConfig에서 ComponentScan에 설정해주지 않아도 인식함

 

 

3. ServletConfig

 

package com.jafa.config;

import org.apache.catalina.filters.SetCharacterEncodingFilter;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@EnableWebMvc
@ComponentScan
public class ServletConfig implements WebMvcConfigurer {

	@Override
	public void configureViewResolvers(ViewResolverRegistry registry) {
		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();

		viewResolver.setPrefix("/WEB-INF/views/");
		viewResolver.setSuffix(".jsp");
		registry.viewResolver(viewResolver);

	}

	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");

	}

}

 - EnableWebMvc를 어노테이션하고, ComponentScan으로 패키지 위치를 설정하여 Bean화 하여 스프링이 인식하게 함

 - InternalResourceViewResolver 타입으로 지역변수를 설정하여, Prefix로 파일의 주소를, Suffix로 파일의 확장자를 설정

 - addResourceHandlers 메서드를 통해 정적 메서드인 html/css등을 설정해줄 수 있음.

 

 

 

4. Controller

package com.jafa.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.jafa.dto.Member;

@Controller
public class HomeController {
	
	@GetMapping("/")
		public String home(){
		return "welcome";
	}

	@GetMapping("/member/list")
	public String memberList(@RequestParam(value="id", defaultValue = "킹본값") String id) {
		System.out.println(id);
		return "memberList";
	}
	
	@GetMapping("/member/join")
	public String joinForm() {
		return "join";
	}
	
	@PostMapping("/member/join")
	public String join(Member member) {
		System.out.println(member.getId());
		System.out.println(member.getEmail());
		System.out.println(member.getPw());
		return "redirect:/";
		
	}	
}

 - Controller를 어노테이션해서 스프링에서 해당 클래스가 컨트롤러임을 인식시킴

 -  get/postmapping을 통해 주소를 선언해주어 웹상에서 jsp와 연결시킴

 

---

 

여기까지!

 

 

 

 

 

 

 

관련글 더보기

댓글 영역