ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서블릿 기초 형태
    백엔드/서블릿&JSP 2021. 1. 13. 11:09

    2020/10/30 - [백엔드/서블릿&JSP] - 서블릿(Servlet)이란?

     

    서블릿(Servlet)이란?

    서블릿이란? 자바를 기반으로 하는 웹페이지를 동적으로 만들어줄 수 있는 일종의 프로그램을 말한다. 사실 좁게 보면 서블릿이란 위와 같은 기능을 하는 자바의 클래스를 뜻한다. 넓게보면 위

    sgcomputer.tistory.com

    위와 같이 이전에 서블릿에 관한 글을 썼다.

     

    간단하게 요약하면 서블릿을 만들기 위해서 HttpServlet 추상 클래스 상속 받아야 한다.

     

    그리고 해당 추상 클래스는 서블릿 구동에 필요한 모든 것(init(), destroy(), service())이 이미 구현되있다.

     

    그래서 아래와 같이 이클립스를 통해 서블릿을 생성하면 아래와 같은 기본 폼이 제공된다.

     

    그리고 이걸 바로 사용해주면 된다.

     

    package com.my.web;
    
    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("/Test")
    public class Test extends HttpServlet {
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    			throws ServletException, IOException 
    	{ }
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    			throws ServletException, IOException 
    	{ }
    
    }

     

    간단히 설명하면 Http 요청 방식은 Get, Post으로 나뉘는데 어떤 방식으로 request가 전달되느냐에 따라서

     

    서로 담당하는 메서드가 달라진다.

     

    조금 조잡하지만 그림으로 표현하면 아래와 같다.

     

     

    아래와 같은 코드가 있다고 가정해보자.

     

    package com.my.web;
    
    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("/test")
    public class Test extends HttpServlet {
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    			throws ServletException, IOException {
    		
    		response.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html; charset=UTF-8");
    		
    		PrintWriter out = response.getWriter();
    		out.print("get으로 요청함");
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    			throws ServletException, IOException {
    		
    		response.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html; charset=UTF-8");
    		
    		PrintWriter out = response.getWriter();
    		out.print("post로 요청함");
    	}
    
    }
    

     

    해당 서블릿은 get으로 requst가 들어오면 "get으로 요청함"이라는 메시지가 뜬다.

     

    post로 request가 들어오면 "post로 요청함"이라는 메시지가 뜬다.

     

    아래와 같이 request를 get방식으로 전달하는 JSP 파일이 있다고 가정해보자.

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<form action="test" method="get">
    		<input type="submit">
    	</form>
    </body>
    </html>

     

    브라우저 상에서 실행하면 아래와 같은 버튼이 생성된다.

     

     

    버튼을 누르면 get방식으로 reqeust를 전송하고 서블릿의 get메서드가 실행된다. 결과는 아래와 같다.

     

     

    이제 method를 post로 바꿔서 버튼을 누르면 request가 post방식으로 전달되도록 하자.

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<form action="test" method="post">
    		<input type="submit">
    	</form>
    </body>
    </html>

     

    결과물은 아래와 같다.

     

     

    서블릿은 하나 뿐이지만 서블릿 안에 메서드를 통해서 클라이언트의 요청을 분류해서 처리가 가능하다.

Designed by Tistory.