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 비니미니파파
JavaScript&Platform/jQuery2025. 1. 21. 14:07

[jquery] select on change / jquery value/text 가져오기

HTML

<select id="example">
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
</select>

Jquery

$('#example').on('change', function () {
  const selectedVal = $(this).val();  // 선택된 option 의 value
  console.log('Selected Value:', selectedVal);
  const selectedText = $(this).find('option:selected').text(); // 선택된 option 의 text
  console.log('Selected Text:', selectedText);
});
Posted by 비니미니파파
Database/Oracle2025. 1. 10. 17:13

TEST 스키마가 기본

TEST2 스키마에 SP_TEST 프로시져를 생성 후 실행 했더니 오류 발생

ORA-00900 권한이 없어 오류가 발생 함.

GRANT EXECUTE ON TEST2.SP_TEST TO TEST;

권한 부여

문제 해결

끝!

 

Posted by 비니미니파파
Database/Oracle2024. 12. 13. 13:22

단순한 case when then else end 를 대체 할수 있다.

DECLARE
    data_type VARCHAR2(50); -- 변수 선언
    result VARCHAR2(50);  -- 결과를 저장할 변수
BEGIN
    -- data_type 변수에 값 할당
    data_type := 'C'; -- 여기서 값을 변경하여 테스트 가능

    -- DECODE를 사용하여 결과 저장
    SELECT DECODE(data_type, 'A', '1111', 'B', '2222', 'C', '3333', 'D', '444', '0000')
    INTO result
    FROM DUAL;

    -- 결과 출력
    DBMS_OUTPUT.PUT_LINE('TYPE: ' || data_type || ', result: ' || result);
END;

Posted by 비니미니파파
Framework2024. 10. 15. 11:00

@Autowired

  • Spring 프레임워크에서 제공하는 애노테이션입
  • **타입(Type)**을 기준으로 의존성 주입을 수행
  • 기본적으로는 필드, 세터 메서드, 생성자에 사용할 수 있음
  • 타입에 맞는 빈이 여러 개 있을 경우, @Qualifier를 함께 사용하여 특정 빈을 지정
  • 주입할 빈이 없을 경우, 예외가 발생
    required=false로 설정하면, 주입할 빈이 없어도 예외를 발생시키지 않는다.

 

@Autowired
private MyService myService;


@Autowired(required = false)
private MyService myService;

 

 @Resource

  • JDK 표준(JSR-250) 애노테이션으로, Spring 외의 Java EE 환경에서도 사용
  • **이름(Name)**을 기준으로 의존성 주입
  • 이름을 먼저 검색하고, 이름으로 주입할 빈이 없으면 타입을 기준으로 빈을 주입
  • 기본적으로 필드 또는 세터 메서드에 사용할 수 있음
  • 주입할 빈을 이름으로 명시하고 싶을 때 사용
@Resource(name = "myService")
private MyService myService;

 

주요 차이점 요약

  1. 주입 방식:
    • @Autowired는 타입을 기준으로 주입
    • @Resource는 기본적으로 이름을 기준으로 주입 (이름으로 찾지 못할 경우 타입으로 주입)
  2. 애노테이션 출처:
    • @Autowired는 Spring 전용 애노테이션
    • @Resource는 Java 표준 애노테이션(JSR-250)으로, Spring 외의 Java EE 환경에서도 사용될 수 있음
  3. 추가 설정:
    • @Autowired는 @Qualifier와 함께 사용할 수 있어 여러 빈 중 특정 빈을 선택할 수 있음
    • @Resource는 name 속성을 통해 빈 이름을 지정할 수 있음

어느 것을 사용할지

  • Spring에 종속적인 애플리케이션에서는 **@Autowired**를 더 자주 사용
  • 표준 Java 애노테이션을 선호하거나 이름 기반 주입이 필요한 경우 **@Resource**를 사용할 수 있음.
Posted by 비니미니파파