Spring 6/1 - 2

Teasic KIM·2023년 6월 1일
0

Spring

목록 보기
3/8

Spirng 복습 2일차
차근차근 알아보자
부산 itwillbs 수업을 토대로 작성

HomeController(콘트롤러) 를 좀 더 이해해보자


@Controller
public class HomeController {

	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("Welcome home! The client locale is {}.", locale);
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate );
		
		return "home"; 
		
//		return "index"; // webapp/WEB-INF/views/index.jsp

//		return "test/main"; // webapp/WEB-INF/views/test/main.jsp
	}
	
}

위 콘트롤러 코드를 분석해볼려고 한다.

@Controller
public class HomeController {

Handles requests for the application home page.
웹 요청들을 처리하기 위한 홈페이지 역할을 수행하는 클래스(= 컨트롤러)
=> 반드시 클래스 선언부 이해 @Controller 어노테이션 붙임
=> 컨트롤러 클래스 내에서 메서드 단위로 매핑 가능

	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

	@RequestMapping(value = "/", method = {RequestMethod.GET, RequestMethod.POST}) 
	public String home(Locale locale, Model model) {

@RequestMapping

@RequestMapping 어노테이션을 사용하여 URL 매핑 작업 수행

파라미터 중 value 속성값에 지정된 URL 을 매핑 주소로 사용

method 속성값에 지정된 RequestMethod.xxx 방식을 요청 메서드로 인식
(이 때, method 속성값은 복수개 지정 가능하며, 중괄호로 묶어서 복수개의 방식을 모두 처리)
(ex, @RequestMapping(value = "/", method = RequestMethod.GET)//

@RequestMapping(value = "/", method = {RequestMethod.GET, RequestMethod.POST})

현재 프로젝트에 서블릿 주소("/") 가 GET 방식으로 요청되면 자동으로 home() 메서드가 호출

@RequestMapping(value = "/", method = RequestMethod.GET

현재 프로젝트에 서블릿 주소("/") 가 GET 또는 POST 방식으로 요청되면 자동으로 home() 메서
드가 호출 우리가 Servlet인 배운 doProcess로 한거랑 똑같다

		logger.info("Welcome home! The client locale is {}.", locale);
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate );
		
		return "home";
	}

꿀팁 : GET 방식으로 "/main" 서블릿 주소가 요청되면 WEB-INF/views/index.jsp
페이지로 포워딩(Dispathcer) 메서드부터 만들고 @RequestMapping 을 만들면 자동완성이 잘 됨


매핑 ! 연습 (Servlet -> View)

	<article>
		<h1>메인 페이지</h1>
		<hr>
		<h3><a href="BoardWriteForm">글쓰기</a></h3>
		<h3><a href="BoardList">글목록</a></h3>
	</article>

위와 같은 뷰페이지의 글쓰기를 와 글목록 매핑을 해보자

controller 패키지와 BoardController(글쓰기) 콘트롤러 생성

BoardController 코드


@Controller
public class BoardController {

	@GetMapping("BoardWriteForm")
	public String writeForm() {
		
		return "test2/board_write_form";
	}
    

"BoardWriteForm" 서블릿 요청(GET) 시
test2 디렉토리의 board_write_form.jsp 페이지로 포워딩


매핑(Mapping) 연습 (Servlet -> Servlet)

"BoardWritePro" 서블릿 요청(POST) 시
폼 파라미터5개 (작성자, 패스워드, 제목, 내용 파일명) 전달받아 출력 후
"BoardList"(있다고 가정) 서블릿 요청(리다이렉트) 를 해보자
리다이렉트는 서블릿->서블릿 할때 사용됨


"BoardWritePro" 서블릿 요청(POST) 시
폼 파라미터5개 (작성자, 패스워드, 제목, 내용 파일명) 전달받아 출력 방법 2가지

1) 파라미터에 직접 value 입력하는 방법

	@PostMapping("BoardWritePro") 
	public String writePro(@RequestParam String board_name, @RequestParam String board_pass... @RequestParam String file 등등) {
		System.out.println("글쓴이 : " + board_name);
		System.out.println("비밀번호 : " + board_pass);
		..
        ..
        System.out.println("파일명 : " + board_file);
		return "redirect:/BoardList"; // 서블릿 -> 서블릿 redirect
	}

2) 파라미터에 map 을 이용하는 방법

	@PostMapping("BoardWritePro") 
	public String writePro(@RequestParam Map<String, String> map) {
		System.out.println("글쓴이 : " + map.get("board_name"));
		System.out.println("비밀번호 : " + map.get("board_pass"));
		System.out.println("제목 : " + map.get("board_subject"));
		System.out.println("내용 : " + map.get("board_content"));
		System.out.println("파일명 : " + map.get("board_file"));
		
		return "redirect:/BoardList";  // 서블릿 -> 서블릿 redirect
	} 

BoardList" 서블릿 요청(GET) 시 글 목록 출력!" 메세지 콘솔에 출력 후
test2/board_list.jsp 으로 매핑

	@GetMapping("BoardList")
	public String list() {
		System.out.println("글 목록 출력!");
		
		return "test2/board_list.jsp";
	}
}

위에서 지금까지 배운 MVC 로 진행할거 같으면

BoardService service = new BoardService(); // 하나로 다 집어넣어서 메서드로 집어넣어라
boolean isWriteSuccess = servic.registBoard(board);

BoardDAO dao = new BoardDAO();
int insertCount =dao.insertBoard(baord);

이런식으로 진행해라 (하지만 추후에 배울 스프링이 더 편해서 안하는게 좋다.)

profile
백엔드 개발자 지망생

0개의 댓글