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>
'WEB' 카테고리의 다른 글
[WEB] GET과 POST의 차이 (0) | 2021.11.26 |
---|---|
[WEB] Servlet을 사용하여 동적 웹 사이트 만들어보기 (0) | 2021.11.26 |
[WEB] bootstrap 사용해보기 (0) | 2021.11.17 |
[WEB] eclipse 자동완성기능 emmet 설치하기 (0) | 2021.11.17 |
[WEB] 아파치 톰캣 ,이클립스 설치하기 / 한글 인코딩 설정 (0) | 2021.11.17 |