[D-22] 벼락치기 스프링 이론

다람쥐·2021년 12월 29일
0
post-thumbnail
  • 스프링 MVC 모델
    MVC 모델은 model, view, controller의 약자로 각각 기능을 나눠서 구현하는거. 왜 나눠서 쓰냐~~ 프로그램이 ㅈㄴ 크기 때문이지!!! 하나가지곤 유지&보수&분업 어려우니까 나눠서 만들자고 이런 느낌~!
  • controller : 뭐 제어하는거. 코딩 여기서 젤 마니함
  • model : 데이터들 모이는거. 데이터 형식 지정하고 저장하고 불러오는 작업들에 관한 코드들이 여기서 이뤄짐
  • view : 눈에 보이는거 css, html같은거

    Model : 식료품 창고 관리 및 음식 요리하는 주방장
    View : 주방장이 내온 음식을 플레이팅 하는 직원
    Controller : 주문도 받고 서빙도 하는 매니저


  • 와스=톰캣 실행을 하게되면

    1.톰캣의 환결설정은 conf 폴더에 다 들어가있는데 거기 들어가면 serverl.xml이 있다.
    2.serverl.xml 또 들어가면 우리가 설정한 포트번호 8088이 있는데, 이게 바로 ddoris.icia.co.kr:8088 찍으면 호출하게 해주겠다는 설정임
    3.어쨋거나 8088포트번호와 ddoris.icia.co.kr 호스트 이름으로 들어오면 appBase를 타주는데
    4.우린 aapBase 값을 ""로 지웠기 때문에 톰캣에서 걍 기본값으로 정의 되어있는 카탈리나 폴더에 해당 호스트이름(ddoris.icia.co.kr)의 폴더가 생성됨
    5.근데 그 폴더안에는 Root.xml이 있고 그걸 또 읽어오는데 그 안엔 docBase가 있슴.
    6.docBase에는 또 모든 서버파일들이 기본으로 저장되는 경로가 들어가있음. 우리는 C:/project/webapps/ddoris/src/main/webapp
    7.어쨋거나 웹서버 불러오는 파일들은 다 저기에 저장될꺼고, 스프링에 관한 것들은 다 어디로 흘러들어가느냐..! 바로 webapp 밑에 WEB_INF 폴더에서 web.xml임. 이거 기준으로 스프링 환경설정을 시작함.
    8.web.xml들어가면 또 그안에 root-context.xml을 읽어오는데 그 안의 또 env.xml을 읽어옴
    9.env.xml을 까보면 또 그 안에 오라클이랑 연동할 수 있도록 DB에 관한 정보들이 들어가있고 (db랑 연동하는 환경변수) 히카리변수 뭐 그런 설정들도 들어가잇음
    10.userDao.java와 userDao.xml를 연결시켜주는 맵핑작업 해야하는데 이 둘을 연결시켜서 탬플릿을 만듬. .java와 .xml 헷갈리지말것.
    11.맵핑작업이 긑나면 userService와 같은 서비스 파일들이 모여있는 패키지를 메모리에 올림. ★먼말인지 몰라잉(서비스는 userDao.xml처럼 dao 객체를 사용해서 쿼리에 대한 메소드를 실행하고 결과를 리턴하는 클래스.) 근데 userDao는 인터페이스임. 즉 추상메소드만 정의되어있고 빈 껍데기만 있음.★
    12.어쨋거나 계속해서 디스패쳐 설정을 하는데 이때 이번엔 servlet-context.xml을 불러오면서 url맵핑 시작함. 해당 경로로 이미지,javaScript,sytle sheet등 디렉토리 설정해줌
    13.이것들이 다 메모리에 차곡 차곡 올라가면 와스 빨간불내고 끝남
    14.주소창에 우리 주소치고 들어가면 와스가 기본설정으로 되어있는 docBase인 webapp를 가리킴.
    15.그럼 또 그 기본설정되어있는 index.jsp 찾아가는거임. (웰컴파일 우선순위 리스트)
    16.★먼말이야 잉잉 이때 index.jsp가 해당요청을 dispatcher로 넘겨버리는데 디스패쳐는 해당 요청을 받고 어노테이션을 통해 컨트롤러로 찾아가고. 이때 인터셉터가 요청 쌔빌수잇지만 미리 정의해놓은 servlet-context.xml 파일에 index.jsp는 인터셉터가 무시하도록 설정해놧슴. 결론적으로 바로 어노테이션으로 해당하는 컨트롤러를 찾아감★
    17.indexController에서는 "/index"를 리턴함. 따로 얘는 db연동 할거 없어서 dao 들렸다 가진 않음
    18.요청에 대한 응답을 받은 디스패쳐는 리턴받을 결과를 view Resolver에게 전달함
    19.view Resolver는 미리 정해놓은 prefix와 suffix를 응답으로 받은 "/index" 조합해 해당 jsp 경로를 찾아내고. 그걸 디스패처에 알려주면 디스패쳐가 최종적으로 클라이언트에게 응답을 해줌

추가사항

  • 만약 컨트롤러가 만약 DB까지 사용해야한다면 Controller가 해당하는 Service에게 작업을 넘긴다.
  • 서비스는 (User table 정보 갖고 온다는 하에 가정) 다시 userDao에 있는 userSelect메소드를 통해서 해당 쿼리의 결과를 갖고온다.
  • 그러면 userDao에 가서 살펴봐야하는데 얘는 인터페이스임. 즉 추상메소드로만 이뤄져있고 따로 오버라이등해서 사용해야댄다.
  • but따로 오버라이딩 해준덴없어 왜냐면 userDao.xml에서 해당 메소드를 오버라이딩 해주기 때문이지~! 왜 userDao.xml에 정의하냐면, 쿼리문을 더 편하고 sql디벨로퍼에서 쓴것처럼 자바에서도 편하게 쓰게 할라구
  • userDao.java와 userDao.xml은 root-context.xml에서 맵핑에 대한 부분을 정의해놨고, 그래서 둘이 맵핑 가능한거임. 이제 서비스는 해당 쿼리의 결과를 컨토를러에게 리턴하고 컨트롤러는 해당 결과를 통해 불러올 view의 이름을 리턴한다.
  • 그리고 viewResoler가 해당이름을 형식에 맞게 편집하여 경로를 찾아서 해당 경로의 해당 파일을 보내준다

오늘 글은 여기저기 모든 이들의 지식을 짬뽕시켰다.... 어뜨케 ㅜㅜㅜㅜㅜㅜㅜㅜ 그동안 한다고했는데 로그인페이지 하나 안보고 못하느 내가 넘 한심해..... 오늘의 목표! 무슨일이 있어도 [user&관리자] 로그인&회원가입 만들기!!!

profile
도토리 수집 일기

0개의 댓글