Java&Jsp&Servlet2025. 2. 25. 10:58

오랜만에 하드코딩 할려니 모든것이 혼란 스럽다. 정리가 필요하다.

구분 사용법 설명
<% %> 스크립틀릿 (Scriptlet) JSP에서 Java 코드 실행 (service() 메서드 내부)
<%! %> 선언문 (Declaration) JSP의 멤버 변수 또는 메서드 선언 (service() 메서드 외부)
<%@ %> 디렉티브 (Directive) JSP 페이지의 설정 (page, include, taglib)

 

<% %> (스크립틀릿, Scriptlet)

  • JSP 내부에서 Java 코드를 실행할 때 사용됩니다.
  • JSP가 실행될 때 서블릿 코드로 변환되며, service() 메서드 안에 들어갑니다.
  • JSP 페이지 내에서 동적인 처리를 할 때 사용됩니다.
<%
    String message = "Hello, JSP!";
    out.println(message);
%>

변환된 서블릿 코드

public void _jspService(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String message = "Hello, JSP!";
    out.println(message);
}

 

<%! %> (선언문, Declaration)

  • JSP 페이지에서 멤버 변수 또는 메서드를 선언할 때 사용됩니다.
  • service() 메서드 바깥에서 선언되므로, 전역 변수 또는 메서드 정의가 가능합니다.
<%! 
    int count = 0;  // 멤버 변수 선언
    public int getNextCount() { 
        return ++count; 
    }
%>

변환된 서블릿 코드

public class MyJspServlet extends HttpServlet {
    int count = 0;  // 클래스 멤버 변수

    public int getNextCount() {
        return ++count;
    }

    public void _jspService(HttpServletRequest request, HttpServletResponse response) throws IOException {
        out.println("다음 번호: " + getNextCount());
    }
}

 

<%@ %> (디렉티브, Directive)

  • JSP 페이지의 설정 및 서블릿 변환 방식을 정의하는 데 사용됩니다.
  • JSP 페이지에 대한 메타정보를 지정합니다.
  • 주요 디렉티브:
    • page: JSP 페이지의 속성 설정 (예: 인코딩, 오류 페이지 등)
    • include: 다른 JSP 파일 포함
    • taglib: 커스텀 태그 라이브러리 선언
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<%@ page import="java.util.Date" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:forEach var="i" begin="1" end="5">
    <p>번호: ${i}</p>
</c:forEach>

 

정리가 깔끔하죠! 맞습니다. ChatGPT 님이 정리해 주셨습니다.

Posted by 비니미니파파
Server(Windows&Linux)2020. 3. 24. 18:00

Tomcat 로그인 catalina.out 파일 용량이 무한으로 늘어 난다.

특히, log4j 를 사용하여 query 로그를 남기거나 system.out.println 을 남발하면 GB 용량의 catalina.out 을 곧 만나게 된다.

logrotate 를 이용하여 /etc/logrotate.d/tomcat 파일을 만들고 정상적인 테스트 후 하루 지나면 anacron 에서

permission deny 가 났다고 mail 이 와 있을 것이다.

그냥 cronolog 를 사용하자! Tomcat 8.5 기준이다.

 

1. cronolog 설치

~]# yum install cronolog

epel-release 가 설치 되어 있지 않았다면 먼저 설치 후 cronolog를 설치 하자.

~]# yum install epel-release

설치가 잘 되면 /usr/sbin/cronolog 실행 파일이 보일 것 이다.

 

 

2. tomcat catalina.sh 파일 수정 하기


~]# vi catalina.sh
  -- 중략 --
  touch "$CATALINA_OUT"  
  -- 중략 --
      org.apache.catalina.startup.Bootstrap "$@" start \
      >> "$CATALINA_OUT" 2>&1 "&"
  -- 중략 --
      org.apache.catalina.startup.Bootstrap "$@" start \
      >> "$CATALINA_OUT" 2>&1 "&"
      
      

위의 부분을 아래와 같이 바꾼다.


~]# vi catalina.sh
  -- 중략 --
  #touch "$CATALINA_OUT"  
  -- 중략 --
      org.apache.catalina.startup.Bootstrap "$@" start \
      | /usr/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &
  -- 중략 --
      org.apache.catalina.startup.Bootstrap "$@" start \
      | /usr/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &
      
      

 

 

3. tomcat Restart

~]# systemctl restart tomcat

tomcat 의 ~/logs/ 에 catalina.2020-03-24.out 파일이 보인다.

 

 

 

끝~.

Posted by 비니미니파파