컨트롤러로 들어온 URL요청을 다른 URL요청으로 돌려야할 때 리다이렉트와 포워드를 사용할 수 있습니다. 이 포스트에서는 스프링부트를 이용하여 그 두가지 방법에 대해 다루어보도록 하겠습니다. 리다이렉트(Redirect) // redirect:을 이용하여 redirect 시킬 수 있다 @GetMapping("/") public String root() { return "redirect:/question/list"; } - 이를 이용하여 사용자가 로그인을 시도했을 때 성공하면 로그인된 상태로 메인페이지로 리다이렉트를 할 수 있습니다. - 리다이렉트 방식은 클라이언트에게 새로운 URL요청을 하도록 합니다. 이는 새로운 HTTP요청을 하게 만드는 것입니다. - 이러한 방식을 사용하는 이유는 클라이언트가 새로고침..
스프링부트에서 @Controller는 기본적으로 반환값을 이용하여 템플릿을 찾습니다. 이러한 템플릿에서 데이터를 담은 자바객체를 활용하기 위해서는 모델이라는 것이 필요합니다. 즉, 모델은 컨트롤러와 뷰 사이를 오가며 데이터를 전달해주는 역할을 합니다. 이번 포스트에서는 모델을 활용하는 방법에 대해 다루어보도록 하겠습니다. 컨트롤러에 모델 주입 @GetMapping("/question/list") public String list(Model model) { List questionList = this.questionRepository.findAll(); model.addAttribute("questionList", questionList); //questionList 내용을 questionList라는 속성..
웹 서비스가 다룰 데이터의 양은 방대하다. 이러한 데이터를 웹서버에서 처리하는 것은 굉장히 부담스러운 일이기에 이러한 데이터에 관한 보관 및 처리는 데이터베이스 서버에 위임한다. 그렇기에 웹서버는 데이터베이스 서버와 끊임없이 소통해야 한다. 이러한 소통은 일반적으로 데이터베이스 언어인 SQL문을 이용하는데 웹서버를 구축하면서 따로 또 데이터베이스 언어를 배우는 것은 어려운 일이다. 그렇기에 SQL문을 자동으로 생성해주어 웹서버의 문법만으로도 데이터베이스와 소통할 수 있도록 하는 기술이 있는데 이를 ORM이라고 한다. ORM을 이용할 경우 프로그래머는 하나의 문법만으로 끊김없이 코드를 작성할 수 있다는 장점이 있다. ORM - 다음은 question이라는 테이블에 데이터를 새로 삽입하는 쿼리이다. inse..
우리는 보통 웹브라우저를 통해 하루에도 수백번씩 서버에 요청을 보내고 있다. 예를 들어 우리가 https://www.naver.com/ 로 요청을 보냈을 때 네이버 서버에서 네이버 홈페이지를 보내주는 것처럼 말이다. 그렇다면 스프링부트 서버에서 URL에 따라 다른 결과값을 전송해주는 역할은 누가 할까? 바로 컨트롤러이다. 페이지 요청이 들어왔을 때 스프링부트는 가장 먼저 해당 페이지에 대한 URL매핑이 있는 지 컨트롤러에 확인한다. 컨트롤러를 이용해 템플릿 파일 리턴하기 import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframew..
src/main/java 디렉토리 - 이 디렉토리 안에서 일반적으로 우리가 스프링 부트 프로젝트를 진행함에 있어 사용될 주요 자바파일들을 작성해준다. - 컨트롤러, 폼, DTO, 엔티티, 서비스 파일등을 작성해준다. Application.java - 이 프로젝트에서 생성한 애플리케이션의 시작을 담당하는 파일이다. 프로젝트를 생성하면 src/main/java 디렉토리 내에 자동으로 생성된다. - 이 파일의 이름은 " + Application.java"이다. 예를 들어, Myboard라는 프로젝트에서는 MyboardApplication.java이다. package com.mysite.myboard; import org.springframework.boot.SpringApplication; import org..
사용자로부터 입력받은 데이터를 우리가 의도한 대로 사용하기 위해서는 적절한 변환이 필요하다. 특히 웹개발에서는 요청된 데이터를 메인모델에 맞게 변환하는 과정이 필수적이다. Spring에서는 WebDataBinder를 통해 사용자로부터 입력받은 데이터를 변환하고 검증할 수 있다. PropertyEditor을 이용한 변환 메서드 - PropertyEditor를 이용하여 데이터를 변환할 수 있다. 이는 양방향 타입 변환을 제공한다. - 보통 컨트롤러내에 변환 메서드를 만들어 데이터를 변환시킨다. @InitBinder public void toDate(WebDataBinder binder) { SimpleDateFromat df = new SimpleDateFormat( [패턴] ); // 예: "yyyy-mm..
@ExceptionHandler - @ExceptionHandler( { [처리할 예외1].class, [처리할 예외2].class ... } ) 어노테이션을 이용하여 예외처리 메서드를 작성해준다. @ExceptionHandler( { [처리할 예외1].class, [처리할 예외2].class ... } ) // 여러개는 {}로 묶어줌 public String catcher( Exception ex, Model m ) { m.addAttribute("ex", ex); return "error"; } - 이때 이 예외에 대한 정보를 모델에 저장해주어야 하는 번거로움이 있는데 JSP의 페이지 속성에 isErrorPage 속성을 부여하여 모델 저장코드를 생략시킬 수 있다. ${ex.message} // Bef..
JSP란? JSP(JavaServer Pages)는 자바를 기반으로 하는 서버 사이드 스크립트 언어입니다. HTML 코드 안에 자바 코드를 삽입하는 방식으로 웹 페이지를 동적으로 생성하게 해줍니다. 서버에서 실행되며, 결과적으로 클라이언트에게는 HTML을 전송하게 됩니다. JSP는 Servlet 기술을 기반으로 하며, 사실상 Servlet의 특별한 형태라고 할 수 있습니다. Servlet은 자바 코드 내에 HTML을 삽입하는 반면, JSP는 HTML 코드 안에 자바 코드를 삽입합니다. 이는 웹 개발자들에게 더 친숙하며 직관적인 개발 방식을 제공합니다. JSP의 작동 원리 클라이언트가 JSP 페이지를 요청합니다. JSP 엔진이 이 요청을 받아들입니다. 만약 이 JSP 페이지가 최초 요청이라면, JSP 엔진..