You are on page 1of 16

파일명 프로젝트 관리번호

제 목 개발 코딩 기준서

개발 코딩 기준서

REV-1.0

2008 년 2 월 9 일

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 1/16


파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

개정 이력
개정번호 개정일자 개정내용 작성자
Rev 1.0 2000-09-30 초안 이민호
Rev 1.1 2000-10-07 각 Layer 별 코딩 방법론에 대한 부분 추가 이민호

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 2/16


파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

1) 화면코드 기준
1 시스템 구분 L(Lms), M(Member), C(Community), B(Bbs)
2 사용자/관리자 U(User), A(Admin)
3 대분류 A~Z
4 중분류 A~Z
5 소분류 00(숫자 2 자리)

Ex) LUAA01.JSP

2) 패키지 기준
I) 비즈니스 빈 : common.*
com.Tekville.edudesk.common.*
com.Tekville.edudesk.bean.*

II) Work Bean, Servlet : 화면코드 세자리까지 패키지 명으로 이용.


Ex) lua.W~ , lua.S~

III) 수강방법에 따른 패키지 기준


- 기간수강 : lec1
- 수시수강 : lec2
- Ex) lua.lec1.W~, lua.lec1.S~, lua.lec2.W~, lua.lec2.S~

3) 클래스 기준(work bean, servlet)


~ 화면 코드를 기준으로 작성한다.
Ex) lua.Wlua01s , lua.Slua01s

4) 메소드 기준
단일 처리 다중 처리
Select getView() getList()
Delete del~
Update set~
Insert ins~

5) 객체명 기준
~ 접두어(obj) + 빈이름(첫문자는 대문자)
Ex) objMember

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 3/16


파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

6) 일반 변수(소문자)
전역변수 지역변수
String gs_lec_cd ls_lec_cd
Int gi_lec_cd li_lec_cd
Float gf_lec_cd lf_lec_cd
Long gl_lec_cd ll_lec_cd

7) 배열 변수(소문자)
전역변수 지역변수
String ags_lec_cd als_lec_cd
Int agi_lec_cd ali_lec_cd
Float agf_lec_cd alf_lec_cd
Long agl_lec_cd all_lec_cd

8) 임시 변수(소문자)
변수
String ts_lec_cd
Int ti_lec_cd
Float tf_lec_cd
Long tl_lec_cd

9) Form 명명 기준
Form Name 변수
f1, f2, … DB Table 컬럼명(대문자)

10) Include 파일 명명 기준
변수명 폼이름
접두어(in)+변수타입첫째문자 접두어(in)+일반폼명

Ex) ins, ini, inl, … Ex) inf1, inf2, …

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 4/16


파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

11) 자바 스크립트 명명 기준
함수명 변수
접두어(fnc)+Action 명 접두어(j)+변수타입첫째문자

Ex)fncSubmit() Ex) js, ji, jf, jl, …

12) SQL 부분 명명 기준
객체명 일반 객체명 기준에서 예외
sql Query 문장을 담을 String 변수
rs ResultSet
stmt Statement
pstmt PreparedStatement
rsmd ResultSetMetaData
conn Connection

Query 문장 기준 대문자로 작성한다.


SELECT, FROM, WHERE,AND(OR) 앞에 스페이스 처리
Ex)
sql=” SELECT COLUMN1,COLUMN2,COLUMN3,”+
“COLUMN4,COLUMN5, … , COLUMN”+
“ FROM TABLE1,TABLE2”+
“ WHERE COLUMN1=’ABCDEFG’”+
“ AND COLUMN2=1234+
“ OR COLUMN3=5678”;

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 5/16


파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

각 LAYAER 별 개발 코딩 방법론 (JSP)


1. JSP 에서의 공통규칙
: 파라미터 이름을 정의할 때 실제 DB 테이블과 관련 있는 파라미터들은 테이블의 필드 이름으로
대문자 형식의 파라미터의 이름으로 한다.
: 실제 DB 테이블의 필드이름과 관련이 없는 파라미터들은 반드시 파라미터 이름앞에 “V”를 붙인다.
(예: VTEMP)

2. INSERT/UPDATE/DELETE 시 JSP 에서 지켜야 할 규칙


1) INSERT/DELETE/UPDATE 페이지에서 2 개의 파라미터는 반드시 삽입을 해야한다.
가. 파라미터 1 (VEVENT) : EVENT_ko_KR.properties 파일에 들어갈 이벤트 이름
EVENT_ko_KR.properties 파일에 사전에 이벤트 이름과 이벤트에서 사용될
CLASS 이름이 입력이 되어 있어야 한다.

나. 파라미터 2(VTABLE) : DB 에 삽입할 필드들을 가지고 있는 테이블 이름

[EVENT_ko_KR.properties 파일의 SAMPLE]

# 페이지를 이동할 경우
MOVE=common.MovePage
# 등록 테스트 하는 부분
TINSERT=test.GenInsertXml

[JSP 파일에 삽입된 파라미터 SAMPLE]

<input type="hidden" name="VTABLE" value="TEST">


<input type="hidden" name="VEVENT" value="TINSERT">

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 6/16


파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

다. FORM 의 ACTION 처리는 반드시 “/servlet/common.Controller”를 호출한다.


[. FORM 의 ACTION SAMPLE]

<form name="frm1" method="post" action="/servlet/common.Controller" method="post"


>

3. SELECT 시의 JSP 에서 지켜야 할 규칙


1. 페이지 최 상단 HEAD 부분에는
“<%@ page language="java" import="com.tekville.edudesk.common.Resultstatus" contentType="text/html;
charset=euc-kr" %>”를 삽입한다.

2. 다음에 사용할 WORK_BEAN 을 생성한다.


<jsp:useBean id=" IDSELECT " class="testSelect.Select" />
ID 이름은 ID+클래스이름으로 한다(패키지 이름을 제외한)
예)IDSELECT

3. 앞 페이지에서 넘어온 프로퍼티들을 셋팅한다.


<jsp:setProperty name=" IDSELECT " property="*" />

4. 실제 필요한 로직을 실행한다.


<% IDSELECT.setGlobalVal(request);%>

[.SELECT 시의 JSP 의 HEAD SAMPLE]

<%@ page language="java" import="com.tekville.edudesk.common.Result" contentType="text/html;


charset=euc-kr" %>

<jsp:useBean id=" IDSELECT " class="testSelect.Select" />


<jsp:setProperty name=" IDSELECT " property="*" />
<%
Result objResult = IDSELECT. setGlobalVal (request);
if(objResult.getResultcode() ==Result.FAILURE){
System.out.println( request.getRequestURI()+":"+objResult.getResultmessage());
out.println("<script> fncMsgShow(600,1,580,0,0);</script>");
out.println("<script> top.close();</script>");
}
%>

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 7/16


파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

각 LAYAER 별 개발 코딩 방법론 (WorkBean –SELECT 시에 사용되 는 부 분 )

1. 반드시 “BaseWBean.class”를 상속 받아야 한다.


[. FORM 의 ACTION SAMPLE]
public class Select extends BaseWBean{
}

2. BaseWBean.class 의 추상메쏘드 1 개를 반드시 구현을 해야한다.


이 메쏘드를 JSP 가 호출하기 때문에 여기서 반드시 필요한 로직을 구현해야 한다.

public Result setGlobalVal(HttpServletRequest objRequest) {


}

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 8/16


파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

3. 기본적으로 반드시 import 해야 할 패키지 이름들


import com.tekville.edudesk.bean.*;
import com.tekville.edudesk.common.*;
import common.*;
import org.jdom.Document;
import javax.servlet.http.*;

4. 프로그램 흐름
1. class 가 정의되어 있는 바로 하단에 사용할 글로벌 변수들을 “private” 타입으로 정의를 한다.
public class Select extends BaseWBean{

private String gs_html;


private String gs_leccd;

2. 모든 글로벌 변수가 정의된 후에 그 하단에 필요한 getter,setter 메쏘드를 정의한다.


public class Select extends BaseWBean{

private String gs_html;


private String gs_leccd;

public String getHTML(){ return gs_html; }


public void setHTML(String ls_value){ gs_html=ls_value; }

다. “setGlobalVal() “ 메쏘드에서의 프로그램 흐름


1) 로컬에서 사용할 변수를 설정한다.
2) XSL 경로 설정
3) Try 절 삽입
4) 컨넥션 얻기
5) 호출할 비즈니스 객체 생성
6) 비즈니스객체에서 메쏘드 호출
7) HTML 을 생성
8) Catch 절에서 에외처리
9) Finally 절에서 DB connection 을 끊는다.
무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 9/16
파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

** 만약 여러 개의 비즈니스 클래스에서 메쏘드를 호출할 경우에는 마,바,사 를 반복한다.


public Result setGlobalVal(HttpServletRequest objRequest) {

String ls_localvalue =null;


Int ln_localvalue = 0;

String XSL_SOURCE_FILE =
StringUtil.replace(objRequest.getRealPath(objRequest.getRequestURI()),"jsp","xsl"
);

try{
super.getDBConnection();
TestSelect objTestSelect = new TestSelect(super.objDbHelper,super.objResult);
Document objDocument = objTestSelect.getTest();
gs_html = getHtmlToXml(objDocument,XSL_SOURCE_FILE);

return super.objResult;

}catch(java.sql.SQLException e){
super.WriteError("Select","setGlobalVal",e);
return super.objResult;
} catch(Exception e){
super.WriteError("Select","setGlobalVal",e);
return super.objResult;
}finally {
if(objDbHelper.isDBTransaction(objResult)) {

}else{

}
}
}

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 10/16


파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

각 LAYAER 별 개발 코딩 방법론 (WorkBean –INSERT/UPDATE/DELETE 시에 사용되 는 부 분 )


=> 단일 로우에 대한 실행

1.반드시 “BaseSBean.class”를 상속 받아야 한다.

public class Select extends BaseSBean{


}

2. BaseSBean.class 의 추상메쏘드 2 개를 반드시 구현을 해야한다.


추상메쏘드 1 : public String getUrl() 메쏘드는 반드시 구현울 해야한다.
: 이 메쏘드에서 호출하는 uriCreation(String ls_event) 메쏘드는 BaseSBean class 에 구현이
되어 있으며, 여기 시그너처로 들어가는 ls_event 는 “URL_ko_KR.properties” 파일에
정의가 되어 있어야 한다.

[URL_ko_KR.properties SAMPLE]

# 인서트 테스트 하는 시작페이지


TINSERT=/test/in_common.jsp
# 업테이트 테스트 하는 시작페이지
TUPLOAD=/test/up_common.jsp
# 에러 발생시
ERROR=/test/error.jsp
# 호출 이벤트가 없을때
NO_EVENT=/test/no_event.jsp

[구현해야할 메쏘드 SAMPLE]


public String getUrl() {
return uriGreation("TINSERT");
}

public void process(HttpServletRequest objRequest,HttpServletResponse objResponse)


throws Exception {

추상메쏘드 2 : public void process(HttpServletRequest objRequest,HttpServletResponse objResponse)


무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 11/16
파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

Controller 에서 호출되는 메쏘드로서 실제 비즈니스 클래스를 호출하고,


필요한 로직을 구현하는 기능을 삽입해야 한다.

3. 기본적으로 반드시 import 해야 할 패키지 이름들


import com.tekville.edudesk.common.*;
import com.tekville.edudesk.bean.*;
import common.*;
import javax.servlet.http.*;
import java.util.*;
import org.jdom.Document;

4. 프로그램 흐름
A. class 가 정의되어 있는 바로 하단에 사용할 글로벌 변수들을 “private” 타입으로 정의를 한다.
public class GenUploadXml extends BaseSBean{

private String gs_html;


private String gs_leccd;

B. “process () “ 메쏘드에서의 프로그램 흐름


1) 로컬에서 사용할 변수를 설정한다.
2) Try 절 삽입
3) Request 로 넘어온 파라미터를 Hashtable 에 담아둔다.
4) Hashtable 에서 파라미터를 추가하거나, JSP 에서 넘어온 파라미터를 가공하고
재 추가한다.
5) Hashtable 을 이용해서 XML DOC 를 얻는다.
6) 비즈니스 빈의 객체를 생성한다.
7) 생성된 비즈니스 객체에서 원하는 메쏘드를 호출한다.
8) JSP 에 넘겨줄 파라미터를 생성한다.( gs_param 이라는 이름에 파라미터들을 담는다)
9) Exception 처리를 하여 에러 발생시 Result 에 담아둔다.
10) Finally 처리를 하여 rollback/commit 을 결정하고 DB connection 및 기타 Resource 들을 닫는다.

** 만약 여러 개의 비즈니스 클래스에서 메쏘드를 호출할 경우에는 마,바,사 를 반복한다.

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 12/16


파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

public void process(HttpServletRequest objRequest,HttpServletResponse objResponse)


throws Exception {
try{
super.getDBConnection(); // DB 와 Result 를 만든다.
// Request 로 넘어오는 모든 데이터들을 Hashtable 에 담아둔다.
Hashtable objHash = getHashParam(objRequest);

* 여기서 Request 에서 넘어온 파라미터 중에서 가공이 필요한 경우에는


* Hashtable 에서 가공을 한다..
String ls_where = "MBR_ID='이민호' AND MBR_NM='이형세'";
objHash.put("WHERE",ls_where);
String ls_mbr_ss = "이동훈";
objHash.put("MBR_SS",ls_mbr_ss);

* XML Doc 를 생성한다.


Document objDocument = super.getXml(objHash,super.UPDATE);
* 비지니스 클래스의 객체를 생성한다.
TestSelect objTestSelect = new TestSelect(super.objDbHelper,super.objResult);
* 비지니스 객체에서 원하는 기능을 호출한다.
objTestSelect.setTest(objDocument);
* JSP 에 넘겨줄 파라미터를 생성한다.
gs_param = "SEQ_NO="+(String)objHash.get("MBR_ID");
}catch(Exception e) {
objResult.setException(e);
super.WriteError("GenInsertXml","test",objResult);
throw e;
}finally {
if(objDbHelper.isDBTransaction(objResult)) {
java.io.PrintWriter out = objResponse.getWriter();
out.println("<script>alert('수정되었다');</script>");
}else{

}
}
}

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 13/16


파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

각 LAYAER 별 개발 코딩 방법론 (Bussiness Bean Class 정의 방법 )

1. 반드시 “BaseBUSBean.class”를 상속 받아야 한다.

public class TestSelect extends BaseBUSBean{


}

2. 생성자는 2 개의 시그너쳐를 받는다.


*시그너쳐 1 : DB 핸들러 : DbHelper.class
* 시그너쳐 2 : ERROR 핸들러 : Result.class
* 2 개의 시그너츠는 상위클래스의 생성자에서 초기화된다.

public TestSelect(DbHelper objDbHelper,Result objResult) {


super(objDbHelper,objResult);
}

3. 메소드를 정의하는 규칙(Select 절 - Return 값이 XML 일 경우 )


1. 메소드가 정의되어 있는 하단에 로컬 변수를 정의한다,.
2. SQL 을 생성한다.
3. Try 절을 생성한다.
4. super.getXml(SQL); 을 호출해서 XML 을 리턴한다.
5. Catch 절에서 예외발생시의 처리를 한다.

public Document getTest() throws java.sql.SQLException,Exception{


String SQL = " SELECT * FROM TEST ";
try{
return super.getXml(SQL);

}catch(Exception e){
super.WriteError("TestSelect","getTest",e);
throw e;
}

무단복제, 전재금지
} 작성일 : 08-2-9 REV 1.0 14/16
파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

4. 메소드를 정의하는 규칙(Select 절 - Return 값이 XML 이 아닐경 우 )


1. 메소드가 정의되어 있는 하단에 로컬 변수를 정의한다,.
2. SQL 을 생성한다.
3. Try 절을 생성한다.
4. objDbHelper.callRS(SQL);을 호출해서 ResultSet 을 얻는다.
5. ResultSet 에서 Resturn 할 값을 생성한다.
6. ReusltSet 과 Statement 를 닫아준다
7. 생성한 값을 리턴한다.
8. Catch 절에서 예외발생시의 처리를 한다.

public String getTestItemOne() throws java.sql.SQLException,Exception{

String ls_return="wwww";
String SQL = " SELECT mbr_id FROM TEST where mbr_id='백영경'";

try{
objDbHelper.callRS(SQL);

if(objDbHelper.rs.next()){
ls_return = objDbHelper.rs.getString(1);
}

if(objDbHelper.rs != null) objDbHelper.rs.close();


if(objDbHelper.stmt != null) objDbHelper.stmt.close();

return ls_return;

}catch(Exception e){
super.WriteError("TestSelect","getTestItemOne",e);
throw e;
}

5. 메소드를 정의하는 규칙(Insert/Update/Delete 행위 일경우 )


1. Try 절을 생성한다.
2. 상위 클래스의 excute 을 호출한다.
(insert : super.INSERT / update: super.UPDATE / delete: super.DELETE)
3. 결과 값을 리턴한다.(int 형 : 처리된 결과의 개수)
4. Catch 절에서 예외발생시의 처리를 한다.

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 15/16


파일명 프로젝트 관리번호
제 목 개발 코딩 기준서

public int insTest(Document objDocument)throws java.sql.SQLException,Exception{

try{
return super.excute(objDocument,super.INSERT);

}catch(Exception e){
super.WriteError("TestSelect","getTest",e);
throw e;
}

무단복제, 전재금지 작성일 : 08-2-9 REV 1.0 16/16