자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다. 서블릿은 JSP와 비슷한 점이 있지만, JSP가 HTML 문서 안에 Java코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다는 차이점이 있다. [출처: 위키백과]
Servlet: HTML in JAVA
JSP: JAVA in HTML
우측 상단에 Open Perspective 클릭
Java EE로 선택
Project Explorer 창에서 우클릭 > Dynamic Web Project + 톰캣 서버 추가(버전에 맞게)
web.xml 설정
servlet 3.0 이상부터는 @Annotation 태그를 사용하여 나타낼 수 있기 때문에 체크하지 않아도 됨
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> 태그 사용
}
}
<%@ 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에 작성하는 것이 훨씬 효율적이다.