Programming

    [JSP] JSTL <fmt: formatDate> 태그로 날짜 형식 변경하기

    [JSP] JSTL <fmt: formatDate> 태그로 날짜 형식 변경하기

    오라클에서 날짜를 저장할 때는 주로 DATA_TYPE을 TIMESTAMP를 사용한다. 하지만, 이를 출력할 때는 다음과 같이 출력이 된다. 우리는 보통 웹에서 2019-10-05 07:43:22 이런식으로 날짜를 보는 것에 익숙해져 있다. 그렇다면 우리가 익숙해진 날짜 표현방식으로 어떻게 바꿀 수 있을까? JSTL의 format 태그를 사용하면 된다. 우선 다음의 태그 라이브러리를 jsp 파일 상단에 적어준다. 이런 태그 라이브러리를 사용하기 위해서는 라이브러리를 "WebContent/WEB-INF/lib"경로에 jar 파일을 넣어줘야 한다. jar 파일은 https://mvnrepository.com/artifact/javax.servlet/jstl/1.2

    [JSP & 서블릿] 모델(Model)1, 2 방식에 대해 알아보자

    [JSP & 서블릿] 모델(Model)1, 2 방식에 대해 알아보자

    본 포스팅은 https://www.youtube.com/watch?v=tPEf5VLKJI0을 참고하여 작성했습니다. 모델1은 컨트롤러와 뷰가 물리적으로 분리되지 않은 방식을 의미한다. 모델2은 컨트롤러와 뷰가 물리적으로 분리된 방식을 의미한다. 그리고 DisPatcher를 집중화한 후의 모델이다. 즉, 모델2 방식은 자바 코드와 JSP 코드가 분리되어 있다. 그렇다면 자바 코드로 전달받는 데이터를 어떻게 JSP에서 받을 수 있을까? (서블릿과 JSP 사이에 저장되는 저장소가 필요할텐데..) 포워드(forward를 사용하면 된다. foward은 redirect와 상이하다. forward는 현재 작업한 내용을 이어갈 수 있도록 무언가를 공유하는 것이고 redirect는 현재 작업하던 내용과 상관없이 새로운 ..

    서블릿(Servlet) 필터(Filter)를 사용하여 한글 처리 문제를 해결하기(어노테이션 방식)

    서블릿(Servlet) 필터(Filter)를 사용하여 한글 처리 문제를 해결하기(어노테이션 방식)

    위와 같은 웹 페이지에서 제목란에 'bbb', 내용란에 '안녕하세요'를 입력하면 어떻게 될까? (폼 태그의 method="POST"이다.) 'bbb'는 정상적으로 출력이 되지만, '안녕하세요'는 이상한 문자(?)로 출력이 된다. 왜 한글은 이상하게 출력이 되는 것일까? 클라이언트에서 서버로 영문자를 전송할 때는 '1바이트'의 크기가 사용된다. 하지만 한글을 전송할 때는 '2바이트'의 크기가 사용된다. 'UTF-8' 인코딩 방식을 이용하면 한글을과 영어를 모두 정상적으로 사용할 수 있지만 톰캣은 기본적으로 'UTF-8' 인코딩 방식이 아닌 'ISO-8859-1' 인코딩 방식을 사용한다. 예를들어 '안녕'을 전송하면 'UTF-8'방식은 '안녕'을 '안(2byte)', '녕(2byte)'로 나누어 전송하기 때..

    서블릿(Servlet) url 매핑기법 2가지(web.xml 방식, 어노테이션 방식)

    서블릿(Servlet) url 매핑기법 2가지(web.xml 방식, 어노테이션 방식)

    서블릿에서 사용자가 url을 입력했을 때 해당 url에 매칭되는 자바파일(~~.java)가 실행되어야 한다. 이러기 위해서는 url 매핑 기법을 사용해야 하는데 두 가지 방식이 있다. 1. web.xml 방식 2. Annotation(어노테이션) 방식 web.xml 방식은 구시대적인 방식이다. 아래 사진을 보자. 오우.. 벌써부터 어지럽다. 설명하면 다음과 같다. servlet-class 태그에 있는 것이 패키지명부터 클래스명이다. servlet-mapping 태그 안에 있는 servlet-name 태그와 servlet 태그 안에 있는 servlet-name 태그를 같게 하여 url-pattern 태그로 들어오는 url 주소에 맞춰 servlet-class 태그에 있는 Nana.java 파일을 실행시켜준..

    [Java] 메서드 정적 바인딩과 동적 바인딩

    [Java] 메서드 정적 바인딩과 동적 바인딩

    다음과 같은 소스코드가 있다고 가정하자. class Exam { public void total() { return kor + eng + math; } } class NewExam extends Exam { public void total() { return super.total() + com; } public static void print(Exam exam) { int total = exam.total(); System.out.println(total); } public static void main(String args[]) { print(new Exam(1, 1, 1)); print(new NewExam(1, 1, 1, 1)); } } print 메서드에서 exam.total을 호출하면 Exam,..

    [Java] 참조형식과 호출되는 메서드의 관계

    [Java] 참조형식과 호출되는 메서드의 관계

    아래와 같은 부모, 자식 클래스가 있다고 가정하자. public class Parent { // 생략 } public class Child extends Parents { // 생략 } 그럼 당연히 아래와 같이 부모, 자식 클래스의 각 인스턴스 변수(parent, child)를 생성할 수 있다. public class Main { public static void main(String[] args) { Parent parent = new Parent(); Child child = new Child(); } } 그렇다면 아래와 같이 인스턴스를 생성할 수 있을까? public class Main { public static void main(String[] args) { Parent A = new Child..

    [Java] Log4j에 대해 알아보자

    [Java] Log4j에 대해 알아보자

    Log4j는 Log for Java라는 말로 풀이하여 이름을 지었고 자카르타 프로젝트에서 자바를 위한 프로젝트 중 하나라고 한다. 프로그래밍을 하다보면 오류가 났을 때 많은 시간을 투자하게 된다. 변수의 값을 확인하기 위해 System.out.println을 남발하여 애를 먹은 적도 있다. Log4j는 이러한 시간을 절약해준다. 시간, 오류메시지, 클래스명, 메서드명, 라인수 등 자세한 오류 및 프로세스 흐름을 알려주기 때문이다. Log4j의 구조 Log4j의 구조는 크게 세 가지로 나뉜다. 1. Logger - 로그 파일을 작성하고, Appender에 메시지를 전달하는 기능을 한다. - 로그 레벨을 가지고 있으며, 로그의 출력 여부는 로그문의 레벨과 로거의 레벨을 가지고 결정한다. 2. Appender..

    [JAVA] 날짜와 시간 다루기(java.time)

    [JAVA] 날짜와 시간 다루기(java.time)

    기본적으로 자바에서는 날짜와 시간을 다루기 위해서 java.util.Date와 java.util.Calendar 클래스를 사용했지만, 사용에 불편함이 많아 JDK8 이후부터는 java.time 패키지의 클래스로 많은 부분이 대체되었다. [ 날짜 및 시간 구하기 ] LocalDate, LocalTime, LocalDateTime 가장 기본이 되는 클래스들로 각각 날짜, 시간, 날짜와 시간을 다루는 클래스이다. new 키워드를 통해 직접적인 인스턴스 생성이 불가능하고 static 메서드를 이용하는 방식을 사용한다. now() : 현재 날짜, 시간에 기반하여 인스턴스 생성 of() : 인자로 전달되는 특정 날짜, 시간에 기반한 인스턴스 생성 atTime() : 특정 시간정보에 기반해 LocalDateTime ..

    [오라클 데이터베이스] - 트랜잭션 처리를 위한 COMMIT과 ROLLBACK

    [오라클 데이터베이스] - 트랜잭션 처리를 위한 COMMIT과 ROLLBACK

    https://www.youtube.com/user/newlec1의 내용을 정리해서 포스팅합니다. [ 트랜잭션이란? ] 트랜잭션(Transaction)은 하나의 작업을 수행하기 위해 필요한 데이터베이스의 연산들을 모아놓은 것으로 업무 실행단위, 논리 명령단위라고 할 수 있다. 트랜잭션에 대해 직관적으로 이해가 되지 않기 때문에 예시를 들어보자. 성호가 은경이한테 돈을 입금한다고 하자. 성호가 은경이한테 돈을 입금하는 순간 성호 계좌와 은경이의 계좌에서 UPDATE 구문이 정상적으로 실행이 되어야 한다. 만약 성호의 UPDATE문이 정상적으로 실행됐으나 은경이의 UPDATE문이 실행되지 않는다면, 성호가 5000원을 이체했으나 은경이가 이를 받지 못해 5000원이 사라지는 모순된 상황이 발생할 것이다. 위..

    [JSP] JSTL(Jsp Standard Tag Library) 정리 - <c:set>,<c:out>,<c:remove>,<c:if>,<c:choose>,<c:when>,<c:otherwise>,<c:forEach>,<c:forTokens> 등

    [JSP] JSTL(Jsp Standard Tag Library) 정리 - <c:set>,<c:out>,<c:remove>,<c:if>,<c:choose>,<c:when>,<c:otherwise>,<c:forEach>,<c:forTokens> 등

    [ JSTL 이란? ] JSTL은 JSP에서 유용하게 사용될 수 있는 기능을 만들어 둔 커스텀 태그 라이브러리이다. JSTL을 사용하면 JSP에서 스크립트릿의 사용을 줄일 수 있으며 특히 화면에 데이터를 표현할 때 필요한 프로그램 요소를 대체할 수 있어 유용하다. JSTL을 사용하기 위해서는 라이브러리를 다운받고 적용하고 선언해야 하는데 차례차례 해보도록 하자. 우선 http://tomcat.apache.org/taglibs/standard/ 이곳을 들어갑니다. Standard 1.1 다운로드를 클릭해주세요. birnaries를 클릭해주세요. jakarta-taglibs-standard-1.1.2.zip을 다운로드 받고 압축을 풉니다. 그 다음 lib 폴더로 들어오면 두 개의 jar파일이 있는데 이것을 ..