본문 바로가기

WEB

[WEB] Servlet VS JSP

Servlet과 JSP의 각각의 개념을 알아보고 차이점도 알아봅시다.

 

Servlet

  • 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램
  • 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종
  • Servlet은 Java 코드 안에 HTML 포함

 

JSP

  • 자바를 이요한 서버 사이드 스크립트 언어
  • JSP는 HTML안에 Java코드 포함하고 <%...%> 로 둘러싸인 스크립트 영역이 있다.
  • 실행시에 javax.servlet.http.HttpServlet 클래스를 상속받은 Java 소스 코드로 변환한 다음 컴파일되어 실행
  • JSP 파일을 Servlet 클래스로 변환하고 실행시켜 주는 역할을 하는 프로그램을 서블릿 컨테이너라고 부른다. (ex. 톰캣)

 


 

Servlet VS JSP

Servlet

  • Java 코드 안에 HTML 포함
  • Controller에 효율적

JSP

  • HTML안에 Java코드 포함
  • View에 효율적

 


Servlet 예제

package test.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 *  /hello 요청에 대해 응답할 객체를 생성할 클래스 정의하기
 *  
 *  1. HttpServlet 클래스를 상속받는다.
 *  2. service() 메소드를 오버라이드 한다.
 *  3. service() 메소드 안에 원하는 동작을 코딩한다.
 *  4. WEB-INF/web.xml 문서를 Generate 한다.
 *  (프로젝트에 마우스 우클릭 => Java EE Tools => Generate Deployment Descriptor Stub 선택)
 *  5. web.xml 문서안에 우리가 만든 HelloServlet이 어떤 경로 요청이 왔을 때 동작을 할지 설정(맵핑)을 한다.
 */
public class HelloServlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//클라이언트에게 문자열을 출력할 수 있는 객체의 참조값 얻어오기
		PrintWriter pw = resp.getWriter();
		//문자열 두줄 출력하기
		pw.println("hi client");
		pw.println("What are you want?");
		pw.close();
	}
	
}

JSP 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//한글 인코딩 설정
	request.setCharacterEncoding("utf-8");
	
	//post방식 전송되는 파라미터 추출
	String msg = request.getParameter("msg");
	System.out.println("클라이언트가 전송한 문자열 : " +msg);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
okay~
<%=msg %>
</body>
</html>