• 검색 결과가 없습니다.

데이터베이스형 컨텐츠 출력화면 구현

데이터베이스형 컨텐츠 출력 화면은 개별 테이블 단위로 이루어진다. 테이블 리스트는 컨텐츠 형식을 표현하는 것이고 개별 테이블의 리스트가 실제 컨텐 츠 목록이 되는 것이다. 또한 각각의 리스트에 100byte 이상의 컬럼 값이 있 으면 시스템 상에서 이 컬럼을 본문으로 인식해 상세 보기 출력 뷰가 지원 된 다. 즉, 인터넷 게시판의 경우 게시물 목록이 존재하며 본문 보기가 따로 지 원되는 것처럼 본 시스템에서도 같은 기능을 지원하는 것이다.

<그림 4-9> 개별 테이블의 컨텐츠 목록

위와 같은 컨텐츠 내용을 화면에 출력 하는 것이 데이터베이스형 컨텐츠 출력 뷰의 기본 모양이 되며 상세보기를 하게 되면 <그림 4-9>와 같은 상세보기 화면이 출력 된다.

<그림 4-10> 기본 뷰와 상세 뷰

이러한 기능을 통해 컨텐츠를 보다 풍부하게 표현할 수 있으며 다양한 형태의 컨텐츠 제작 및 관리가 가능해 지는 것이다.

제 5 장 결론 및 향후 연구 방향

본 논문은 복잡해져가는 웹상의 컨텐츠에 대한 관리 방안으로서 웹 컨텐츠를 정의하고 웹 컨텐츠를 쉽게 관리할 수 있는 방안으로서 웹 기반 컨텐츠 관리 시스템의 개념을 소개하고 플랫폼 독립적인 기술인 Java 웹 프로그래밍 기술 을 사용하여 시스템을 설계 및 구현 하였다.

본 연구의 성과를 요약하면 다음과 같다.

첫째, 웹 컨텐츠를 실제 저장 및 표현하는 형태로 분류하여 웹 컨텐츠의 관리 및 저작에 있어 개념을 제시 하였다.

둘째, 웹 컨텐츠를 관리하는데 있어 사용자 측면에서 유연하고 쉬운 관리 시 스템인 웹 기반 컨텐츠 관리 시스템을 정의하고 설계 및 구현하였다.

셋째, 기술적으로 java 기반의 웹 프로그래밍 기술을 이용하여 다양한 상황에 따라 플랫폼 독립적으로 사용될 수 있는 솔루션을 제시 하였다.

본 논문에서는 웹 컨텐츠를 제작하고 표현하는데 논의를 집중하였기 때문에 시스템의 관리 및 비즈니스 프로세스 관점에서 논의되지 않았다. 현재는 컨텐 츠 관리 시스템이 기업 정보 포탈(Enterprise Information Portal)이나 지식 관리 시스템에 컨텐츠 관리 모듈로 통합 제공되고 있다. 따라서 이러한 비즈 니스 관점이 결합된 통합 시스템으로서의 웹 기반 컨텐츠 관리 시스템에 대한 연구가 이루어져야 할 것이다.

또한 통합 시스템의 표현 및 운용에 있어 개인화(personalization, customization)등이 추세로 자라잡고 있다. 이에 따라 웹 기반 컨텐츠 관리 시스템도 개인화 기능의 결합 방안에 대한 연구가 필요 하다.

< 참고문헌 >

이성식(2001) “디지털컨텐츠디자인의 개념설정에 대한 기반연구”, 기초조형학연구,

Vol.2. No.2, URL :

http://eroom.kookmin.ac.kr/study/research_02_index.htm

이승철(2001) “ 성공적인 CMS의 도입·운영 방안,” Primium Report, (주)큐 앤솔브

주현택(2001), “컨텐츠 관리를 위한 그 시각과 방법,” 삼성 SDS IT Review, 삼성 SDS

홍은주(2001), “CMS(Content Management System)," 삼성 SDS IT Review, 삼성 SDS

조선주(2002), “ECM(Enterprise Content Management)의 개요,” 시사컴퓨

터 2002년 7월호, (주)시사정보기술, URL:

http://http://www.sisait.co.kr/column/200207/tech/ecm.htm

서혜현(2001), “CMS 솔루션 분석과 도입 전략 - 국내외 CMS 솔루션 기능 분석,” IT Insight, 소프트뱅크 리서치

Shailakes, C. C and Tylman, J.,(1998) "Enterprise Information Portals", New York : Merril Lynchm

SUN(2002), "Java 2 Enterprise Edition Overview," SUN Microsystems, URL:http://java.sun.com/j2ee/overview.html

SUN(2002), "Enterprise Java Beans Technology," SUN Microsystems, URL:http://java.sun.com/products/ejb

Linda G. DeMichiel, "Enterprise Java Beans Specification, Version 2.1,"

SUN Microsystems

BEA Systems(2001), "Using The Web Service Portlet Wizard"

Rugullies, Erica(2001), "Choosing Right B2B Catalog Management

Solution", Giga Information Group

Tyndale, Peter(2002), "A Taxonomy of Knowledge Management Software Tools : Origins and Applications", Evaluation and Program Planning, Vol.25, 183-190

Robertson, James(2002), "How To Evaluate Content Management System", KM Column, Step Tow Design Pty

부록 A. 소스 코드

본 논문에서 구현한 웹 기반 컨텐츠 관리 시스템의 코드들은 [표 부록-1]과 같이 자성되었다. 주요 파일만을 참고로 제시한다.

종류 소 스 화 일 명

Model ColumnModelBean.java TableModelBean.java ImageBean.java TextContentBean.java

Servlet TableContentCtrl.java TableModelCtrl.java ImageCtrl.java TextEditorCtrl.java

Controller

ColumnModelMgr.java TableContentMgr.java TableModelMgr.java ImageMgr.java

TextEditorMgr.java

JSP

input_image.jsp select_image.jsp text_content_editor.jsp

text_content_list.jsp view.jsp table_content.jsp table_create.jsp modify.jsp portlet.jsp

view_detail.jsp write.jsp

Util Class ConfParam.java ConnectionResource.java

ConnectionWrapper.java Util.java HtmlUtility.java HTML ColorSelect.HTML, dlg_ins_table.HTML

다음은 주요 파일만을 예로 나타낸 것이다.

A1 Model 코드

// ColumnModelBean.java public class ColumnmodelBean{

private String columnName private String columnType private int columnLength

public void setColumnName(String i){ columnName = i } public void setColumnType(String i){ columnType = i}

public void setColumnLength(int i) { columnLength = i}

public String getColumnName(){return columnName}

public String getColumnType(){return columnType}

public int getColumnLength() {return columnLength}

}

//TableModelBean

public class TableModelBean{

private int id

private String contentTitle private String tableName private String descript private String input_date private String tOption

//setter method

public void setId(int i){id = i}

public void setContentTitle(String i){contentTitle = i}

public void setTableName(String i){tableName = i}

public void setDescript(String i){descript = i}

public void setInput_date(String i){input_date = i}

public void setTOption(String i){tOption = i}

//getter method

public int getId(){return id}

public String getContentTitle(){return contentTitle}

public String getTableName(){return tableName}

public String getDescript(){return descript}

public String getInput_date(){return input_date}

public String getTOption(){return tOption}

}

A2. Servlet

//ImageCtrl.java import javax.servlet.*;

import javax.servlet.http.*;

import java.util.*;

import java.text.*;

import com.anam.database.*;

import com.anam.servlet.*;

import com.anam.conf.*;

public class ImageCtrl extends HttpServlet { public void doPost(

javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)

throws javax.servlet.ServletException, java.io.IOException { System.out.println("ImageCtrl init!");

RequestWrapper rw = new RequestWrapper(request);

String processMode = rw.getStr("processMode");

System.out.println("processMode :" + processMode);

ImageMgr im = new ImageMgr();

ImageBean bean = new ImageBean();

int count = im.rowCount();

int id

if(processMode.equals("insert")){

bean = makeBean(request);

System.out.println("insert :");

if(im.insert(bean)){

response.sendRedirect("select_image.jsp");

}else{

response.sendRedirect("select_image.jsp&error=y");

}

}else if(processMode.equals("modify")){

bean = this.makeBean(request);

id = rw.getInt("id");

if(im.delete(id)){

System.out.println("Syntax Error - processMode" + processMode);

response.sendRedirect("../administrator/content_editor/select_image.jsp&er ror=y");

}

}

public void doGet(

javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)

throws javax.servlet.ServletException, java.io.IOException { System.out.println("ImageCtrl init!");

RequestWrapper rw = new RequestWrapper(request);

String processMode = rw.getStr("processMode");

System.out.println("processMode :" + processMode);

ImageMgr im = new ImageMgr();

ImageBean bean = new ImageBean();

//int count = im.rowCount();

int id

if(processMode.equals("insert")){

bean = makeBean(request);

System.out.println("insert :");

bean = this.makeBean(request);

System.out.println("modify :");

id = rw.getInt("id");

if(im.delete(id)){

System.out.println("Syntax Error - processMode" + processMode);

response.sendRedirect("select_image.jsp&error=y");

}

}

public ImageBean makeBean(javax.servlet.http.HttpServletRequest request){

RequestWrapper rw = new RequestWrapper(request);

ImageBean bean = new ImageBean();

bean.setId(rw.getInt("id"));

bean.setFile(rw.getStr("file"));

bean.setDescript(rw.getStr("descript"));

return bean

} }

//TextEditorCtrl.java

import javax.servlet.*;

import javax.servlet.http.*;

import java.util.*;

import java.text.*;

import com.util.*;

import com.servlet.*;

public class TextEditorCtrl extends HttpServlet { public void doPost(

javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)

throws javax.servlet.ServletException, java.io.IOException { RequestWrapper rw = new RequestWrapper(request);

String processMode = rw.getStr("processMode");

TextEditorMgr tem = new TextEditorMgr();

TextContentBean bean = new TextContentBean();

//int count = tem.rowCount();

int id

if(processMode.equals("insert")){

bean = makeBean(request);

if(tem.insert(bean)){

response.sendRedirect("../administrator/content_editor/text_content_list.jsp

?error=n&processMode=insert");

}else{

response.sendRedirect("../administrator/content_editor/text_content_list.jsp

?error=y&processMode=insert");

}

}else if(processMode.equals("modify")){

bean = this.makeBean(request);

if(tem.modify(bean)){

response.sendRedirect("../administrator/content_editor/text_content_list.jsp

?error=n&processMode=modify");

id = rw.getInt("id");

if(tem.delete(id)){

public void doGet(

javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)

throws javax.servlet.ServletException, java.io.IOException { RequestWrapper rw = new RequestWrapper(request);

String processMode = rw.getStr("processMode");

TextEditorMgr tem = new TextEditorMgr();

TextContentBean bean = new TextContentBean();

//int count = tem.rowCount();

int id

if(processMode.equals("insert")){

bean = makeBean(request);

if(tem.insert(bean)){

bean = this.makeBean(request);

if(tem.modify(bean)){

response.sendRedirect("../administrator/content_editor/text_content_list.jsp

");

}else{

response.sendRedirect("../administrator/content_editor/text_content_list.jsp

&error=y");

}

}else if(processMode.equals("delete")){

id = rw.getInt("id");

if(tem.delete(id)){

public TextContentBean makeBean(javax.servlet.http.HttpServletRequest request){

RequestWrapper rw = new RequestWrapper(request);

TextContentBean bean = new TextContentBean();

bean.setId(rw.getInt("id"));

public class TextEditorMgr {

TextContentBean beans[] = null;

TextContentBean bean = null;

ConnectionWrapper conw = null;

Connection conn =null;

ResultSet rs = null;

PreparedStatement pstmt = null;

Statement stmt = null;

String count=null;

int inputCount=0;

static final String tableName = "TEXT_CONTENT";

String sqlSelectAll = null;

String sqlSelect = null;

String sqlInsert = null;

String sqlModify = null;

String sqlDelete = null;

String now = util.getCurrentDate();;

public TextEditorMgr(){

sqlSelectAll = "Select * from text_content";

sqlSelect = "Select * from " + tableName +" where id = ?";

public TextContentBean makeBean(ResultSet rs){

try{

TextContentBean bean = new TextContentBean();

bean.setId(rs.getInt("id"));

public TextContentBean[] selectAll(){

}catch(SQLException e) {

e.printStackTrace();

public TextContentBean select(int id){

try{

conw = new ConnectionWrapper();

conn = conw.getConnection();

pstmt = conn.prepareStatement(sqlSelect);

pstmt.setInt(1, id);

rs = pstmt.executeQuery();

if(rs.next()){

bean = makeBean(rs);

}

}catch(SQLException e) {

e.printStackTrace();

}catch(Exception e){}

public boolean insert(TextContentBean b){

try{

conw = new ConnectionWrapper();

conn = conw.getConnection();

pstmt = conn.prepareStatement(sqlInsert);

now = util.getCurrentDate();

String content = b.getContent();

content = com.kookmin.util.HtmlUtility.replaceStr(content,

"\r","");

content = com.kookmin.util.HtmlUtility.replaceStr(content,

"'","`");

inputCount = this.rowCount();

System.out.println(content);

}catch(SQLException e) {

e.printStackTrace();

public boolean modify(TextContentBean b){

try{

conw = new ConnectionWrapper();

conn = conw.getConnection();

pstmt = conn.prepareStatement(sqlModify);

pstmt.setString(1, b.getTitle());

}catch(SQLException e) {

e.printStackTrace();

public boolean delete(int id){

try{

conw= new ConnectionWrapper();

conn = conw.getConnection();

pstmt = conn.prepareStatement(sqlDelete);

pstmt.setInt(1, id);

pstmt.executeUpdate();

return true;

}catch(SQLException e) {

e.printStackTrace();

}catch(Exception e){}

public int rowCount(){

try{

conw = new ConnectionWrapper();

conn = conw.getConnection();

stmt = conn.createStatement();

rs = stmt.executeQuery("SELECT MAX(ID) FROM " + tableName);

if(rs.next()){

count =rs.getString(1);

System.out.println("큰 레코드 값 :" +count);

inputCount = java.lang.Integer.parseInt(count, 10) + 1;

System.out.println("다음 번호 : "+inputCount);

}else{

inputCount=0;

}

}catch(SQLException e) {

e.printStackTrace();

import java.text.*;

import com.anam.database.*;

import com.anam.servlet.*;

import com.anam.conf.*;

public class ImageCtrl extends HttpServlet {

public void doPost(

javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)

throws javax.servlet.ServletException, java.io.IOException { System.out.println("ImageCtrl init!");

RequestWrapper rw = new RequestWrapper(request);

String processMode = rw.getStr("processMode");

System.out.println("processMode :" + processMode);

ImageMgr im = new ImageMgr();

ImageBean bean = new ImageBean();

int count = im.rowCount();

int id;

if(processMode.equals("insert")){

bean = makeBean(request);

System.out.println("insert :");

bean = this.makeBean(request);

System.out.println("modify :");

}else if(processMode.equals("delete")){

System.out.println("delete :");

id = rw.getInt("id");

if(im.delete(id)){

System.out.println("Syntax Error - processMode"

+ processMode);

response.sendRedirect("../administrator/content_editor/select_image.jsp&error=y");

}

}

public void doGet(

javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)

throws javax.servlet.ServletException, java.io.IOException { System.out.println("ImageCtrl init!");

RequestWrapper rw = new RequestWrapper(request);

String processMode = rw.getStr("processMode");

System.out.println("processMode :" + processMode);

ImageMgr im = new ImageMgr();

ImageBean bean = new ImageBean();

// int count = im.rowCount();

int id;

if(processMode.equals("insert")){

bean = makeBean(request);

System.out.println("insert :");

if(im.insert(bean)){

response.sendRedirect("select_image.jsp");

}else{

response.sendRedirect("select_image.jsp&error=y");

}

}else if(processMode.equals("modify")){

bean = this.makeBean(request);

System.out.println("modify :");

if(im.modify(bean)){

response.sendRedirect("select_image.jsp");

}else{

response.sendRedirect("select_image.jsp&error=y");

}

}else if(processMode.equals("delete")){

System.out.println("delete :");

id = rw.getInt("id");

if(im.delete(id)){

System.out.println("success");

response.sendRedirect("../administrator/content_editor/select_image.jsp?error=n");

}else{

response.sendRedirect("select_image.jsp&error=y");

} }else{

System.out.println("Syntax Error - processMode"

+ processMode);

response.sendRedirect("select_image.jsp&error=y");

}

}

public ImageBean makeBean(javax.servlet.http.HttpServletRequest request){

RequestWrapper rw = new RequestWrapper(request);

ImageBean bean = new ImageBean();

bean.setId(rw.getInt("id"));

bean.setFile(rw.getStr("file"));

bean.setDescript(rw.getStr("descript"));

return bean;

}

}

A4. JSP 코드

//text_content_editor.jsp

<%@ page contentType="text/html;charset=euc-kr" %>

<%@ page import="java.io.*" %>

<%@ page import="java.util.*" %>

<%@ page import="administrator.contentEditor.textEditor.*" %>

<%@ page import="com.anam.servlet.*" %>

<%@ page import="com.anam.util.*" %>

<%@ page import="com.kookmin.util.*" %>

<%

RequestWrapper rw = new RequestWrapper(request);

int id = rw.getInt("id");

System.out.println(id);

String processMode = rw.getStr("processMode");

System.out.println(processMode);

TextEditorMgr tem = new TextEditorMgr();

TextContentBean bean = new TextContentBean();

String title = ""

String content = ""

if(processMode.equals("modify")){

bean = tem.select(id);

System.out.println("DB1");

if(bean != null){

System.out.println("DB2");

title = bean.getTitle();

System.out.println(title);

content = bean.getContent();

content = com.kookmin.util.HtmlUtility.NL2BR(content);

content = com.kookmin.util.HtmlUtility.replaceStr(content, "\r","");

content = com.kookmin.util.HtmlUtility.replaceStr(content, "'","`");

//content = com.kookmin.util.HtmlUtility.translate(content);

System.out.println(content);

<meta NAME="GENERATOR" Content="Microsoft FrontPage 4.0">

<title>TEXT CONTENT EDITOR</title>

<script LANGUAGE="Javascript" SRC="inc/compose.js"></script>

<script language="Javascript">

<!--

if (top.location != self.location) { top.location = self.location.href }

if (document.layers) { if (e.which == 3) {

if (document.layers) {

document.captureEvents(Event.MOUSEDOWN);

}

document.onmousedown=click;

//

</script> -->

<SCRIPT language = "Javascript">

<!--var bLoad=false var pureText=true

var bodyTag="<BODY MONOSPACE STYLE=\"font:10pt arial,sans-serif\">"

var bTextMode=false

public_description=new Editor

function Editor() { this.put_html=SetHtml;

this.get_html=GetHtml;

this.put_text=SetText;

this.get_text=GetText;

this.CompFocus=GetCompFocus;

}

function GetCompFocus() { Composition.focus();

}

function GetText() {

return Composition.document.body.innerText;

}

function SetText(text) {

text = text.replace(/\n/g, "<br>")

Composition.document.body.innerHTML=text;

}

function GetHtml() { if (bTextMode)

return Composition.document.body.innerText;

else { cleanHtml();

cleanHtml();

return Composition.document.body.innerHTML;

} }

function SetHtml(sVal) {

if (bTextMode) Composition.document.body.innerText=sVal;

else Composition.document.body.innerHTML=sVal;

}

function saveform(form) { if (bTextMode)

form.text.value = document.frames.Composition.document.body.innerText;

else

form.text.value = document.frames.Composition.document.body.innerHTML;

//form.submit();

}

function initEditor() {

Composition.document.designMode="on"

Composition.document.open()

Composition.document.write("<HTML><BODY></BODY></HTML>") Composition.document.close()

}

function preview(loc, name, width, height) {

var _params =

"width="+width+",height="+height+",resizable=no,scrollbars=no,status=no"

// CENTER ON BROWSERS WHICH SUPPORT JSCRIPT 1.2

function getWidth() {

var w = eval(prompt("작성할 포틀릿의 가로 길이 (pixel) :", "")) return w

}

function getHeight() {

var h = eval(prompt("작성할 포틀릿의 세로 길이(pixel) :", "")) return h

}

// -->

</script>

<link REL="stylesheet" TYPE="text/css" HREF="inc/specialstyles.css">

<HEAD>

<META name="GENERATOR" content="IBM WebSphere Studio">

</head>

<body onload="loadcontent()" leftmargin="0" topmargin="0" marginwidth="0"

marginheight="0"><B></B>

<form name="form1" action="../../textEditor/TextEditorCtrl" method="post"

onsubmit="saveform(this)" >

<table border="0" width="50%" cellpadding="2" cellspacing="0">

<tr align="left">

<td>

<div class="yToolbar" ID="ParaToolbar">

<div class="TBHandle"></div>

<select id="ParagraphStyle" class="TBGen" title="Paragraph Format" language="javascript"

onChange="format('formatBlock',this[this.selectedIndex].value);this.selectedIndex=0"

name="select">

<option class="heading" selected>Paragraph

<option value="Normal">Normal

<option value="Heading 1">Heading 1 &lt;H1&gt;

<option value="Heading 2">Heading 2 &lt;H2&gt;

<option value="Heading 3">Heading 3 &lt;H3&gt;

<option value="Heading 4">Heading 4 &lt;H4&gt;

<option value="Heading 5">Heading 5 &lt;H5&gt;

<option value="Heading 6">Heading 6 &lt;H6&gt;

<option value="Address">Address &lt;ADDR&gt;

<option value="Formatted">Formatted &lt;PRE&gt;

<option style="color: darkred" value="removeFormat">Remove Formatting

</select>

<select ID="FontName" class="TBGen" TITLE="Font Name" LANGUAGE="javascript"

onchange="format('fontname',this[this.selectedIndex].value);this.selectedIndex=0">

<option class="heading" selected>Font

<option value="바탕">바탕

<option value="Arial Black">Arial Black

<option value="Arial Narrow">Arial Narrow

<option value="Comic Sans MS">Comic Sans MS

<option value="Courier New">Courier New

<option value="System">System

<option value="Times New Roman">Times New Roman

<option value="Verdana">Verdana

<option value="Wingdings">Wingdings

</select>

<select ID="FontSize" class="TBGen" TITLE="Font Size" LANGUAGE="javascript"

onchange="format('fontsize',this[this.selectedIndex].value);this.selectedIndex=0">

<option class="heading" selected>Size

<option value="1">1

<div ID="EditMode" class="TBGen" style="width:150" TITLE="Editing Mode">

<input type=checkbox name="switchMode" LANGUAGE="javascript"

onclick="setMode(switchMode.checked)"> HTML 소스보기

</div>

</div>

<div class="yToolbar" ID="FormatToolbar">

<div class="TBHandle"></div>

<div class="Btn" TITLE="Cut" LANGUAGE="javascript" onclick="format('cut')">

<img class="Ico" src="images/cut.gif" width="22" height="22">

</div>

<div class="Btn" TITLE="Copy" LANGUAGE="javascript" onclick="format('copy')">

<img class="Ico" src="images/copy.gif" width="22" height="22">

<img class="Ico" src="images/copy.gif" width="22" height="22">

관련 문서