이름은 Servlet01
next > next
Context root는(최상위 경로를 나타낸다.) 나중에 프로젝트명이 아닌 다른 명으로 내보낼 예정...
피니쉬 클릭
프로젝트가 다음과 같이 생성되면 동적 페이지 프로젝트 !
기본 값이 상속의 특성을 띄고 있다.
next > next
아래와 같이 체크
생성되면 주석 모두 삭제(앞으로 주석을 많이 쓸예정)
실행 해보기
화면 출력 !
톰켓 주소 알아보기 !
http://localhost:8081/Servlet01/ex00CreareServlet
// url mapping 값
// : 실제 Servlet 클래스 파일과 문자열 url 경로값을 연결시키는 방법
// --> 경로를 간략하게 표현 가능하다.
// --> 클래스 파일의 이름을 숨김으로써 보안상 유리하다.
@WebServlet("/Create")
public class ex00CreateServlet extends HttpServlet {
// 톰켓 Servlet 파일을 관리해주는 공간이 있다. (예로 main이 없는데 실행이 된다 > ?)
// Servlet Container
// --> HttpServlet이라는 클래스를 상속받은 파일들을 관리하는 공간
// --> 클래스 파일을 생성, 사용, 삭제 등 생명주기를 관리해주는 공간
// --> HTML 파일로 자동으로 변환
// 2. 객체를 직렬화 시키는 코드
// --> 컴퓨터가 파일을 해석하기 위해서는 byte code 형식으로 파일을 변환
// --> 해당하는 객체가 Servlet 파일임을 알려주는 직렬화 코드
// * 없어도 크게 상관은 없음.
private static final long serialVersionUID = 1L;
컴퓨터는 0과1로 구분가능
자바언어를 컴퓨터가 이해가능한 0,1로 바꾸는 것을 직렬화
다시 클래스 파일로 만들어준다 이를 역직렬화
이 파일은 서블릿이니 직렬화시 참고하고 역직렬화시 서블릿이니 참고해야할때 사용하고 없어도 크게 상관은 없음.
// 3. 생성자
// --> 클래스가 생성되는 순간 호출되는 메소드
// 리턴 타입 지정x, 메소드명 == 클래스명, 기본 생성자는 생략 가능
public ex00CreateServlet() {
System.out.println("생성자 호출");
}
// 4. 초기화시키는 메소드
// initialize의 약자
// --> Servlet을 초기화 시키는 메소드
// * 딱 한번만 호출되는 메소드
// --> 자원을 많이 소모하는 메소드이다.
public void init(ServletConfig config) throws ServletException {
System.out.println("초기화 메소드 호출");
}
// 5. Servlet을 ServletContainer에서 삭제시키는 메소드
// --> 딱 한번만 호출되는 메소드
// --> Server가 꺼지는 순간에 호출되는 메소드
public void destroy() {
System.out.println("삭제 메소드 호출");
}
// 6. 요청이 들어오는 순간 실행되는 메소드
// == java의 main method 영역
// 요청이 들어 올때마다 호출되는 메소드(여러번 호출 될 수 있다.)
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("service 메소드 호출");
}
// 7. doGetm doPost 메소드
// : 요청이 들어 올때마다 실행하는 메소드
// doGet --> get 요청 방식으로 들어올때 실행하는 메소드
// doPost --> post 요청 방식으로 들어올때 실행하는 메소드
// **** service --> 요청방식을 구분하지 않고 요청이 들어올 때 실행하는 메소드 ****
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
서버에 요청을 보내는 방식이 여러가지가 있다.
우체국 편지를 일반/등기 처럼 데이터를 요청하는 방식이 있다.
그 방식이라는 것 중에 get, post 방식과 service 방식 있다.
get, post 사용하지 않는 이유는 service는 구분하지 않고 보낼 수 있다.
서버 실행시 생성자와 초기화 한번만 실행
홈페이지를 새로고침할때마다 메소드 호출
서버 종료방법 아래 그림 참조
서버 종료시 콘솔로 삭제 메소드 확인가능.
새로운 서블릿 파일 생성
URL mappings 에서 안에 것을 더블 클릭해서 이름 변경가능 -> 변경하는 것은 URL의 정보를 수정하는 것임.
package sevlet01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/print")
public class ex01print extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request
// --> Client의 요청 정보를 가지고 있는 객체
// reponse
// --> 응답 정보를 가지고 있는 객체
// 우리가 생성하는 객체가 아니라, tomcat에서 메소드의 매개변수로 자동으로 수집
// 화면에 출력하는 방법
// --> 응답을 되돌려 주겠다 !
// tomcat 8버전 이상 charset = UTF-8 -> 표현할 수 있는 범위가 더 많음
// tomcat 7버전 이하 charset = EUC-KR
// 0) 응답 객체 한글 인코딩 수정하기
response.setContentType("text/html;charset=UTF-8");
// 1) 응답 객체로 부터 화면에 출력을 도와주는 도구를 꺼내오기
PrintWriter out = response.getWriter();
// 2) 도구 사용하기
out.print("<h1>");
out.print("2023년도 나흘 남았습니다..!");
out.print("</h1>");
}
}
package sevlet01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ex02Table
*/
@WebServlet("/Table")
public class ex02Table extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 0) 응답 객체 한글 인코딩 수정하기
response.setContentType("text/html;charset=UTF-8");
System.out.println("새로고침 확인용");
// 1) 응답 객체로 부터 화면에 출력을 도와주는 도구를 꺼내오기
PrintWriter out = response.getWriter();
// 2) 도구 사용하기
out.print("<table border=1>"
+ "<tr>");
for (int j = 1; j <= 6; j++) {
out.print("<td>" + j + "</td>");
}
out.print("</tr>"
+ "</table>");
}
}