Java/SPRING

자바[SPRING] MVC패턴 Hello.do 기본기

백엔드 신입사원( soft 5.10 입사) 2021. 12. 21. 17:12
반응형

Hello.do?

  컨트롤러에서 /hello.do가 실행되면 원하던 설정 내용이 실행되게 하기 위해 SPRING를 사용해봅니다.  SPRING를 사용하기 위해 lib파일에 라이브러리를 집어넣게 되며 클라이언트의 요청을 받을 DispatcherServlet를 web.xml 파일에 설정해주면 됩니다. 아래 사진은 라이브러리와 web.xml 설정 내용입니다. 내용은 간단하니 바로 넘어가겠습니다.

**. do

요청이 오면 servlet name의 dispatcher이 servlet-class경로에 DispatcherServlet가 실행되도록 잡아주게 됩니다.

DispatcherServlet 설정
  DispatcherServlet는 기본적으로 WEB Application의 /WEB-INF/ 디렉터리에 위치한 [Servlet이름]-servlet.xml 파일로부터 SPRING 설정 정보를 읽어 오게 됩니다. 다음과 같이 web.xml 파일을 설정했다면, dispatcher-servlet.xml 파일로부터 설정 정보를 읽어 오게 되는 것입니다.

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">
       

<bean id="helloController" class="madvirus.spring.controller.HelloController" />
<!-- 컨트롤러의 해당 경로  -->

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/" />
<property name="suffix" value=".jsp"/>
</bean>
<!-- prefix프로퍼티와 suffix프로퍼티의 값이 각각 /WEB-INF/view/와 .jsp로 설정
ViewResolver이 /WEB-INF/view/뷰이름.jsp를 뷰 jsp로 사용한다는것을 의미 
즉 앞에 hellocontroller에서 뷰 이름으로 hello를 리턴하면 사용되는 뷰 파일은 /WEB-INF/view/hello.jsp파일이된다.
다른 컨트롤러에도 이렇게 연결쌉가능!
  -->
  
 
</beans>

 

클라이언트의 요청을 처리할 컨트롤러를 작성.

package madvirus.spring.controller;
import java.util.Calendar;

import org.springframework.stereotype.Controller; // 임포트
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller // Annotation(어노텐션) 컨트롤러를 수행하기위해 컨트롤러를 구현한 Class라는것을 지정시킴.
public class HelloController {

@RequestMapping("/hello.do") // 매핑으로 잡혀있는 OO.do를 사용하기위해 /hello.do가 요청되면 
public ModelAndView hello() { // 메소드를 만들어 hello에서 ModelAndView를 받는다.
ModelAndView mav = new ModelAndView(); // ModelAndView를 생성하고
mav.setViewName("hello"); // 출력할 모델을 지정  뷰의 이름으로는 hello를 지정했고,
mav.addObject("greeting", getGreeting());// greeting라는 이름으로  String타입의 이름getGreeting과 값을 추가 
return mav; // mav를 리턴한다.
}

private String getGreeting() { // getgreeting이라는 스트링의 값으로 
int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); //int타입의 hour이름으로  시간을 잡아주고 
if(hour >= 6 && hour <= 10) { // if 문으로 내용을 돌린다. 6 ~ 10시 
return "좋은 아침입니다."; // 어떤것을 리턴할지.
} else if(hour >= 12 && hour <= 15) { // 12 ~ 15시
return "점심 식사는 하셨나요?";
} else if (hour >= 18 && hour <= 22) { // 18 ~ 22시
return "좋은 밤 되세요.";
}
return "안녕하세요"; // 그외 
}

}

 

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>인사말</title>
</head>
<body>
인사말 : <strong>${greeting }</strong>
<%-- 
HelloController가 돌아가면서 /hello.do가 요청되면  hello.jsp가 실행되도록 만들고 greeting의 내용을 EL로 가져와서 보여준다.
SPRING이 돌아가는 원리는 
 1.Dispatcher Servlet가 모든 요청을 받는다.
 2.Dispatcher Servlet는 HandlerMapping에 어떤걸 처리하는지 물어보고 
 3.처리된 결과를 Controller에서 알려주고 
 4.View Resolver는 어떤걸 보여줘야한다알려주고
 5.View에서 그걸 꺼내 보여준다.
--%>
</body>
</html>

출력 결과

반응형