[spring]파일 다운로드
·
SPRING
[Spring] 파일 업로드 및 저장
·
SPRING
파일을 올리는 것은 db에 저장하는 것이 아니고 서버나 DISK에 저장하게 된다. 이때, 올려준 파일들은 예를들어, D:\dev\data\(+날짜폴더)와 같은 경로에 배열1.jpg(uuid:avdsae13124lks), 배열2.jpg와 같이 저장된다. Files테이블파일번호글번호파일명실제파일명41배열1.jpgavdsae13124lks51배열2.jpg31nrio32hlk3 그리고 db에는 파일법호, 파일명, 실제 파일명(중복방지)과 같은 파일의 정보에 대해서만 저장하게 된다. 수업시간에는 dao를 mapper와 mybatis로 대체했다.~> 실제 파일은 dao(mapper)가 저장하고 넘어온 값을 받아서 모델에 던져준다 ~> 디스크에 저장하는 일은 service가 하는 것 ~> db와 관련된 일은 dao(..
[spring] Dao와 Service
·
SPRING
서비스 레이어를 통해 주문 접수와 관련된 로직을 처리하면, 배달 시스템의 장애와 관계없이 사용자는 여전히 주문을 할 수 있다. 이처럼 서비스를 사용하면 트랜잭션 관리를 통해 유지 보수성을 높이고 독립적인 테스트가 가능하며, 다양한 컴포넌트(예: 리포지토리, 다른 서비스 등)를 주입받아 사용할 수 있다.더보기트랜잭션이란 일반적으로 여러 단계 또는 작업의 실행을 필요로 하는 단일 프로그램의 실행을 의미    📍Service Layer의 필요성 비즈니스 로직의 분리와 중앙화 : 도메인 객체간의 상호작용을 조정하고, Persistence Layer와 데이터를 주고 받으며, 한 기능 단위의 결과물을 Controller로 전달한다. 즉, Presentation Layer, Persistence Layer, Dom..
[Spring] 페이징(Pagination)
·
SPRING
페이징(paging)은 데이터베이스에서 대량의 데이터를 효율적으로 표시하기 위해 아래와 같이여러 페이지로 나누는 것이다.1. 페이징의 기본 원리총 데이터 수 (Total Record Count): 데이터베이스에서 조회할 수 있는 전체 데이터의 수페이지 크기 (Record Size): 한 페이지에 표시할 데이터(인스턴스)의 수현재 페이지 번호 (Current Page): 사용자가 현재 보고 있는 페이지의 번호전체 페이지 수 (Total Page Count): 위 사진에서 총 8페이지가 있는 것과 같다.2. 코드에서의 페이징 구현페이징은 Pagination 클래스와 SearchVo 클래스에서 처리된다. 2.1. Pagination 클래스startPage: 현재 페이지 그룹의 시작 페이지 번호endPage: ..
[spring]회원정보 수정 - 비밀번호 체크하기
·
SPRING
회원정보를 수정하거나 로그인할때 비밀번호가 일치하는지 확인하는 로직이다. 민감한 정보를 확인할 때 많이 쓰인다. @RequestMapping("/CheckPassword") public ModelAndView checkPassword(String userid, String inputPassword) { // DB에서 사용자 정보 조회 UserVo user = userMapper.getUser(userid); ModelAndView mv = new ModelAndView(); // 입력된 비밀번호가 null이거나 비어있는 경우 if (inputPassword == null || inputPassword.isEmpty()) { mv.setViewNa..
[spring] 회원가입 - 아이디 중복 체크하기
·
SPRING
회원 가입을 할 때 아이디를 생성하게되는데 이때 기존의 사용자와 아이디를 겹치지 않게 해야한다. 이때, 사용하는 중복체크 로직이다. 1.fetch방식 사 // 아이디 중복 체크 @RequestMapping(value = "/CheckDuplication", method = RequestMethod.GET) @ResponseBody public String checkDuplication(String userid) { UserVo user = userMapper.getUser(userid); // DB에서 해당 아이디로 조회 if (user == null) { return "가능"; // 아이디가 존재하지 않으면 가능 } return "불가능"; // 아이디..
[spring] 파라미터 다루기
·
SPRING
🌿파라미터 가져오기 ① // http://localhost/temp?a=hello&b=123 @GetMapping("/temp") // GET public String temp(String a, int b) { System.out.println("a=" + a); //a=hello System.out.println("b=" + (b + 3)); //b=126 return "none"; // none.jsp 없음 404 }넘어오는 파라미터 이름과 동일하기 때문에 @RequestParam이나 request.getParameter이 필요하지 않다.@GetMapping("/temp") : GET 방식@RequestMapping("/temp") : GET, POST 둘 다 받아 들일 수 있음.@Reques..
[spring]스프링 부트 MVC구조
·
SPRING
MVC 구조Model: 데이터와 비즈니스 로직을 처리한다. View: 사용자 인터페이스를 제공하여 데이터를 표시한다. Controller: 사용자 요청을 처리하고 모델과 뷰를 연결한다.1. ModelModel은 애플리케이션의 데이터 구조와 비즈니스 로직을 담당한다.package com.board.menus.vo;@Getter@Setter@ToString@NoArgsConstructor@AllArgsConstructorpublic class MenuVo { @NonNull private String menu_id; private String menu_name; private int menu_seq; } MenuVo.java:메뉴 데이터를 담는 VO(Value Object)이다. 메뉴 I..
[spring] 스프링 부트 Controller
·
SPRING
🌿ControllerMVC는 Model-View-Controller의 약자로, 애플리케이션을 세 가지 주요 구성 요소로 나누어 관리하는 디자인 패턴이다.@Controllerpublic class TestController { @RequestMapping("/") public String home() { return "home"; // /WEB-INF/views/ + home + .jsp }}@Controller는 이 클래스가 Spring MVC의 컨트롤러 역할을 한다는 것을 나타내고, @RequestMapping은 웹 애플리케이션에서 특정 URL 요청(HTTP요청)을 메서드와 연결(mapping)한다. 구현: @Controller 어노테이션이 붙은 TestController 클래스의 home..
[spring] Spring Framework에서의 datasource 설정 및 Spring Boot migration
·
SPRING
Java 코드에서 Bean 생성BasicDataSource dataSource = new BasicDataSource();dataSource.setDriverClassName("oracle.jdbc.OracleDriver");dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:xe");dataSource.setUsername("hr");dataSource.setPassword("1234");이렇게 jsp내에서 직접 datasource를 설정하게되면 한 파일안에서 명확하게 드러나지만 코드가 길어지고 복잡해졌을때 가독성이 떨어지고 객체 간의 dependency를 관리하기 어렵다. 마치 요리 식재료들을 펼쳐놓고 요리를 하는 것과 같다. 요리를 할때 빠르게 재료들을 가져..