본문 바로가기
Spring

Spring(스프링 프로젝트 구조 , GetController) , @RestController, @RequestMapping, @RequestParam, @GetMapping

by code2772 2022. 12. 8.

[ 목차 ]

    728x90
    반응형

      스프링 프로젝트 구조

    스프링 프로젝트 구조
    src > main > java : 자바  코드
    src > main > resources > application.properties : 설정정보
    src > main > resources > static : 정적 컨텐츠(html, css, js)
    src > main > resources > templates : 동적 템플릿
    
    src > test > java : 테스트용 자바코드 작성
    
    build.gradle : 버전 관리
    
    테이블 정의서
    (엔티티정의서)
    - 보통 엑셀로 작성하며 테이블 및 컬럼명과 데이터 타입등을 작성해놓은 문서
    
    ERD(Entity Relationship Diagram)
    - 개체-관계 모델, 테이블간의 관계를 설명해주는 다이어그램
    - DB의 구조를 한눈에 파악할 수 있음
    

    ✔ 포트 변경방법 -> application.properties -> server.port (원하는 포트로 변경)

    ✔ GetContoller 

    package com.koreait.day2.controller;
    
    import com.koreait.day2.model.Member;
    import org.springframework.web.bind.annotation.*;
    
    @RestController// url을 호출할 수 있도록 해주는 기능
    @RequestMapping("/api") // http://localgost:8888/api, 어노테이션
    public class GetContoller {
    
    
        // http://localhost:8888/api/getmethod
    
        @RequestMapping(method= RequestMethod.GET, path = "/getmethod" ) // ==  @GetMapping("/getparameter2")
        // get으로 호출해야 들어온다
        public String getMethod(){
            return "getMethod() 호출!";
        }

    @RestController : @Controller에 @ResponseBody가 결합 및 Json 형태로 객체 데이터를 반환하고 이를 통해 URL을 호출할 수  있도록 해주는 기능을 대략적으로 의미한다.

    @RequestMapping : URL을 요청하면 Controller에서 처리 방식 정의 -> 이 요청을 메서드와 메핑하기 위해 사용

     

    ✔ @RequestMapping (method = RequestMethod.GET, path = "/getmethod") 와  @GetMapping("/getmethod") 동일기능

    @RequestMapping(method = RequestMethod.GET, path ="getparameter1")
    public String getParameter1(@RequestParam String userid, @RequestParam String userpw){
        System.out.println("userid : " + userid );
        System.out.println("userpw : " + userpw );
        return "getParameter1() 호출!";
    }
    
    // http://localhost:8888/api/getparameter1?userid=apple&userpw=1234
    @GetMapping("/getparameter2")
    public String getParameter2(@RequestParam String userid, @RequestParam(name="userpw") String password){
        System.out.println("userid : " + userid );
        System.out.println("userpw : " + password );
        return "getParameter2() 호출!";
    }

    ✔ @RequestParam(가져올 데이터의 이름)[데이타입][가져올 데이터 담을 변수]

        @RequestParam(name = "userpw")      String        password             와 동일

     

    또는 변수를 저장하는 @RequestParam String userid와 같은 방식으로 사용이 가능하다.

     

     

    ✔ 많은 변수를 저장해야 하는 경우 

    // http://localhost:8888/api/getmultiparameter1?userid=apple&userpw=1234&name=김사과&gender=여자&email=apple@asplle.com&age=20
    @GetMapping("getmultiparameter1")
    public String getMultiparameter1(
           @RequestParam String userid,
            @RequestParam String userpw,
            @RequestParam String name,
            @RequestParam String gender,
            @RequestParam String email,
            @RequestParam String age
    ){
        System.out.println("userid : " + userid );
        System.out.println("userpw : " + userpw );
        System.out.println("name : " + name );
        System.out.println("gender : " + gender );
        System.out.println("email : " + email );
        System.out.println("age : " + age );
        return "getmultiparameter1() 호출!";
    }

    위와 같이 일일히 변수들을 지정하기 힘듬

     

    따로 맴버 클래스를 만들어 두어 짧은 코드로 해결할 수 있음

    package com.koreait.day2.model;
    
    public class Member {
        private String userid;
        private String userpw;
        private String name;
        private String gender;
        private String email;
        private int age;
    
        public String getUserid() {
            return userid;
        }
    
        public void setUserid(String userid) {
            this.userid = userid;
        }
    
        public String getUserpw() {
            return userpw;
        }
    
        public void setUserpw(String userpw) {
            this.userpw = userpw;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Member{" +
                    "userid='" + userid + '\'' +
                    ", userpw='" + userpw + '\'' +
                    ", name='" + name + '\'' +
                    ", gender='" + gender + '\'' +
                    ", email='" + email + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    

    ✔ 기존 생성한 Member이용 -> (Member member) 선언 후 member을 반환 및 출력하면 간단하게 사용이 가능

    // http://localhost:8888/api/getmultiparameter2?userid=apple&userpw=1234&name=김사과&gender=여자&email=apple@asplle.com&age=20
    @GetMapping("/getmultiparameter2")
    public Member getMultiParameter2(Member member){
        System.out.println(member);
        return member;
    }

     

    반응형