-
TIL #30 - Servlet, 톰캣프로그래밍/TIL(국비과정) 2020. 5. 25. 19:01
* 톰캣 이란?
3 tier 방식 웹사이트는 위와 같이 클라이언트가 서버에게 데이터를 요청하고 서버는 DB에서 데이터를 받아 클라이언트에게 응답을 해준다.
이런 서버의 역할을 하는 것이 JSP, Servlet 이고 JSP, Servlet은 Component 이다.
Component는 Container에 담겨서 화면에 떠야하기 때문에 항상 Component들을 담아줄 Container가 필요한데
이 두 컴포넌트를 담는 Container가 바로 Tomcat이다.
톰캣은 bin/Tomcat9.exe를 통해 실행한다.
톰캣을 실행하면 아래와 같은 터미널이 뜬다.
이 터미널을 끄면 서버도 함께 꺼지므로 사용하는 동안은 계속 열어두어야한다
또한 톰캣 서버를 통해 띄우고자 하는 파일들은 전부 Tomcat 9.0\webapps\ROOT 안에 넣는다.
그리고 접속시엔 http://localhost:8080/파일명 을 통해 접속할 수 있다.
Root는 톰캣이 알아서 찾아주기 때문에 직접 기입할 필요가 없다.
단, ROOT가 아닌 경우에는 써줘야한다.
*Servlet
서블렛은 웹에서 실행하는 프로그램으로 html in Java 라고 할 수 있다.
서블릿의 특징으로는 main() 메서드가 없고, 주기함수이며 반드시 public 이여야 한다는 것이다.
또한 전부 톰캣이란 서버에 의해 움직이기 때문에 new를 해주지 않는다.
*주기함수
주기함수는 아래와 같은 순서로 실행된다.
init() > service() - doGet()/doPost() > destroy() service는 추상메서드로 그것을 구체화 한 것이 doGet과 doPost이다.
init()은 맨 처음에 딱 한 번만 호출되고 service()는 클라이언트가 요청시 마다 호출된다.
또한 init()은 콜백함수로 톰캣으로 인해 콜백되어 움직인다.
마지막으로 주기함수가 끝날 때엔 destroy()를 실행하여 끝을 맺는다.
*Service
1. get 방식
아무런 표기가 없다면 무조건 get 방식으로 통한다.
get 방식은 Query String(주소표시줄) 을 통해서 이동하고 이동하는 데이터가 눈에 보인다.
아래와 같이 네이버로 고구마를 검색했을 때 고구마라는 String 값이 Query를 통해서 이동하는 것을 볼 수 있다.
하지만 get 방식으로 클래스 객체를 넘겨줄 수는 없다.
2. post 방식
post 방식은 클라이언트가 요청시에만 적용된다.
내부적으로 페이지 단위로 이동하며 이동하는 데이터가 보이지 않는다.
주로 대량의 데이터를 전송할 때 사용한다.
아래는 서블릿의 주기함수를 확인할 수 있는 코드이며, Java 코드 안에 html 코드가 들어있는 형식이다.
package com.hello; // 톰캣 서버 안에 저장하도록 한다. import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; public class HelloServlet extends HttpServlet{ public void init(){ // 톰캣으로 인해 콜백으로 init이 움직여짐 System.out.println("init()..."); } /* public static void main(String[] args) { new HelloServelt } void main 안씀 new 안함 : 전부 톰캣이란 서버에 의해서 움직여지기 때문 */ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ System.out.println("doGet()..."); // 응답페이지 만들기 resp.setContentType("text/html;charset=UTF-8"); // java 내에 html 코드 넣기 PrintWriter out = resp.getWriter(); // 웹으로 가게 한다 out.println("<html>"); // 해당 문자열이 웹으로 가게 된다 out.println("<head>"); out.println("<title>Servlet</title>"); out.println("<body>"); out.println("Hello Servlet!<br>"); out.println("안녕하세요 서블릿<br>"); out.println("</body>"); out.println("</head>"); out.println("</html>"); } public void destroy(){ System.out.println("destroy()...."); } }
Java 안에 html 코드를 넣기 위해서는 response 값을 정해주어야한다.
resp.setContentType("text/html;charset=UTF-8");
위와 같이 ContentType을 html로 set 해주면 이 이후로 나오는 코드가 html 형식이라는 것을 표시할 수 있다.
그런 후 html 코드들을 웹으로 가게 만들어 웹에 띄운다.
PrintWriter out = resp.getWriter();
'프로그래밍 > TIL(국비과정)' 카테고리의 다른 글
TIL #32 - Servlet, 톰캣을 이용한 회원가입 _ 회원가입 (0) 2020.05.28 TIL #31 - Servlet, 톰캣 (2) (0) 2020.05.26 TIL #29 - 데이터베이스 Update (0) 2020.05.13 TIL #28 - 데이터베이스 Insert (0) 2020.05.11 TIL #27 - 채팅 프로그램 (2) 2020.05.06