apply plugin: 'java'
apply plugin: 'war'
sourceCompatibility = 1.8
targetCompatibility = 1.8
compileJava.options.encoding = "UTF-8"
repositories {
mavenCentral()
}
dependencies {
providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
providedRuntime 'javax.servlet.jsp:javax.servlet.jsp-api:2.3.2-b02'
compile 'javax.servlet:jstl:1.2'
compile 'org.springframework:spring-webmvc:5.0.2.RELEASE'
}
task wrapper(type: Wrapper) {
gradleVersion = '6.9.1'
}
Maven의 pom.xml 또는 build.gradle 중 자기가 쓸 것으로
웹 어플리케이션을 개발하는데 필요한 설정을 한다.
그 뒤에 만들면서 테스트 해야하기 때문에 웹 서버를 할 톰캣 설치를 하고 등록한다. ( 구글에 넘쳐나서 설명 안 함.)
스프링 MVC를 위한 설정
1. 서버 설정
@Configuration
@EnableWebMvc //스프링 MVC 설정 활성화
public class MvcConfig implements WebMvcConfigurer {
// 주소를 www.naver.com/로 주었을 때 올바르게 처리하기 위한 설정.
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
// 컨트롤러의 실행결과 보여주기 위한 설정
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/view/", ".jsp");
}
}
스프링 MVC 를 사용하려면 설정이 엄청 미친듯이 많은데 ,
설정을 자동으로 해주는게 @EnableWebMvc 어노테이션이다. 라고 까지만 알고 있고 나중에 배움.
web.xml 에 DispatcherServlet 설정
MVC가 웹 요청을 처리하려면 DispatcherServlet을 통해서 웹 요청을 받아야한다.
이를 위해서 web.xml 파일에 DispatcherServlet을 등록한다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</init-param>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
config.MvcConfig
config.ControllerConfig
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
//인코딩 필터 , 매핑 생략
</web-app>
DispatcherServlet은 초기화 과정에서
contextConfiguration 초기화 파라미터에 지정한 설정 파일( 여기선 MvcConfig , ControllerConfig)을 이용해
컨테이너를 초기화한다.
2. C : Controller 설정
//이게 컨트롤러다 라고 지정해주는 것.
@Controller
public class HelloController {
///hello로 들어온 요청을 여기서 처리할거다라는 것
@GetMapping("/hello")
public String hello(Model model,
//url 요청 ( get일 때에는 ) 에 name으로 된 값을 가져와서 String name에 넣겠다.
@RequestParam(value = "name", required = false) String name) {
//greeting이란 모델의 속성에 안녕하세요 + 이름을 넣겠다.
model.addAttribute("greeting", "안녕하세요, " + name);
return "hello";
}
}
컨트롤러는 웹 요청을 처리하고 결과를 뷰에 전달하는 스프링 빈 객체이다.
@Configuration
public class ControllerConfig {
@Bean
public HelloController helloController() {
return new HelloController();
}
}
컨트롤러를 구현했으면 컨트롤러를 스프링 빈으로 등록해서 관리되게 하자.
HelloController를 실제 페이지로 생각해보면
위의 사진에서 url을 보면 naver.com/webtoon/list?titleId=748105이다.
해석해보면, 네이버 서비스고 , webtoon 프로젝튼데 ,
@GetMapping("/list") 이고(/list로 온 값을 처리하는 컨트롤러고),
titleId 라는 RequestParam의 파라미터로 748105의 값을 가지는 것이다.
3. V : JSP 구현 ( 뷰 )
뷰는 사용자가 직접 만지게 되는 화면이다.
보통 스프링에서는 jsp나 thymeleaf 로 구현한다.
'스터디 발표 내용' 카테고리의 다른 글
14. MVC 날짜 값 변환 , @PathVariable , Exception 처리 (0) | 2021.11.28 |
---|---|
11. 요청 매핑 , 커맨드 객체 , 리다이렉트 , 폼 태그 , 모델 (0) | 2021.11.21 |
7 . 스프링의 핵심 기술 !! - AOP 프로그래밍 (0) | 2021.11.14 |
스프링 라이프 사이클 (0) | 2021.11.11 |
스프링 DI (0) | 2021.11.07 |