22.5.24
- 대망의 Spring 첫시간
- Spring MVC를 처음 연결해보는 법을 학습 및 연습
- 이 부분을 먼저 이해하고 넘어가면 코어 등 다른 부분을 더 쉽게 이해 가능
- Spring MVC는 JAVA를 이용한 방법과 web.xml을 이용한 방법 2가지가 있는데 여기서는
Java를 이용한 방법을 공부
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에서 처리해줌.
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에 설정해주지 않아도 인식함
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등을 설정해줄 수 있음.
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와 연결시킴
---
여기까지!
39) web.xml로 Spring 연결하기 (0) | 2022.05.25 |
---|---|
38) Eclipse <-> Git hub 연결하기 (0) | 2022.05.25 |
36) DBConnection 연결과 Web-Servlet 설정 (0) | 2022.05.18 |
35) EL(표현언어) 메소드 호출(JSTL 인코딩 디코딩) (0) | 2022.05.17 |
34) 세션 (0) | 2022.05.17 |
댓글 영역