본문 바로가기

개발/JSP

chap16-03 국제화태그 3.2 예제로 사용할 리소스 번들 메시지 처리 태그에 대해서 살펴보기 전에 메시지 태그에서 사용할 리소스 번들 파일을 작성해 보자. 메시지 번들 파일은 클래스 패스에 위치해야 하기 때문에 웹 어플리케이션에서 사용할 메시지 번들 파일은 WEB-INF\classes 디렉토리에 생성하거나 WEB-INF\lib에 포함된 jar 파일에 포함시키면 된다. 먼저 영문 메시지를 보여주는 리소스 번들 파일을 작성해 보자. 이 파일은 다음과 같다. chap16\WEB-INF\classes\resource\message.properties TITLE = MadVirus's Learning JSP 2.0 GREETING = HI! I'm BK VISITOR = Your ID is {0} Note : 이클립스 프로젝트에서 진행..
chap15 표현 언어(Expression Language) JSP 2.0 버전부터 표현 언어(Expression Language)가 추가되었다. 표현 언어는 또 다른 형태의 스크립트 언어로서 스크립트 요소 중의 하나인 표현식보다 간결하고 표현식 대신 사용할 수 있기 때문에 많이 사용되고 있는 요소이기도 하다. 이 장에서는 표현언어가 무엇이며, 어떻게 표현 언어를 사용하는지에 대해서 살펴볼 것이다. 01. 표현 언어란? 표현 언어(Expression Language)는 JSTL(JSP Standard Tag Library) 1.0 규약에 소개된 내용으로서 JSP 2.0 버전부터 표현 언어가 포함되었다. JSP 2.1 버전에서는 표현 언어와 관련된 규약을 별도 문서로 제공하고 있으며, 이 장에서는 표현 언어 2.1 규약을 기준으로 설명할 것이다. 표현 언어는 이름에..
이클립스 실행되지 않는 경우 이클립스를 실행할 때 다음과 같이 Exit code이 -1인 오류 메시지가 출력되면서 실행되지 않는 경우가 있다. JVM terminated, Exit code=-1 -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xms512m -XX:MaxPermSize=256M ... 이 경우 [이클립스설치디렉터리]\eclipse.ini 파일을 다음과 같이 변경한 뒤 다시 이클립스를 실행해 보기 바란다. -startup plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502 -product..
chap13-2.9 JSP에서 서비스 사용하기 모든 클래스에 대한 컴파일이 완료되었다면 이제 사용자가 요청한 기능을 싱행하고 결과를 화면에 보여주는 JSP를 작성할 차례이다. JSP는 앞서 작성한 서비스 객체를 이용해서 필요한 기능을 수행하고, 서비스 객체의 실행 결과를 바탕으로 알맞은 화면을 사용자에게 제공하게 된다. (1) 메시지 목록을 보여주는 list.jsp chap13\list.jsp 이름 : 암호 : 메시지 : 등록된 메시지가 없습니다. 메시지 번호 : 손님 이름 : 메시지 : [삭제하기] [] list.jsp는 GetMessageListService를 이용해서 MessageListView 객체를 구한 뒤, MessageListView 객체에 저장된 값을 이용해서 화면에 알맞은 내용을 출력해 준다. 예를 들어, 아무 메시지도 저장되어 있지..
chap13-2.8 클래스의 컴파일 순서 정리 방명록 예제는 앞서 에제들과 달리 많은 클래스를 사용하고 있는데, 서비스 클래스들을 사용하려면 MessageDao 클래스 및 서비스 클래스가 발생시키는 에외 클래스들이 먼저 존재 해야 한다. 따라서 알맞은 순서로 클래스를 생성하지 않으면 컴파일 도중 클래스가 존재하지 않는다는 컴파일 에러 메시지가 발생할 수 있다. 아래에 컴파일 순서를 정리한다. 점선으로 된 화살표는 컴파일 할 때 필요한 클래스를 표시한다. 예를 들어, DAO 기본 클래스를 컴파일 하려면 모델 클래스와 JDBC 관련 클래스가 먼저 컴파일 되어 있어야 한다. 비슷하게 DAOProvider 관련 클래스를 컴파일 하려면 DAO 기본 클래스와 DBMS별 DAO 클래스가 컴파일 되어 있어야 한다. 또한, 상자 안에 번호가 존재하는 경우에는 순서에..
chap13-2.7 서비스 클래스의 구현 각 DBMS별 MessageDao 구현 클래스와 DBMS에 알맞은 MessageDaoProvider 클래스를 구현했으므로 이제 이들 클래스를 이용해서 방명록 기능을 제공하는 서비스 클래스를 구현해 보자. 주요 기능별로 구현할 클래스는 다음과 같다. 방명록에 등록된 메시지 목록 제공 : GetMessageListService 신규 메시지 등록 기능 : WriteMessageService 메시지 삭제 기능 : DeleteMessageService 방명록 예제에서 사용할 서비스 클래스들은 DAO를 실행하는 도중에 SQLException이 발생할 경우 다음과 같이 ServiceException을 발생시키도록 하였다. try{ ... } catch(SQLException ex){ ... throw new Serv..
chap13-2.6 DBMS별 web.xml 파일 각 DBMS에 알맞은 MessageDao 클래스와 DBCP 설정 파일, MessageDaoProvider 클래스 및 MessageDaoProviderInit 서블릿 클래스를 작성했으므로, 이제 각 DBMS에 알맞은 web.xml 파일을 작성해 보도록 하겠다. 먼저 MySQL을 사용할 경우의 web.xml 파일은 다음과 같다. chap13\WEB-INF\web.xml DBCPInit kame.jdbc.loader.DBCPInit jdbcdriver com.mysql.jdbc.Drvier 1 MessageDaoProviderInit kame.chap13.dao.MessageDaoProviderInit dbms mysql 1 ...
MessageDaoProvider와 MessageDaoProviderInit 구현 chap13\WEB-INF\src\kame\chap13\dao\MessageDaoProvider.java package kame.chap13.dao; import kame.chap13.dao.mssql.MSSQLMessageDao; import kame.chap13.dao.mysql.MySQLMessageDao; import kame.chap13.dao.oracle.OracleMessageDao; public class MessageDaoProvider { private static MessageDaoProvider instance = new MessageDaoProvider(); public static MessageDaoProvider getInstance() { return instance; } p..