ㅇ JSP (Java Server Page)
"HTML 코드 내에 JAVA 코드 삽입"
장점
- HTML 중심의 코드 구조이므로 디자인 작업에 바로 사용이 가능하다.
- 설치 과정이 간단하다.
단점
- 프로그램 로직이 복잡할 경우 자바코드의 논리적 구조를 알아보기 힘들다.
- 소스 코드가 공개되며, 프로그래머가 아닌 사람이 소스코드를 건드려 손상시킬 위험성이 높다.
<!-- .jsp 파일 (html 코드를 중심으로 java 코드도 사용할 수 있다.) -->
<%@page contentType="text/html; charset=UTF-8"%>
<%
int num = 3;
int result = num * num;
%>
<html>
<head>
<title>제곱근 프로그램</title>
</head>
<body>
<%= num %> 의 제곱근은? <%= result %>
</body>
</html>
ㅇ Servlet
"JAVA 코드 내에 HTML 코드 삽입"
장점
- 복잡한 프로그램 로직 구현에 적합하다.
- 컴파일 결과(.class)만 있어도 가능하므로 소스 코드를 보호할 수 있다. (밑의 사진 2개 참고)
-> .java 파일을 컴파일해서 나오는 .class 파일만 있어도 실행되기 때문이다.
.java 파일은 소스가 공개되지만, .class 파일은 알아보기 힘들다.
// .java 파일 (소스가 다 공개된다.)
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class AdderServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String str1 = request.getParameter("NUM1");
String str2 = request.getParameter("NUM2");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
int num1 = Integer.parseInt(str1);
int num2 = Integer.parseInt(str2);
int result = num1 + num2;
out.println("<HTML>");
out.println("<HEAD><TITLE>덧셈 프로그램</TITLE></HEAD>");
out.println("<BODY>");
out.printf("%d + %d = %d", num1, num2, result);
out.println("</BODY>");
out.println("</HTML>");
} catch (NumberFormatException e) {
out.println("<HTML>");
out.println("<HEAD><TITLE>덧셈 프로그램 - 에러화면</TITLE></HEAD>");
out.println("<BODY>");
out.println("잘못된 데이터가 입력되었습니다.");
out.println("</BODY>");
out.println("</HTML>");
}
}
}
// .class 파일 (알아보기 어렵다.)
�������4�Y
��*�+�,�-�.�/�0�1�0�2
�3�4�5
�6�7�8�9�:�;
�3�<
�6�=�>�?�@�A�B�C�D�<init>�()V�Code�
LineNumberTable�doGet�R(Ljavax/servlet/http/HttpServletRequest;Ljavax
/servlet/http/HttpServletResponse;)V�
StackMapTable�C�E�F�G�H�@�
Exceptions�I�J�
SourceFile�AdderServlet.java���NUM1�E�K�L�NUM2�text/html;
charset=UTF-8�F�M�N�O�P�Q�R�S�<HTML>�H�T�N�/<HEAD><TITLE>
덧셈 프로그램</TITLE></HEAD>�<BODY>�%d + %d = %d�java/lang/Object�
U�V�W�X�</BODY>�</HTML>�java/lang/NumberFormatException�><HEA
D><TITLE>덧셈 프로그램 - 에러화면</TITLE></HEAD>�-잘못된 데이터가 입력되었
습니다.�AdderServlet�javax/servlet/http/HttpServlet�%javax/servlet/
http/HttpServletRequest�&javax/servlet/http/HttpServletResponse�java
/lang/String�java/io/PrintWriter�javax/servlet/ServletException�j
ava/io/IOException�getParameter�&(Ljava/lang/String;)Ljava/lang/Stri
ng;�setContentType�(Ljava/lang/String;)V� getWriter�()Ljava/io
/PrintWriter;�java/lang/Integer�parseInt�(Ljava/lang/String;)I�
println�valueOf�(I)Ljava/lang/Integer;�printf�<(Ljava/lang/St
ring;[Ljava/lang/Object;)Ljava/io/PrintWriter;�!����������
����������*���������������������
G�� ����+���N+���:,���,���:-��6��6
`6 ��
��
��
��Y��SY��SY��S��W��
��
��/: ��
��
��
��
��
��
���#�~��������Z���� � �
����
�#��)��0��7��>��E��L��p��w��~�"��������
���������� ���!���#����������� �!�"�
"�#��$+�%�����&�'��(����)
단점
- HTML 문서 디자인이 바뀔 때마다 .class 파일을 수정/컴파일/설치 해야 한다.
- 웹 서버를 재가동하는 일을 되풀이해야한다.
※ 이러한 JSP 와 Servlet 을 섞어 사용함으로써 서로의 장단점을 보완할 수있다.
Servlet : 복잡한 로직을 구사하는 코드
JSP : 프로그램의 결과를 보여주는 HTML 중심의 코드