2010년 7월 29일 목요일

페이징 로직

//페이지 처리

pageNum = Integer.parseInt(request.getParameter("pageNum")); //현재 페이지

totalRecord = 총 레코드 갯수;

paging = 페이지 당 보여질 게시물 수;

pageingCount = Math.ceil(totalRecord / paging); // 총 페이지 수

start = paging * pageNum; // 페이지의 시작위치

 

//페이지 그룹 처리

pageGroup = 페이지 그룹에 포함될 페이지의 수;

pageGroupNum = Math.ceil((pageNum+1) / pageGroup); // 현재의 페이지 그룹

pageStart = (pageGroupNum - 1) * pageGroup + 1; //페이지 그릅의 첫페이지

pageEnd = pageStart + pageGroup -  1; // 페이지 그룹의 마지막 페이지

 

// 이전 그룹 처리

prevGroup = pageGroupNum - 1; // 이전 그룹

prevStart = (prevGroup - 1) * pageGroup; // 이전 페이지 그룹의 첫페이지

if(pageGroupNum != 1) {

      ?pageNum=prevStart;

}

 

// 페이지 출력

int j = 0;

for(int i = pageStart; i < pageEnd; i++) {

    if(i > pageingCount) break;   

    j = i - 1;

    ?pageNum=j 

}

 

//다음 그룹 처리

nextGroup = pageGroupNum + 1; // 다음 그룹

nextStart = (nextGroup -1) * pageGroup; // 다음페이지 그룹의 첫페이지

if(pageingCount > (nextGroup+1)) {

     ?pageNum=nextStart

}

오라클 SYSTEM, SYS 비밀번호를 잊어먹었을 때 해결 방법

비밀번호를 계속 틀려서 오라클에서 잠궜을 경우 풀어야 하는데

그 명령어는 아래와 같습니다.

ALTER USER 계정명 ACCOUNT UNLOCK;

그리고나서 아래와 같이 따라하면 풀립니다.

명령 프롬프트(즉, DOS 창)에서 다음을 실행합니다.

C:\>sqlplus "/as sysdba"

SQL> show user

USER is "SYS"

 

이제 암호를 원하는 대로 설정합니다.

 

SQL> alter user sys identified by 암호;

SQL> alter user system identified by 암호;

 

이제 접속이 잘 될 것입니다.

 

SQL> connect sys/암호 as sysdba

SQL> connect system/암호

이클립스에서 톰캣 포트관련 에러 발생했을때 처리방법

톰캣을 이클립스에서 실행하면 port 8080 관련된 에러가 발생하는데

시작 - 실행 - cmd - netstat -a -n -o 실행 후 8080 포트 PID 번호 찾아서 - Ctrl + Art + Delete 후에 프로세스에서 PID를 찾아 프로세스를 종료한다.

오라클 포트 변경

이클립스환경에서 톰캣과 오라클을 사용하다 보면

오라클의 웹 관리 페이지의 포트와 톰캣의 포트가 충돌을 하게 되는데

해결 방법은 아래와 같이 한다.

 

 

시작 - 실행 - cmd

sqlplus /nolog

sql> CONNECT SYSTEM/암호

sql> EXEC DBMS_XDB.SETHTTPPORT(새로고칠포트번호);

 

PL/SQL procedure successfully completed. 출력되면 성공

 

sql> exit

 

 

 

커넥션 풀을 이용한 DataSource 설정

스프링이 직접적으로 커넥션 풀 구현 클래스를 제공하진 않지만, DBCP API와 같은 커넥션 풀 라이브러리를 이용해서 커넥션 풀 기반의 DataSource를 설정할 수 있다. 아래 코드는 DBCP가 제공하는 BasicDataSource 클래스를 이용해서 DaeaSource를 설정하는 예제이다.

 

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

  <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />

  <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />

  <property name="username" value="[username]" />

  <property name="password" value="[password]" />

  <property name="initialSize" value="5" />

</bean>

위 설정내용은 commonContext.xml 로 저장하고

web.xml 에서 로드한다.

 

그 뒤 Dao 가 쓰이는 곳에 bean property로 등록하면 완료!

Bean 파일을 분리하는 방법

web.xml 에 아래의 내용을 추가한다.

 

<context-param>

  <param-name>contextConfigLocation</param-name>

  <param-value>

    WEB-INF/config/xml 파일 이름

    ...

  </param-value>

</context-param>

 

<listener>

  <listener-class>

    org.springframework.web.context.ContextLoaderListener

  </listener-class>

</listener>

이렇게 하면 WEB-INF 의 config 밑에 있는 xml 파일중 등록된 xml 파일을 로딩하게 된다.

JUnit Test Framework 사용하기

JUnit 은 TDD 개발방식을 구현(?) 할 수 있게 하는 Framework 이다.

 

사용법 :

프로젝트를 Maven 으로 만든 후

Springframework Defenndency 를 추가한 후

Junut : Junit Defendency 를 추가 한 뒤

Maven Package 를 실행한 뒤에

Target의 라이브러리를 Webapp 의 라이브러리로 복사해 넣는다.

 

그 뒤에 src/main/java 와 src/test/java 쪽에 도메인/패키지 명을 동일하게 만든 뒤

Test 패키지 쪽에 테스트클래스명+Test 형식의 클래스 파일을 만든다.

 

코딩 중 다른 클래스를 만들게 되면 src/main/java에 만들도록 한다.

 

그 뒤에

테스트하고자 하는 메소드를 코딩 한 뒤에 Run As -> JUnit Test 를 실행하면 되는데,

이때 메소드 명 위에 마다 @Test 어노테이션이 존재하여야 JUnit Framework가 인식 할 수 있다.

 

실행하고 나면 이클립스 창 아래에 JUnit 이라는 탭이 생기는데

이 탭의 오른쪽 상단에 빨간색과, 녹색의 줄 중 하나의 줄이 생긴다.

 

빨간색 줄은 소스에 오류가 있어 테스트를 통과하지 못했다는 것이고

녹색 줄은 테스트를 통과했다는 것이다.