ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링
    웹 개발/스프링 2023. 4. 4. 08:42

    Framework란(뼈대,구조)
    어떤 어플리케이션을 만들기 위해서 
    이미 제작되어 사용할 수 있는 도구모음

    웹어플리케이션은 Front(Html,CSS,JavaScript) 와 Back(database,java)을
    웹프레임워크(spring,django)등을 이용해 만든다

    목표
    스프링 부트를 이용한 회원제 게시판 만들기
    java
    java oop
    oracle
    mybatis
    Html, CSS
    JavaScript +JQuery

    디자인 패턴
    -싱글톤 패턴 - 인스턴스 하나만 할당해서 
     그 인스턴스만 계속 반복하는것

    -mvc(ModelViesController) 패턴 
     M=정보를 담고있는 객체(VO,DTO)
     V =사용자에게 보이는 부분
     C = 클->서, 서->클

    자료란?
    확장자가Jar인파일 ARchive 자바 소스코드의 모음

    jdbc(Java DataBase Connectivity) = 
    자바에서 데이터베이스에 접속 / 관리 할 수 있게 해주는
    드라이버(API)
    OJDBC = 오라클기반

    Gradle-Grooby(빌드 도구)
    컴파일과 호출이 정상적으로 되야 실행이 된다.
    이런 빌드를 도와주는 도구 
    : 프로그램 빌드, 외부 라이브러리를 import 해줌

    grooby 는 JVM에서 실행되는 스크립트 언어로
    java와 유사한 문법 구조를 가지며
    java와 호환성이 아주 좋다.

    패키지: 공통점을 가진 소스코드들을 묶어놓은 폴더
    디펜던시(의존성) : 파라미터나 리턴값 또는 지역변수 등으로 다른 객체를 참조하는 것

    의존성은 위험하므로 의존성은 최소화되어야 한다. 왜냐하면 한 객체가 다른 객체에 의존한다는 것은 다른 객체가 변할 때 변경이 전파될 수 있다는 것을 의미하기 때문인데, 이를 의존성 전이라고 한다.

    spring web
    spring boot devtools
    thymeleaf
    설정

    SpringBootProject의 구조
    src-main-java(JAVA Application 소스코드)
    -resources(html파일,js파일,css,각종설정-app,mybatis)
    -MainController생성

    resources 폴더:
    - templates : 어플리케이션의 결과 등을 표시할.html 파일들이 들어감(값이 변함)
    -index.html,display.html(파일 생성)
    - staitc : js,css,각종 이미지 또는 리소스들(로딩 후 변하지 않는 것)
    - application.properties : 스프링부트 어플리케이션의 설정파일(서버포트 지정)
    properties에는 띄어쓰기 없이 적는다
    @(annotation,어노테이션) : 프레임워크 내부에서 해당 클래스 또는 메서드 등의 역할을 정의

    크롬 접속 후 주소창에 localhost.8888/ 입력

    @GetMapping("/") 다시 설명 듣기
    HTTP의 전송방식 (get, post)
    get - 주소에 데이터를 담아서 서버에 보냄
    post -  http요청에 data 담아서 서버에 보냄 (보안높고, 데이터도 많이저장)

    get 방식 :
    localhost:8888/?name=abc&age=20
    주소뒤에 ?key=value형식으로 된 문자열 : QueryString
    쿼리 스트링에 들어가는 key 의 이름은 실행할 때 메서드의 파라미터 이름과 일치해야 한다.
    스프링 프레임워크가 20을 숫자형으로 형변환을 해준다.

    모델 객체 : 클라이언트에 표시할 데이터들을 키와 값으로 저장하는 것
    xmlns:th = "http://www.thymeleaf.org"
    th =prefix 

    rawdata
    raw : a.날것의
    구조   - controller에서 생성자를 만들고 model을 만든다.
    @GetMapping("/html파일")로 어노테이션 지정 후
    new 생성자(Model model) ,생성자의 이름은 html과 같게 만들고
    model.addAttribute("", )를 통해 모델에 추가한다.
    -html파일에서 th:text를 통해 모델에 추가한 데이터를 받아온다 


    th:text = "${MainController에서 모델에 넣은 값}"

    th:each 반복문
    -리스트를 만들고 반복할때
    th:if
    th:unless
    삼항연산자

    자바 컬렉션 프레임워크 list, set, map
    list = index로 데이터 관리(0,1,2,3,)
    map : key =unique 번지수 상관없음
    set : 순서 없음

     

    자바를 사용한 이클립스에서는 쓸일이 오버라이드 외에는 거의없던 @(어노테이션)이 sts에서는 많이 쓰임!
    lombok - vo클래스 빈클래스를 생성할 때 필요한 필드를 이용하는 구성요소
    --생성자 단축키--
    @data
    @no
    @allarg
    @getter
    @setter


    클라이언트(프론트) - 서버(백) 연결 STS
    @controller = 주소 해석
    @service = 자료 가공
    @Repository = DB sql호출 위해 필요(DAO)
    @Mapper = 마이바티스/자바의 인터페이스(mapper.xml호출)

    @Service
    @Autowired 
    개발자가 new로 객체를 만들지 않아도 스프링 컨테이너가 자동으로 객체 생성해줌

     

     스프링 흐름도 


    1. 친구 목록 보기 링크 클릭
    2/ a href = '/showFriendList' 주소로 이동
    MainController에 이어져 있음
    3. 해당 주소에 바인딩(연결,매핑) 된 메서드 실행
    4. 컨트롤러의 메서드 -> 서비스 호출
    5. 서비스의 호출된 메서드 -> DAO를 호출
    6. DAO에 있는 메서드 이름 = Mapper안 SQL의 id(오타 주의)
    7. 매퍼에 있는query실행 -> DB가 결과를 반환
    반환된 결과 DAO -> Service -> Controller->Client순서대로 돌아감

    주의해야할 이름짓기
    1) a href /form action에서 호출하는 주소 = 컨트롤러의 매핑된 주소
    2) DAO에 있는 메서드 이름 과 Mapper의 쿼리 id는 같아야함
    3) 클라이언트 form name 속성 =1)에서 호출한 메서드의 파라미터

    친구 한명 정보 찾기
    1) 친구 정보 목록 보기 화면에서 친구 이름에 링크 달기
    2) 친구 이름을 주소와 함께 서버로 전송
    3) 친구 이름을 서비스로 전달 ->DAO로 전달 (서비스에서 다오 설정해놔서 알아서 해줌)
    4) 컨트롤러에 반환된 Friend객체를 모델에 담기
    5) friendInfo.html에 Friend 객체의 정보 표시

     

     

    '웹 개발 > 스프링' 카테고리의 다른 글

    좋은 객체지향 프로그래밍(Object Oriented Programming)이란  (0) 2024.10.20
    스프링의 역사  (0) 2024.10.07
    VO, DTO, ENTITY?  (0) 2023.06.19
    스프링  (0) 2023.06.01
    ajax  (0) 2023.04.04
Designed by Tistory.