2018년 3월 24일 토요일

WAS관련 정리

Web.xml(배포기술자)

  • Web.xml은 서블릿 스펙이다. 어떤 WAS든 설정은 같다.
  • context root설정은 WAS마다 다르다.
  • <url-pattern>/</url-pattern> 은 context root 경로 이하인 경로 설정이다.
  • 스프링 웹 MVC 대한 대부분의 설정이 자동으로 되는 것이 많다.
  • @Configuration를 선언할때 사용

Tomcat 과 웹어플리케이션

  • context root는 웹 어플리케이션마다 유일한 값을 가져야 한다. 
  • WAS마다 설정방법이 다르다. (Tomcat, Weblogic 등에 따라 다르다.) 
  • tomcat은 ROOT 라는 이름의 웹어플리케이션은 '/' 로 인식을 한다. 나머지는 보통 폴더이름이 context root가 된다.
  • http://localhost:8080/hello.jsp (ROOT 웹어플리케이션의 hello.jsp) http://localhost:8080/manager/hello.jsp (manager 웹 어플리케이션의 hello.jsp)
  • 예를들어 게시판 웹 어플리케이션(board)가 있다고 가정해보자
    board폴더 안의 내용을 jar로 묶어서 하나의 파일로 만든다. board.war 로 만든다. 
  • tomcat에 배포하려면 어떻게 해야할까?
    webapps폴더에 복사를 하고 tomcat을 실행한다. tomcat이 실행되면서 board.war의 압축을 해제한다. webapps ---- board ---- war파일의 내용이 묶인것이 풀린다.
    http://localhost:8080/board/list.jsp 이런식으로 호출을 할 수 있다.
  • 웹어플리케이션 구조를 가지고 있다면 war파일로 묶지 않아도 구동될수 있다. war파일은 전달하기 편하기 위해 사용.
  • WEB-INF, classes, lib 폴더는 고정적으로 필수로 있다.

intellij 에서 Tomcat

  • target폴더만들어서 배포 시킨후 실행한다.
  • maven프로젝트 인것을 intellij가 자동으로 인식한다.
  • intellij에서 tomcat local로 실행하도록 설정하고 프로젝트 이름이 mvcexam 일 경우에 intellij가 관리하는 tomcat에 IntelliJ가 board.war파일을 만들어서 배포한다.(deploy)

톰캣 디렉토리 구조



  • /bin
    - 톰캣 실행시 사용하는 스크립트 모아둔 곳
  • /conf
    - 웹 어플리케이션에 필요한 설정 파일 모아둔 곳
  • /lib
    - 톰캣에서 사용하는 라이브러리 모아둔곳
  • /logs
    - 오류 정보를 기록하는 로그 디렉토리
  • /temp
    - 임시 파일을 저장하는 디렉토리
  • /webapps
    - 웹 어플리케이션 배포하는 디렉토리
  • /work
    - JSP가 Servlet 컴파일되는 디렉토리

client -----> was 에게 요청시 담기는 정보

  • 요청정보
  • GET / http1.1 : RequestMethod 방식
  • 헤더정보(파라미터, 쿠키, 브라우저정보, 언어정보, OS ....)
  • 빈줄
  • 바디

Tomcat 에서 Web.xml

  • conf 폴더에서 Web.xml
    • DefaultServlet
      • path 가 '/' 이면 모든 요청을 처리한다는 뜻이다.
      • path '/' 설정은 DefaultServlet이 처리 로 예약되어있다.
      • 정적인 파일을 처리하는 로직이 있다.
    • x.jsp, x.jspx 확장자 형식은 JSPSerlvet이 처리한다.


    프로젝트 에서 Web.xml

    • Web.xml 설정
      • path를 '/' 으로 설정하면 설정이 오버라이딩 되어 DispatcherServlet가 모든요청을 처리한다.
        • @Controller, @RestController(@RequestMapping)을 처리한다.
      • 동적인 파일은 DispatcherServlet 에서 처리하고 정적인 파일은 DefaultServlet에서 처리 하도록 한다.(DefaultServlet에 구현되어있기 떄문에 사용)
      • 요청이 오면 DispatcherServlet이 요청받은 path를 찾고나서 없으면 Tomcat의 DefaultServlet한테 넘기고 없으면 404에러가 나온다.(설정을 해야한다.)
      • DispatcherServlet에서 요청온 path를 찾고 없으면 DefaultServlet을 사용한다는 설정
        • 
          @Configuration
          @EnableWebMvc
          @ComponentScan(basePackages = { "com.test.controller" })
          public class WebMvcContextConfiguration extends WebMvcConfigurerAdapter {
          
              // default servlet handler를 사용하게 합니다. 
              @Override
              public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
                  configurer.enable();
              }
          }
    Share:

    0 개의 댓글:

    댓글 쓰기