[JSP/Servlet] Servlet에 관한 모든 것

JIYEONG YUN·2021년 3월 30일
0

🔖 백엔드 BackEnd

목록 보기
1/3

| Servlet

자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다. 서블릿은 JSP와 비슷한 점이 있지만, JSP가 HTML 문서 안에 Java코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다는 차이점이 있다. [출처: 위키백과]

Servlet: HTML in JAVA
JSP: JAVA in HTML

1. Web Architecture

  • JDBC: 자바와 데이터베이스를 연결 시켜주는 프로토콜
  • ClientServer에 요청(Request)할 때 데이터를 전송하는데 이를 Parameter라 한다.
  • Web Server는 html, css, js등만 처리 가능하다.
  • Server는 Web Server와 데이터베이스 서버와의 연결고리가 필요한데 이를 이어주는 역할을 담당하는 Application Server가 있다. Application Server는 화면에 보이게끔 Presentation 역할과 로직을 처리하는 역할을 맡는다. 로직에는 일반적인 Business Logic과 데이터베이스를 처리하는 Persistence Logic으로 나뉜다.
  • WAS: Web Application Server = (Web Server + Application Server)

2. 세팅

2-1. 이클립스 encoding 세팅하기

  • JSP Files뿐만 아니라 CSS Files, HTML Files, workspace 모두 encoding을 UTF-8로 세팅한다.

2-2. 프로젝트 생성

  1. 우측 상단에 Open Perspective 클릭

  2. Java EE로 선택

  3. Project Explorer 창에서 우클릭 > Dynamic Web Project + 톰캣 서버 추가(버전에 맞게)

  4. web.xml 설정
    servlet 3.0 이상부터는 @Annotation 태그를 사용하여 나타낼 수 있기 때문에 체크하지 않아도 됨

2-3. 프로젝트 구조

  • Java Resources > src 폴더: web application에 필요한 java file 위치
  • Java Resources > Libraries > Apache Tomcat: tomcat library(servlet-api.jar 위치)
  • Java Resources > Libraries > JRE System Library: jre library
  • WebContent > view directory(html, css, js, jsp, image, ...)
  • WebContent > WEB-INF > lib: web application에 필요한 확장 library

3. 코드

3-1. Servlet 코드


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("/hello")
public class Hello extends HttpServlet {
	private static final long serialVersionUID = 1L;

	// GET 방식
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// text를 보낼 거지만 브라우저에서 받을 때는 html로 인식하고, 그 문자는 한글로 되어있다는 것을 의미
		// 방법 - 1
//		response.setContentType("text/html");
//		response.setCharacterEncoding("UTF-8");
		// 방법 - 2
		response.setContentType("text/html;charset=UTF-8");
		
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("	<body>");
		out.println("		Hello!!");
		out.println("		안녕 !!");
		out.println("	</body>");
		out.println("</html>");
		// println으로 엔터를 쳤지만 결과는 공백으로 나오는 이유: 위 prinln()은 코드 상에서의 줄바꿈을 의미
		// html에서 줄바꿈을 하고 싶은 경우에는 <br> 태그 사용
	}

}

3-2. JSP 코드

hello.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>
	Hello!!<br>
	안녕!!
</body>
</html>

아래 경로인
workspace > hello > .metadata > .plugins > org.eclipse.wst.server.core > tmp0 > work > Catallina > localhost > "package" > org > apache > jsp > hello_jsp.java
로 들어가면 jsp 파일이 java 파일로 변환된 것을 볼 수 있다.

즉, jsp파일은 결국 java파일로 변환되어 결국 같은 코드를 작성하는 것과 동일시 된다. html 코드가 길어지는 경우에는 jsp에 작성하는 것이 훨씬 효율적이다.

4. Servlet 동작흐름

  1. data를 얻는다.
  2. Logic - Business, DB 일처리를 한다.
  3. response page를 만든다.

5. Servlet API

profile
나의 '개발'자국 🐾 | [이전 블로그] https://blog.naver.com/yoonjy1106

0개의 댓글