package com.smhrd.servlet;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//URL Mapping
//:실제로 Servlet클래스를 문자열 형태로 경로와 결합해주는 기술
@WebServlet("/exCS")
public class ex00CreatServlet extends HttpServlet {
//데이터를 전송할 때 컴퓨터가 알아볼 수 있게끔 bytecode 변환하는 작업 필요함
//객체 : bytecode바꾸기가 어려움 - 직렬화(byte배열로 만들어주는 개념)
//byte배열을 다시 객체로 변환 - 역직렬화
//어떤 객체를 직렬화할건지 ID로 알려주는 것
private static final long serialVersionUID = 1L;
//1) 생성자 : 객체 생성
public ex00CreatServlet() {
System.out.println("생성자 호출");
}
//2) init : servlet임을 알려주는 메소드(servletness)
//초기값을 성정, 서블릿 객체 생성 후 딱!!! 한 번만 호출!!!!!
//서블릿 객체를 생성하고 초기화하는 작업 ---> 비용이 많이 필요함!!!!
//init 한번만 진행함으로써 자원을 절약!!!
//(다음 요청이 들어올때를 대비해서 객체를 생성하고 메모리에 남겨둠)
public void init(ServletConfig config) throws ServletException {
System.out.println("init 호출");
}
//3) destroy : 서블릿 종료 식 딱 한번 호출되는 메소드
public void destroy() {
System.out.println("destroy 호출");
}
//4) service : client(웹 브라우저)의 요청이 들어왔을 때 요청을 처리해주는 메소드
// java의 main method와 유사하다고 생각해라!!!
// 요청방식(get,post,put, delete)을 전부 처리해줄 수 있는 메소드
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("service 호출");
doGet(request, response);
doPost(request, response);
}
//5) 요청방식에 따라서 다른 로직으로 제어하고 싶다면 하단의 메소드를 사용하면 된다
// doGet ---> get방식 / doPost ----> post방식
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("get방식 호출");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("post방식 호출");
}
}
Request란?
클라이언트의 요청 정보를 서블릿으로 넘겨주기 위한 객체
-요청에 대한 정보를 가진 객체
Response란?
서블릿이 클라이언트에 응답을 보내는데 필요한 객체
-응답에 대한 정보를 가진 객체
ip 주소 확인 해보기
package com.smhrd.servlet;
import java.io.IOException;
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("/ex01")
public class ex01ServletTest extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1.request --> 요청이 들어오면 client의 요청에대한 정보가 담긴 객체
//2.response --> 요청이 들어왔을 때 server에서 응답에 대한 정보를 담을 수 있는 객체
String ip = request.getRemoteAddr();
// --> 요청한 사용자의 ip주소를 가져오는 방법
System.out.println("사용자 ip : " +ip);
}
}