Written by
Poogle
on
on
2021.08.30 TIL
새롭게 배운 것 Done
운동
- 오전 러닝 2.5km
독서
알고리즘
코딩
WAS (Web Application Server)
- DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server
- HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)
- Web Container or Servlet Container
- 오픈소스 WAS ex. Tomcat, … -> war 파일 deploy
- 상용 WAS ex. JBoss, …
- 웹 서버는 WAS 앞단에서 할 일을 하고 인증이나 인가 같은 내용, DB를 통해 가져오는 동적 파일 같은 것들이 WAS(즉 웹 서버 뒷 단)에서 요청울 통해 받아오게 됨
Servlet
- (Java Servlet ->) Jakarta Servlet, Interface
- A servlet is a small Java program that runs within a Web Server. Servlets receive and respond to requests from Web clients, usualy across HTTP, and HyperText Transfer Protocol.
- Serlvet이 실제로 동작하기 위해서는 WAS가 꼭 필요
- 하나의 규칙, 규약
MVC 패턴
- Model View Controller
- 관심사를 분리시킨 것
- Model: 자바 객체 또는 POJO, 데이터를 담고 있음
- View: 모델이 담고 있는 데이터를 시각적으로 보여주는 역할
- Controller: 모델과 뷰를 연결하기 위한 매개체, 사용자의 입력/요청을 받아 모델의 상태를 변경해주고 그에 따른 뷰를 업데이트
- 컨테이너는 한 개의 서블릿에서 여러 개의 요청을 처리하기 위해 여러 개의 쓰레드를 사용
- 매 요청마다 서블릿 객체가 만들어지는건 아님(객체 단위로 상태를 들고 있는게 아님)
- 같은 클라이언트가 여러 번 요청을 보내면? 요청마다 쓰레드 한 개
Web.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>org.prgrms.kdt.servlet.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
톰캣 설치 후 설정
@WebServlet(value = "/*", loadOnStartup = 1)
- 미리 로딩하는 것
public class KdtWebApplicationInitializer implements WebApplicationInitializer {
private static final Logger logger = LoggerFactory.getLogger(KdtWebApplicationInitializer.class);
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
logger.info("starting server...");
var servletRegistration = servletContext.addServlet("test", new TestServlet());
servletRegistration.addMapping("/*");
servletRegistration.setLoadOnStartup(1);
}
}
- 이렇게 할 수도 있음
참고
깨달은 점 FEELING
- 직접 WAS에 띄우는 실습을 하다가 톰캣 설치가 계속 잘 안돼서 애를 먹었다. 사실 이렇게 하는 경우는 거의 레거시한 환경말고는 없고 보통은 임베디드 톰캣을 많이 쓴다고 하니 너무 스트레스 받지는 말아야겠다! 이게 왜 안돼…이게 왜… 의 하루…!