👩💻 BackEnd/🌿 스프링 [Spring]14 [ Spring ] Controller 에서 데이터를 어떤 형태로 받아야하는가? (@RequestBody, @RequestParam) 📌 개인적으로 헷갈려서 작성하게 된 글입니다. 참고자료는 아래 링크 참고 1. form 데이터 @RequestBody- 폼 태그로 데이터를 전송 시 메서드의 변수명 상관이 없지만, @PostMapping("/reply")public string reply(@RequestBody String request){ return "result";} @RequestParam- 폼 태그로 데이터 전송 시 데이터를 저장하는 이름으로 메서드의 변수명을 설정해주어야 함. name 을 전송한다는 가정하에 같은 변수 명으로 받아줘야 한다. @PostMapping("/reply")public string reply(@RequestParam String name){ return "result";}2. Json 형식의 데이터 서.. 2024. 5. 21. [ Spring / fileUpload ] File Upload / File Download 기능 구현 개발 환경 sts 4 mybatis oracle xe 11g요구사항파일 업로드 각 게시글 업로드 시 파일 첨부파일 저장 시 게시글 별로 폴더 새로 생성해서 저장uuid + 업로드 파일 이름 형식으로 파일 저장 파일 다운로드 다운로드 받을 때는 uuid가 없는 원본 파일 이름으로 다운로드 파일 업로드 // 컨트롤러 @PostMapping("/board/write")public String insertBoard(BoardListDto dto, Model model, HttpSession session) throws Exception { Long userId = (Long) session.getAttribute(SessionConst.USER_ID); if (userId == null) { .. 2024. 5. 5. [ Spring / Spring Boot ] 스프링 인터셉터 활용하여 인가작업 처리하기 ✅ 인터셉터를 활용하게 된 배경 게시판 프로젝트를 혼자서 공부하면서 만들던 중 드디어 로그인 이후 사용자의 요청을 구분해야하는 시기가 다가왔다! 로그인한 사용자들은 게시글 작성, 수정, 삭제 등을 할 수 있어야하고, 로그인하지 않은 사용자들은 게시글 조회 등의 작업을 할 수 있다. 그렇게 되면 게시글 작성, 수정, 삭제 로직마다 세션을 확인해서 세션을 갖고 있는 사용자인지 확인을 하는 로직을 아마 매번 넣어야할텐데매요청마다 이러한 로직을 작성하는 것은 코드의 중복을 초래한다. 이를 위해 따로 메서드를 작성하여 해당 메서드를 컨트롤러 단에서 처리할 수 있겠지만그러한 *공통 관심사는 다른 방법으로 해결하는 것이 바람직할 것 같다는 생각이 들었다. 사실 나는 부트캠프에서 프로젝트를 진행하면서 항상 .. 2024. 5. 5. interceptor 3가지 메서드 스프링 MVC 흐름request -> Dispatcher Servlet -> Handler Mapping -> *preHandle -> Controller -> *postHandle -> ViewResolver -> View -> response -> *afterCompletion() - Handler Adapter 의 세가지 메서드 1. preHandle- 컨트롤러 실행 전, 즉 컨트롤러로 요청이 들어가기 전에 수행된다. 그리고 return 시 true 이면 컨트롤러 uri로 가고, false이면 컨트롤러 요청을 하지 않는다. 2. postHandle- 컨트롤러(핸들러) 실행하고 나서 뷰 실행 전, 즉 컨트롤러의 핸들러 처리가 끝나 return 되고 뷰 화면을 response 하기 직전에 post.. 2024. 5. 4. [Spring MVC] spring mvc 실용적인 방식 v2 방법 -> 하나의 컨트롤러에 메서드를 모아서 작성 요청마다 나눴던 컨트롤러의 메서드를 한 클래스에 모아서 사용이 가능하며 동일한 uri 주소는 컨트롤러에 @RequestMapping 어노테이션을 활용하여 클래스 레벨에 작성해주고, 고유한 uri 주소는 메서드 단에 @RequestMapping 어노테이션을 활용하여 작성해주면 컨트롤러가 실행되면서 두 uri 를 조합하여 사용하게 된다. @Controller @RequestMapping("/springmvc/v2/members") public class SpringMemberControllerV2 { private MemberRepository memberRepository = MemberRepository.getInstance(); @RequestMa.. 2024. 1. 19. [Spring MVC] DispatcherServlet / 핸들러 매핑과 핸들러 어댑터 DispatcherServlet Spring MVC도 프론트 컨트롤러 패턴으로 구현되어있다. Spring MVC 의 프론트 컨트롤러가 바로 디스패쳐 서블릭이다. 그리고 DispacherServlet이 바로 Spring MVC 의 핵심이다. DispatcherServlet의 서블릿 등록 DispacherServlet 도 부모 클래스에서 HttpServlet을 상속 받아 사용하고 서블릿으로 동작한다. 스프링 부트는 DispacherServlet 을 서블릿으로 자동으로 등록하면서 모든 경로 (urlPattern="/")에 대해서 매핑한다. 그럼 모든 /로 시작하는 다른 경로는? 이라는 생각이 들텐데 참고로 더 자세한 경로가 우선순위가 높다. 인터페이스 살펴보기 스프링 MVC 의 큰 강점은 DispatcherS.. 2024. 1. 19. 이전 1 2 3 다음