Programming/Servlet

    [JSP] JSTL로 현재 날짜와 특정 날짜 비교하기

    프로젝트하면서 알게된 것을 기억하기 위해 기록하는 포스팅 상황 오늘 날짜와 이벤트 종료일을 비교해야 함 컨트롤러에서 Date now = new Date();를 통해 java.util.Date 형식의 오늘 날짜를 가져온다. 오라클 DB에서 가져온 이벤트 종료일은 SYSTIMESTAMP 형식으로 이를 SELECT 할 때 TO_CHAR(SYSTIMESTAMP, 'yyyy-MM-dd')방식으로 뽑아옴 이 둘을 JSP파일에서 비교하기 위해 컨트롤러에서 now 변수를 forward방식으로 list.jsp로 위임하고 이벤트 종료일은 이벤트 객체를 forward 방식으로 전송한다. 현재 now와 이벤트 종료일의 패턴 형식('yyyy-MM-dd')이 맞지 않으므로 now를 이에 맞춰준다. JSTL if문으로 인 경우, ..

    [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 파일을 실행시켜준..

    [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파일이 있는데 이것을 ..

    [JSP] JSP Beans(빈즈)에 대해 알아보자

    빈즈(Beans)는 특정한 일을 독립적으로 수행하는 컴포넌트를 의미한다. 컴포넌트는 하나의 부품이라고 생각하면 쉽다. JSP빈즈는 JSP와 연동하려고 만들어진 컴포넌트 클래스를 말한다. JSP 빈즈는 컨테이너에 위치하며, JSP에 데이터베이스 연동 등 프로그램적 요소를 모듈화할 수 있도록 도와주는 역할을 한다. 따라서 가능하면 JSP 코드 내에 스크립트릿을 사용하는 것보다는 빈즈를 만들어 사용하는 것이 좋다. [ 빈즈 클래스 구조 ] 기본적으로 빈즈 클래스는 자바 클래스이므로, 자바 클래스 구성을 따른다. 다만 JSP 액션과 연동하기 위해 필요한 몇 가지 필수 구성의 차이가 있을 뿐이다. 하지만 이는 문법적인 제약이 아니기 때문에 규칙을 따르지 않더라도 컴파일 오류가 발생하지는 않는다. 다만 일반적인 매..

    [JSP] 표현언어(Expression Language)란?

    [JSP] 표현언어(Expression Language)란?

    표현언어(Expression Language)는 간단한 방법으로 데이터를 표현하려고 고안된 언어인 SPEL(Simplest Possible Expression Language)에 기본을 두고 있다. 기존에 JSP의 데이터를 표현할 때 스크립트릿()이나 표현식() 혹은 를 사용했다. 그런데 스크립트릿이나 표현식은 페이지 내에서 객체 선언 부분이 따로 들어가야 하고, 의 경우에도 과 함께 사용해야 하며 단순 출력 이외의 표현은 안된다는 문제가 있었다. 표현 언어는 이러한 문제를 해결하려고 만들어진 기술로, 빈즈 속성 값을 더욱 쉽고 제약을 덜 받는 방법으로 사용할 수 있도록 해준다. 표현 언어를 사용하면 코드가 복잡해지는 것을 줄일 수 있고 JSP를 일종의 템플릿 코드처럼 사용할 수 있다. request.s..

    (Servlet/JSP) setCharacterEncoding, setContentType 정리

    JSP와 서블릿 공부를 하면서 항상 헷갈렸던 내용이 있다. request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=utf-8"); 이번 포스팅에서는 위 세 개의 문장을 알아보겠습니다. request.setCharacterEncoding("UTF-8") 우리가 어떤 .jsp파일이나 .html파일에서 폼 태그에 입력한 값을 전송한다고 가정하겠습니다. 폼 태그에서 입력한 값을 전송할 때는 GET방식과 POST방식으로 나뉘는데 POST방식으로 보내는 값이 '한글'일 경우 깨지지 않게 전달하기 위해 사용하는 것이 request.setCharacterE..

    JSP 내장객체를 활용한 간단한 twitter 구현하기

    JSP 내장객체를 활용한 간단한 twitter 구현하기

    안녕하세요. 이번 포스팅은 jsp 내장객체(request, session, application, out 등)를 활용해 간단한 twitter를 구현해보겠습니다. 내장 객체가 무엇인지부터 알아보겠습니다. JSP내장객체란 'JSP 내에서 선언하지 않고 사용할 수 있는 객체'라는 의미에서 붙여진 이름이다. request, response, pageContext, session, application, out, config, exception 등이 있다. 구조적으로는 JSP가 서블릿 형태로 자동 변환된 코드 내에 포함되어 있는 멤버변수, 메서드 매개변수 등의 각종 참조 변수를 말한다. 각각의 내장객체는 모두 getAttribute(), setAttribute() 메서드를 통해 속성을 저장하거나 가져올 수 있다...