[Day 19 | JSP] JSP 기본 문법 요소

y♡ding·2024년 11월 7일
0

데브코스 TIL

목록 보기
128/163

JSP는 HTML 코드 내에 Java 코드를 삽입할 수 있도록 여러 가지 특별한 태그를 제공합니다. 이 태그들을 통해 Java 코드를 작성하고, 동적인 콘텐츠를 HTML에 삽입할 수 있습니다.

1. 스크립트릿(Scriptlet) <% ... %>

스크립트릿은 JSP에서 Java 코드를 작성할 때 사용되는 기본 문법입니다. <%와 %> 사이에 Java 코드를 삽입하여, 서버에서 실행할 수 있습니다.

<%
    String name = "홍길동";
    out.println("안녕하세요, " + name + "님!");
%>

2. 표현식(Expression) <%= ... %>

표현식은 값을 출력할 때 사용하며, 표현식 내의 값을 HTML로 바로 출력합니다. out.println() 메서드 없이 간단하게 사용할 수 있습니다.

<p>현재 시간: <%= new java.util.Date() %></p>

3. 선언문(Declaration) <%! ... %>

선언문은 JSP 페이지에서 사용될 메서드나 변수를 선언할 때 사용합니다. 선언된 변수나 메서드는 JSP 페이지 내에서 사용할 수 있습니다.

<%! 
    public String getGreeting() {
        return "Hello, JSP!";
    }
%>

<p><%= getGreeting() %></p>

4. 주석(Comment) <%-- ... --%>

JSP 주석은 HTML 소스 코드에 포함되지 않고 서버에서만 보이는 주석입니다.

<%-- 이 부분은 주석으로, HTML 소스에 나타나지 않습니다 --%>

5. JSP 페이지 디렉티브 (Directives) <%@ ... %>

디렉티브는 JSP 페이지의 설정을 정의하는 데 사용됩니다. JSP 페이지 상단에 작성되며, 페이지의 속성을 설정하거나 다른 리소스를 포함하는 등의 역할을 합니다.

page 디렉티브

page 디렉티브는 JSP 페이지의 전반적인 속성을 정의합니다.

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
  • contentType: 응답의 MIME 타입을 설정합니다.
  • language: 사용 언어를 지정합니다 (주로 java).

include 디렉티브

include 디렉티브는 다른 JSP 페이지나 HTML 파일을 포함할 때 사용됩니다. 주로 헤더나 푸터와 같은 공통 영역을 포함할 때 유용합니다.

<%@ include file="header.jsp" %>

taglib 디렉티브

taglib 디렉티브는 커스텀 태그 라이브러리를 사용할 때 필요합니다. JSP 표준 태그 라이브러리(JSTL)과 같은 외부 태그 라이브러리를 JSP 페이지에서 사용하기 위해 선언합니다.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

예제 코드

출력하기

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <!DOCTYPE html>
    <html>

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>ex01</title>
    </head>

    <body>
        Hello JSP<br />
        <% 
        // 웹 컨테이너의 로그로 출력
        System.out.println("Hello JSP"); 
        // 웹 브라우저에 출력
        out.println("<b>Hello JSP</b>"); 
        %>
    </body>

    </html>

HTML in 자바(JSP)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%-- 자바 코드 내부에 HTML 코드를 작성할 때 사용 --%>
<%
    out.println("<!DOCTYPE html>")
    out.println("<html>")
    out.println("<head>")
    out.println("    <meta charset="UTF-8">")
    out.println("    <meta name="viewport" content="width=device-width, initial-scale=1.0">")
    out.println("    <title>ex01</title>")
    out.println("</head>")

    out.println("<body>")
    out.println("    Hello JSP<br />");

    // 웹 컨테이너의 로그로 출력
    System.out.println("Hello JSP"); 
    // 웹 브라우저에 출력
    out.println("<b>Hello JSP</b>"); 

    out.println("</body>")
    out.println("</html>")

%>

3단 구구단

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <!DOCTYPE html>
    <html>

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>ex01</title>
    </head>

    <body>
    3단 구구단 <br />
    <%
    out.println("<table border='1'>");
    out.println("<tr>");
    for(int i = 1; i <= 9; i++) {
        out.println("<td>" + 3 + " * " + i + " = " + (3 * i) + "</td>");
    }
    out.println("</tr>");
    out.println("</table>");
    %>
    </body>

    </html>

자바 코드와 영역 분리 ( StringBuilder 사용 )

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%
    StringBuilder sbHtml = new StringBuilder();

    sbHtml.append("<table border='1' cellspacing='0' width='800px'>");
    sbHtml.append("<tr>");
    for(int i = 1; i <= 9; i++) {
        sbHtml.append("<td>" + 3 + " * " + i + " = " + (3 * i) + "</td>");
    }
    sbHtml.append("</tr>");
    sbHtml.append("</table>");
%>

    <!DOCTYPE html>
    <html>

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>ex01</title>
    </head>
     <body>
    3단 구구단 <br />
    <%= sbHtml.toString() %>
    </body>

    </html>

구구단 (홀짝 색변경)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%!
    private String gugudan(int dan) {
        StringBuilder sbHtml = new StringBuilder();

        String className = (dan % 2 == 0) ? "even" : "odd";
        sbHtml.append("<tr class='" + className + "'>");
        for(int i = 0; i <= 9; i++) {
            if(dan == 0 && i == 0) {
                sbHtml.append("<td>&nbsp;</td>");
                continue;
            }
            if(dan == 0) {
                sbHtml.append("<td>×" + i + "</td>");
                continue;

 }
            if(i == 0) {
                sbHtml.append("<td>" + dan + "단</td>");
                continue;
            }
            sbHtml.append("<td>" + dan + " * " + i + " = " + (dan * i) + "</td>");
        }
        sbHtml.append("</tr>");
        
        return sbHtml.toString();
    }
%>
<%
    StringBuilder sbHtml = new StringBuilder();

    sbHtml.append("<table border='1' cellspacing='0' width='800px'>");
    for(int dan = 0; dan <= 9; dan++) {
        sbHtml.append(gugudan(dan));
    }
    sbHtml.append("</table>");
%>

    <!DOCTYPE html>
    <html>
    <style>
        .odd {
         background-color: #acacac;
        }
        .even {
            background-color: #f0f0f0;
        }
        td {
            text-align: center;
        }
    </style>    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>ex01</title>
    </head>

    <body>
    <%= sbHtml.toString() %>
    </body>

    </html>

0개의 댓글

관련 채용 정보