서블릿(Servlet) 공부

까만호랭·2023년 8월 16일
1
Centered Image

서블릿이란?

자바를 기반으로 하는 웹페이지를 동적으로 만들어줄 수 있는 것



정적 : 페이지의 전, 후 화면 넘어가는 동작
동적 : 원하는 결과를 보기 위해 동작을 수행하고 처리하는 것(ex. 검색 후 나오는 화면)

인터넷 사용자가 많아지고 다양한 기능을 구사하는 웹들이 많아지자 사용자들은 정적인 자료가 아닌 필요에 맞는 동적인 자료를 제공받고 싶어 사용자 요구에 맞춰 동적으로 반응하는 웹 페이지를 만들어진 것이 서블릿이다.

자바와 서블릿을 활용해 실습해보기

public class HelloServlet extends HttpServlet {
	private HelloSub helloSub;
	
	@Override
	public void init() throws ServletException {
	
		helloSub = new HelloSub();
	}
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("get 요청 접수 완료");
		
		response.setContentType("text/html;charset=utf-8"); 
		PrintWriter out = response.getWriter(); 
		out.println("<html><body>");
		out.println("<h1>환영합니다. 서블릿 방문을...</h1>");
		int a=10, b=20;
		
		int tot=myCalc(a,b);
		out.println("두 수의 합 : "+"<b>"+tot+"</b>");
		
		String result = helloSub.display(5);
		out.println(result);
		
		out.println("<body></body>");
		out.close();		
	}
	
	@Override
	public void destroy() {
		// 웹 서비스가 종료될 때 딱 한번 수행
		helloSub = null; // 초기화
	}
	
	private int myCalc(int a, int b) {
		return a+b;
	}
}

init( ) 메소드

  • HelloServlet 최초 요청 시 딱 한번 수행하며 자바의 생성자와 비슷한 개념이다.
  • init( ) 안쓰면 계속 프로그램 실행 시 객체가 생성되서 메모리 잡아먹는다.

  • service( ) 메소드

  • service는 get으로 할지 post로 할지 선택이 가능하다. ex) if문을 통해..
  • protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// get, post 모두 처리
    		System.out.println("service 처리");
    		String nai = request.getParameter("age");
    		if(nai.equals("33")) {
    			doGet(request, response);
    		}else {
    			doPost(request, response);
    		}
    	}

    doGet( ) 메소드

  • : Get방식에서 호출되는 메소드. 데이터가 URL에 포함

  • Centered Image

    doPost( )와 다르게 쓸때 사용


    doPost( ) 메소드

  • Post방식에서 호출되는 메서드. 데이터가 HTML header에 포함

  • Centered Image

    많은 양의 자료를 클라이언트가 서버로 넘길때 , 보안에 신경쓸때 post방식


    destroy( )

  • 웹 서비스가 종료될 때 딱 한번 수행한다.
  • destroy() 메서드는 초기화되어 실행 중인 servlet을 제거하는 역할을 한다.
  • 정리

  • service, doGet, doPost 메소드를 사용할 떄 request, response 객체를 생성해야한다.
  • PrintWriter out = response.getWriter();
    자바의 싱글톤패턴과 비슷한 개념. (new를 사용하지 않고 getWriter()를 사용하여 out이라는 객체를 만들어준 것)
  • profile
    남들과 함께 발자국을 남기는 까만호랭

    2개의 댓글

    comment-user-thumbnail
    2023년 8월 16일

    글 잘 봤습니다.

    1개의 답글