블로그 이미지
개발에 관한 것들.. 재만

카테고리

분류 전체보기 (66)
claztec's develop (1)
운영체제 (11)
프로그래밍 (41)
알고리즘 (0)
데이터베이스 (2)
소프트웨어공학 (3)
Books (2)
Total11,220
Today3
Yesterday9
3가지 스크립트 요소

스크립트릿
자바코드를 실행할때 사용
<%
    자바 코드1;
    자바 코드2;
%>

표현식
어떤 값을 생성한 HTML 문서 결과값에 포함시키고자 할때
<%= 값 %>

선언부
JSP 페이지의 스크립트릿이나 표현식에서 사용할 수 있는 함수를 작성할 때 사용
<%!
    public int multiplay(int a, int b) {
        int c = a * b;
        return c;
    }
%>

쉽게 정리하면 자바 코드를 JSP 페이지에서 사용하고 싶으면 <% %> 안에서 사용하면 된다. 간단한 자바 변수에 값을 html에 뿌려주려면 <%= %>를 사용하면 되고, 함수를 선언해서 사용하고 싶으면 <%! %>를 사용한다.
저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
page 디렉티브

 속성 설명
기본값
 language JSP 스크립트 코드에서 사용되는 프로그래밍 언어 지정
"java"
 contentType JSP가 생성할 문서의 타입을 지정
"text/html"
 import JSP페이지가 사용할 자바 클래스 지정
 
 session  JSP 페이지가 세션을 사용할지 지정. "true"/"false"
"true"
 buffer  JSP 페이지의 출력 버퍼 크기 지정. "none" 사용하지 않음. "8kb" 8킬로바이트 사용
최소 8kb
 autoFlush  출력버퍼가 다 찼을때 자동으로 버퍼에 있는 데이터를 출력 스트림에 보내고 비울지 여부 "true"/"false"
"true"
 info  JSP 페이지에 대한 설명 입력
 
 errorPage  JSP 페이지를 실행하는 도중에 에러가 발생할 때 보여줄 페이지 지정
 
 isErrorPage  현재 페이지가 에러가 발생할 때 보여지는 페이지여부 지정. "true"/"false"
"false"
 pageEncoding  JSP 페이지 캐릭터 인코딩 지정
 
 isELIgnored  "true" 표현언어 지원. "false" 표현언어 미지원
web.xml에서 사용하는 JSP 버전 및 설정에 따라 다름
(자주사용하는 contentType / page 속성 설명)

contentType 속성 / 캐릭터 셋
한글
<%@ page contentType="text/html; charset="euc-kr" %>
유니코드
<%@ page contentType="text/html; charset="UTF-8" %>

import 속성
JSP 페이지에서 자바의 클래스를 사용하기 위해 자바 클래스를 지정
<%@ import = "java.util.Calendar" %>
<%@ import = "java.util.Date" %>

,와 *를 사용해 간략하게 사용할 수 있다.
<%@ import = "java.util.Calendar, java.util.Date" %>
<%@ import = "java.util.*" %>

※ import 속성에서 클래스를 지정한 후 사용하지 않고 스크립트릿에서 클래스를 선언해 사용할 수 있다.


저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
JSP 페이지 구성요소

디렉티브
<%@ 디렉티브이름 속성1="값1" 속성2="값2" ... %>

 디렉티브 설명
 page  JSP 페이지에 대한 정보를 지정. 문서타입, 출력버퍼크기, 에러페이지 등
 taglib  JSP 페이지에서 사용할 태그 라이브러리
 include  JSP 페이지의 특정 영역에 다른 문서를 포함

스크립트
스크립트릿 : 자바 코드를 실행
표현식 : 값을 출력
선언부 : 자바 메소드(함수)를 만듬

기본객체
request, response, session, application, page등

표현언어
JSP 페이지 내부에서 사용되는 간단한 스크립트 언어

액션 태그(Action Tag)
<jsp:include page="header.jsp" flush="true" />

커스텀 태그(Custom Tag)
개발자가 직접 정의

정적인 데이터

(최범균의 JSP 2.0 프로그래밍 2장 정리)
저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
MySQL에 한글을 입력하면 ?? 로 표시되는 문제가 발생하였다.
결국 인코딩 문제 때문이었고, MySQL의 character를 변경해 주면 해결된다.

사용한 OS은 Ubuntu 9.04로 우분투는 기본적으로 시스템이 utf-8 을 갖는다.

MySQL설치는 시냅틱 패키지 관리자에서 MySQL server를 선택해서 설치하였다. 이렇게 설치하다보니 기본 언어설정을 못하고 지나치게 되었다. 그래서 characterset이 latin1으로 세팅이 되어 있었구 utf-8형태로 한글을 쓰다보니 한글이 깨져서 입력이 되었다.

1. characterset를 utf-8으로 변경
characterset을 바꾸기 위해서는 my.cnf 수정해야 한다. my.cnf 파일은 우분투에서 시냅틱 패키지 관리자로 설치하면 /etc/mysql 에 존재한다. my.cnf 수정은 http://ikinox.tistory.com/entry/mysql-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%84%A4%EC%B9%98utf-8-%EC%84%A4%EC%A0%95 에서 참조하였다.
참고로 설정파일도 함께 올렸다.

설정을 바꾸고 나서 MySQL을 재시작 해줘야 한다.
$sudo /etc/init.d/mysql restart

2. MySQL에 접속해서 characterset이 바뀌었는지 확인
설정이 적용이 되었다면 utf8로 변경이 된다. 내 경우에는 DB characterset은 latin1으로 계속해서 남아있었다. 그래도 결국 한글이 깨지진 않는다.

3. 테이블 생성
테이블을 생성해 줄때 character 설정을 utf8로 설정해 준다. 이부분이 가장 중요하다. 기존에 character 설정을 해주지 않고 테이블을 만들었다면 테이터가 한번 입력된 이후 테이블의 character 설정을 utf8로 변경을 해도 한글이 깨져서 입력될 가능성이 매우 높다. 이럴땐 과감히 drop 테이블을 하고 새롭게 만드는게 나은것 같다.
테이블을 만들때 MySQL Query Browser 와 같은 GUI 프로그램을 사용하면 편하게 설정해서 테이블을 만들 수 있다.



추가로 아래는 한글 입력이 깨지는 테이블과 깨지지 않는 테이블이다. MySQL Query Browser에서 Copy SQL to ClipBoard 을 통해 테이블을 create 한 쿼리를 보면 깨지는 테이블은 attribute에 character set이 latin1으로 되어 있는것을 확인할 수 있고 이때문에 한글이 입력되면 모두 latin1에 매칭되는 utf8 타입의 한글이 없어 ?로 입력되었던 것 같다.

<깨지는 테이블>
CREATE TABLE  `claztec`.`GUESTBOOK` (
  `guestbook_id` int(11) NOT NULL auto_increment,
  `register` datetime NOT NULL,
  `name` varchar(20) character set latin1 NOT NULL,
  `email` varchar(80) character set latin1 NOT NULL,
  `password` varchar(10) character set latin1 default NULL,
  `content` mediumtext character set latin1 NOT NULL,
  PRIMARY KEY  (`guestbook_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

<깨지지 않는 테이블>
CREATE TABLE  `claztec`.`GUESTBOOK` (
  `guestbook_id` int(11) NOT NULL auto_increment,
  `register` datetime NOT NULL,
  `name` varchar(20) NOT NULL,
  `email` varchar(80) NOT NULL,
  `password` varchar(10) default NULL,
  `content` mediumtext NOT NULL,
  PRIMARY KEY  (`guestbook_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8

4. 한글 입력
터미널에서 mysql을 실행해서 한글 입력테스트를 해본다. 이때 터미널 역시 인코딩이 UTF-8로 되어야 한다.


※ MEMBER 테이블에 깨진 문자가 입력된 이유는 my.cnf를 utf8로 변경하지 않고 insert를 해서 깨졌다.

5. 웹에서 입력
모든 character 설정 부분을 utf8로 한 후에 입력한다.
GUESTBOOK 테이블에 입력이 되는 프로그램이다. 최범균의 JSP 2.0 프로그래밍 방명록 예제 프로그램이다.

6. 데이터 베이스확인
실제 입력된 한글이 깨졌는지 확인한다.


할때 마다 생각하는 거지만 환경설정이 제일 힘들다. 환경설정에 기력을 쏟고 나면 정작 개발할 시간과 체력은 남지 않는것 같다.

끝으로 한글 인코딩에 관해서 참조한 글 http://cafe.naver.com/javacircle/34047
저작자 표시 비영리 변경 금지
Posted by 재만
Tomcat Project로 프로젝트를 만들면 Dynamic Web Project와 다르게 servlet을 만드는 것이 많이 설명되어 있지 않다.
Dynamic Web Project를 설명할때 이클립스에서 파일 추가로 서블릿을 간단히 추가할 수 있지만, Tomcat Project는 서블릿 파일 추가를 이클립스에서 할 수 없다.

일단 서블릿 파일(java 파일)을 만들어서 실행을 시키면 클래스를 찾을 수 없다는 메시지가 나온다.
프로젝트 - Properties - Java Build Path에서 빌드설정을 잘 잡아주면 문제가 해결된다.
프로젝트 명이 ajax라 하면 ajax/src에 서블릿이 정의되어 있는 java class파일을 만들고 build-path에서 설정을 해주면 된다.


Source는 java 파일이 위치한 곳이고, 빌드 된 이후 class 파일이 위치한 곳은 Default output folder에 정의된다.
build path에 ajax/src를 추가해서 src에 java파일을 만들면 WEB-INF/classes에 class파일이 생긴다.


정리를 하면
프로젝트 생성은 Tomcat Project로 하였다. 프로젝트 명은 ajax 다
servlet을 만들기 위해 ajax/src에 서블릿 파일을 만들었다.
설정은Dynamic Web Project 처럼 web.xml에 하였다. web.xml은 자동으로 생기지 않는다.고민할 필요없이 WEB-INF에  만들어 주면 된다.
ajax/src는 build path에 있지 않다. 프로젝트 properties에 ajax/src를 build path에 추가한다.

이렇게 하면 Tomcat Project에서도 서블릿을 만들수 있다.
저작자 표시 비영리 변경 금지
Posted by 재만
Tomcat Project에서 web.xml은 Dynamic Web Project와 달리 자동으로 생성되지 않는다. 이것 때문에 되게 고민을 많이 했었는데 그냥 web.xml 파일을 만들어 주면 된다.

WEB-INF에 web.xml을 넣어주면 끝.
저작자 표시 비영리 변경 금지
Posted by 재만
로컬에 있는 eclipse의 프로젝트를 subversion으로 올리기.

프로젝트 오른쪽 클릭 > Team > Share Project 선택


svn은 이클립스에 플러그인을 설치해야 나타난다.


새로운 저장소 생성


기본으로 프로젝트명을 불러온다.


끝..


사용자 설정..

svn 설정하기. 막상 해보니 참 쉽다.


저작자 표시 비영리 변경 금지
Posted by 재만

Subversion 설치

분류없음 / 2009/05/02 20:38
Linux(ubuntu)에서 Subversion 설치하고 사용하기

설치
$ sudo apt-get install subversion

서버설정
$ svnadmin create ~/svnrepo
$ vi ~/svnrepo/conf/svnserve.conf

svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository

passwd
[user]
userid = userpassword

authz
[groups]
[/]
userid = rw
* =
그룹은 지정하지 않고 userid계정에서는 read/write, 나머지는 아무런 권한을 주지 않는다.

서버 시작
$ svnserver -d -r ~/svnrepo/ 오타 svnserver가 아닌 svnserve 이다.
$ svnserve -d -r ~/svnrepo/

http://localhost:3690에 접속해서 확인

주의할점

앞에 공백이 있어서는 eclipse에서 project를 share할때 에러가 발생한다.

대략 아래와 같은 에러다.

    svn: /home/claztec/svnrepo/conf/svnserve.conf:12: Option expected
    svn: /home/claztec/svnrepo/conf/svnserve.conf:12: Option expected
mkdir --parents -m "Initial import." svn://localhost/trunk/ajaxTest
    svn: /home/claztec/svnrepo/conf/svnserve.conf:12: Option expected
    svn: /home/claztec/svnrepo/conf/svnserve.conf:12: Option expected
    svn: URL 'svn://localhost/trunk/ajaxTest' non-existent in that revision
    svn: URL 'svn://localhost/trunk/ajaxTest' non-existent in that revision
mkdir --parents -m "Initial import." svn://localhost/trunk/ajaxTest



저작자 표시 비영리 변경 금지
Posted by 재만

최근에 달린 댓글

최근에 받은 트랙백

글 보관함