I. Introduction... 1 II. jquery jqgrid jqgrid 를위한 Spring MVC Controller 구현 JqGridVO 상속 BoardController.list(

Size: px
Start display at page:

Download "I. Introduction... 1 II. jquery jqgrid jqgrid 를위한 Spring MVC Controller 구현 JqGridVO 상속 BoardController.list("

Transcription

1 Anyframe jquery Plugin Version 저작권 삼성 SDS 본문서의저작권은삼성 SDS 에있으며 Anyframe 오픈소스커뮤니티활동의목적하에서자유로운이용이가능합니다. 본문서를복제, 배포할경우에는저작권자를명시하여주시기바라며본문서를변경하실경우에는원문과변경된내용을표시하여주시기바랍니다. 원문과변경된문서에대한상업적용도의활용은허용되지않습니다. 본문서에오류가있다고판단될경우이슈로등록해주시면적절한조치를취하도록하겠습니다.

2 I. Introduction... 1 II. jquery jqgrid jqgrid 를위한 Spring MVC Controller 구현 JqGridVO 상속 BoardController.list() jqgrid 를이용한 HTML 개발 jqgrid 를위한 Javascript 라이브러리 dependency jqgrid Type jqgrid Type jqgrid 와 jstree 연동 Quickpager jqgrid 와 quickpager 연동 jstree jstree 의활용 Upload uploadify 소개 jqueryupload.js jquery-ui Autocomplete Tab widget Dialog widget Button widget Theme Validation ii

3 I.Introduction jquery Plugin 은 AJAX 를활용한 Spring MVC 기반의웹어플리케이션개발사례를제공할목적으로만들어졌다. jquery Plugin 은 JSON 형태의데이터를이용한공통 Controller 클래스및 jquery Javascript 프레임워크및이를바탕으로개발된오픈소스 UI Component 를활용하여작성된샘플코드와이를활용하는데필요한참조라이브러리들로구성되어있으며, Plugin 샘플코드에활용된 jquery UI 컴포넌트들로는 jqgrid, quickpager, jstree, jquery-ui(button, dialog, tab, autocomplete), uploadify 등이있다. Installation Command 창에서다음과같이명령어를입력하여 jquery plugin 을설치한다. mvn anyframe:install -Dname=jquery installed(mvn anyframe:installed) 혹은 jetty:run(mvn clean jetty:run) command 를이용하여설치결과를확인해볼수있다. Dependent Plugins Plugin Name Query [ anyframe/plugin/optional/query/1.1.2/ reference/htmlsingle/query.html] Version Range > * Message Source 추가하기 jquery 플러그인은별도의 Message Source 파일을가지고있다. 플러그인을설치할때파일은다운로드되었으니, context-message.properties 파일에 <value>classpath:message/message-jquery</ value> 를추가하여사용하도록한다.

4 II.jQuery

5 1.jqGrid jqgrid 는웹상에서 tabular data 를표현하고조작하기위한솔루션을제공하는 AJAX 기반자바스크립트컨트롤이다.( 1.1.jqGrid 를위한 Spring MVC Controller 구현 JqGridVO 상속 JqGridVO 는 jqgrid 적용을위한 Abstract Domain Class 로서 jqgrid 에서 parameter 로제공하는 page, sord, sidx 를 member 로가지고있으므로이클래스를상속받아 Domain 객체를구현하면별도의추가적인코딩없이 jqgrid 연동 Controller 를구현하는것이가능하다. 다음은 jqgrid 적용을위해서 JqGridVO 를상속받은 Board Domain Class 의코드일부이다. package org.anyframe.plugin.jquery.domain; public class Board extends JqGridVO implements Serializable{... 중략 BoardController.list() 현재 jquery plugin 에서는 jquery 의 Grid 컴포넌트 (jqgrid plugin) 에서 Grid 를그릴때비즈니스서비스호출후반환되는 Page 객체를바로받을수있는것이아닌 Grid 에서인식할수있는 Key 와 Value 쌍의 Map 형태로 Model 객체에셋팅해줘야한다. 다음은 BoardController = "method=list") public String = "searchkeyword", defaultvalue = "") String = "searchcondition", defaultvalue = "") String = "communityid", required = false) String communityid, Board board, Model model, HttpServletRequest request) throws Exception {... 중략... Page resultpage = boardservice.getpaginglist(board); Map<String, Object> jsonmodel = new HashMap<String, Object>(); jsonmodel.put("page", resultpage.getcurrentpage() + ""); jsonmodel.put("total", resultpage.getmaxpage() + ""); jsonmodel.put("records", resultpage.gettotalcount() + ""); jsonmodel.put("rows", resultpage.getlist()); model.addallattributes(jsonmodel); return "jsonview"; 3

6 jqgrid 위의코드에서볼수있듯이비즈니스서비스수행후 Return 값이 org.anyframe.pagination.page 타입일경우 jquery 의 Grid 에서인식할수있는 key 값으로 jsonmodel 객체를셋팅해주고있다. 1.2.jqGrid 를이용한 HTML 개발 jqGrid 를위한 Javascript 라이브러리 dependency jqgrid 를사용하기위해서는 jquery, jquery-ui, jqgrid 라이브러리가필요하다. <!-- jquery --> <script type="text/javascript" src="<c:url value='/jquery/jquery/jquery min.js'/>"></ script> <script type="text/javascript" src="<c:url value='/jquery/jquery/validation/ jquery.validate.js'/>"></script> <!-- jquery-ui --> <script type="text/javascript" src="<c:url value='/jquery/jquery/jquery-ui/jqueryui custom.min.js'/>"></script> <!-- jqgrid --> <script type="text/javascript" src="<c:url value='/jquery/jquery/jqgrid/i18n/grid.localeen.js'/>"></script> <script type="text/javascript" src="<c:url value='/jquery/jquery/jqgrid/ jquery.jqgrid.min.js'/>"></script> <script type="text/javascript" src="<c:url value='/jquery/jquery/jqgrid/plugins/ grid.setcolumns.js'/>"></script> 참고 라이브러리참조선언의순서에주의하여야한다. jqgrid 의경우필요에따라추가적인플러그인라이브러리를호출하여사용할수있다.(jqGrid 위키사이트참조 : jquery plugin 에서는크게두가지형태의 jqgrid 적용 type 을제공하고있다 jqGrid Type 1 i. : 커뮤티니의게시물 list 를제공 ii. : row 단위로 select 할수있으며, quickpager 오픈소스컴포넌트와결합하여 page navigation 을제공 iii. : jquery-ui 에서제공하는 dialog widget 과연동하여등록 / 수정기능을제공 iv. : jquery-ui 에서제공하는 autocomplete 와연동하여목록에대한검색기능을제공 다음은 type 1 게시물리스트를출력하는 tabmain.jsp 파일의일부이다. function _creategridtype1(id) { var gridid = '#grid_' + id; var paginationid = gridid + '_pagination'; $(gridid).jqgrid({ url: "<c:url value='/jqueryboard.do?method=list' />", mtype:'post', datatype : "json", 4

7 jqgrid postdata : {'communityid' : id, 'searchkeyword' : '', 'searchcondition' : '', colnames : [ '<spring:message code="board.id" />', '<spring:message code="category.name" / >', '<spring:message code="board.title" />', '<spring:message code="board.contents" />', '<spring:message code="board.regid" />', '<spring:message code="board.regdate" />', '<spring:message code="community.id" />'], jsonreader: {repeatitems: false, colmodel : [ {key : true, name : 'postid', editable:false, hidden:true, {name : 'communityname', name : 'communityname', editable:false, hidden:true, {name : 'title', index : 'title', align : 'center', editable:true, {name : 'contents', index :'contents', align : 'left', editable:true, hidden : false, {name : 'regid', index : 'regid', align : 'center', editable:false, width:50, {name : 'regdate', index : 'regdate', align : 'center', sorttype:"date", editable:true,width:70, {name : 'communityid', name : 'communityid', editable:false, hidden:true], autowidth : true, height : "auto", viewrecords : true, rownum : 10, sortable : true, loadcomplete : function(xhr) { $(paginationid).quickpager( { pagesize: "10", pageunit: "10", pageindexid: 'grid_' + id + "_pageindex", searchbuttonid: 'grid_' + id + "_btnsearch", currentpage: $(gridid).getgridparam("page"), totalcount: $(gridid).getgridparam("records"), searchurl: "#" );, gridcomplete: function() { $("#_empty",gridid).addclass("nodrag nodrop"); //$("#grid").tabledndupdate(); $(gridid).setgridwidth($('#right').width() - 40); $(window).bind('resize', function() { $(gridid).setgridwidth($('#right').width() - 40); ).trigger('resize');, loaderror: function(xhr,st,err) { alert(err); ); $("button", ".buttons").button(); $(gridid + "_btnadd").click(function() { dialogmode = "add"; AnyframeUpload.options.refId = ''; $("#dialog-form").dialog( "open" ); ); $(gridid + "_btnedit").click(function() { var rownum = $(gridid).jqgrid('getgridparam','selrow'); if(rownum == null rownum == ""){ alert('<spring:message code="board.msg.delete.alert" />'); else{ dialogmode = "edit"; $.post( "<c:url value='/jqueryboard.do?method=get'/>", {postid : rownum, function(data) { 5

8 jqgrid $("#boardpostid").val(data.board.postid); $("#boardtitle").val(data.board.title); $("#boardcontents").val(data.board.contents); $("#boardregid").val(data.board.regid); $("#boardregdate").val(data.board.regdate); $("#communities").val(data.board.communityname).selected; AnyframeUpload.options.refId = data.board.postid; AnyframeUpload.loadAttachedFileList('uploadPane'); ); ); $( "#dialog-form" ).dialog( "open" ); $(gridid + "_btnremove").click(function() { var rownum = $(gridid).jqgrid('getgridparam','selrow'); var postid = $(gridid).getcell(rownum, 'postid'); $(gridid).delgridrow( rownum, { reloadaftersubmit:true, msg:'<spring:message code="board.msg.delete.confirm" />', deldata:{postid: postid, url:"<c:url value='/jqueryboard.do?method=remove'/>" ); ); $(gridid + "_btnrefresh").click(function() { $(gridid).trigger("reloadgrid"); ); $(gridid + "_btnsearch").click(function() { $(gridid).setgridparam({ page: $(gridid + "_pageindex").val(), postdata: { searchkeyword:$(gridid + "_searchkeyword").val(), searchcondition:$(gridid + "_searchcondition").val() ); $(gridid).setgridparam({url:"<c:url value='/jqueryboard.do?method=list'/ >").trigger("reloadgrid"); ); /* auto click by enter key */ $(gridid + "_searchkeyword").keypress(function (e) { if (e.which == 13){ $(gridid + "_pageindex").val('1'); $(gridid + "_btnsearch").trigger("click"); return false; ); $(gridid + "_searchkeyword").autocomplete({ source : function(request, response){ logger.log('call'); $.ajax({ 'url' : '<c:url value="/jqueryboard.do?method=searchkeyword"/>', 'type' : 'POST', 'async' : false, 'data' : 'searchkeyword=' + $(gridid + "_searchkeyword").val() + '&searchcondition=' + $(gridid + "_searchcondition").val() + '&communityid=' + _currentnodeid, 'datatype' : 'json', 'success' : function(data){ 6

9 jqgrid logger.log('return:data.r.length=' + data.r.length); response(data.r); );, minlength : 1, select : function(event, ui) { logger.log('autocomplete selected:' + ui.item.value); $(gridid + '_searchkeyword').val(ui.item.value); $(gridid + '_pageindex').val('1'); $(gridid + '_btnsearch').trigger("click"); return false; ); 위와같이 jqgrid 로구현된리스트의모습은아래와같다. 7

10 jqgrid jqGrid Type 2 i. : 카테고리에속한커뮤니티 list를제공 ii. : cell 단위로 select/edit 할수있으며, scroll down 방식의 page navigation을제공 iii. : jquery-ui의 date-picker 컴포넌트와연동하여 date 형식의 data 수정 8

11 jqgrid iv. : jquery-ui 에서제공하는 autocomplete 와연동하여목록에대한검색기능을제공 v. : 그리드내버튼을통한삭제기능제공 다음은 type 2 방식의커뮤니티리스트를출력하는 tabmain.jsp 파일의일부이다. var iscellsaved; var lastsel_row; var lastsel_col; function _creategridtype2(id) { var gridid = '#grid_' + id; $(gridid).jqgrid({ url: "<c:url value='/jquerycommunity.do?method=list' />", mtype:'post', datatype : "json", postdata : {'categoryid' : id, colnames : ['<spring:message code="community.id" />','<spring:message code="community" /> <spring:message code="community.name" />', '<spring:message code="community.desc" />', '<spring:message code="community.redid" />', '<spring:message code="community.regdate" />', '<spring:message code="category.id" />', '<spring:message code="category.name" />',''], jsonreader: {repeatitems: false, colmodel : [ {key : true, name : 'communityid', editable:false, hidden:true, {name : 'communityname', index : 'communityname', align : 'center', editable:true, {name : 'communitydesc', index :'communitydesc', align : 'left', editable:true, {name : 'regid', index : 'regid', align : 'center', editable:false, width:75, {name : 'regdate', index : 'regdate', align : 'center', sorttype:"date", width:100, editable:true, editoptions: { datainit: function(element) { $(element).datepicker({ dateformat: 'yy/mm/dd', onselect: function(datatext, inst){ $(gridid).jqgrid('savecell',lastsel_row, lastsel_col); );, {name : 'categoryid', name : 'categoryid', editable:false, hidden:true, {name : 'categoryname', name : 'categoryname', editable:false, hidden:true, {name: 'myac', width:40, fixed:true, sortable:false, resize:false, formatter:'actions', formatoptions:{editbutton:false, keys:true, deloptions:{msg:'<spring:message code="board.msg.delete.confirm" />', onclicksubmit:function(rp_ge, rowid){ $(gridid).delgridrow( rowid, { reloadaftersubmit:true, deldata:{communityid: rowid, url:"<c:url value='/jquerycommunity.do?method=remove'/>", aftercomplete : function (response, postdata, formid) { $('#${treeid').jstree("remove","#" + rowid); return false; ); ], scroll : true, 9

12 jqgrid height : 220, multiselect : false, viewrecords : true, rownum : 10, sortable : true, celledit: true, cellsubmit:"remote", cellurl:"<c:url value='/jquerycommunity.do?method=updatecell'/>", beforeeditcell: function(id,name,val,irow,icol){ lastsel_row = irow; lastsel_col = icol; iscellsaved = false;, beforesavecell: function(id,name,val,irow,icol){ iscellsaved = true;, aftersavecell:function(rowid, cellname, value, irow, icol){ if(cellname=="communityname"){ $('#${treeid').jstree('get_selected').find("#"+rowid+" a").html('<ins class="jstreeicon"> </ins>' + value);, gridcomplete: function() { $("#_empty",gridid).addclass("nodrag nodrop"); $(gridid).setgridwidth($('#right').width() - 40); $(window).bind('resize', function() { $(gridid).setgridwidth($('#right').width() - 40); ).trigger('resize');, loaderror: function(xhr,st,err) { alert(err); ); $(gridid + "_btnsearch").click( function() { $(gridid).setgridparam({ postdata: { searchkeyword:$(gridid + "_searchkeyword").val(), searchcondition:$(gridid + "_searchcondition").val() ); $(gridid).setgridparam({url:"<c:url value='/jquerycommunity.do?method=list'/ >").trigger("reloadgrid"); return false; ); /* auto click by enter key */ $(gridid + "_searchkeyword").keypress(function (e) { if (e.which == 13){ $(gridid + "_btnsearch").trigger("click"); return false; ); $(gridid + "_searchkeyword").autocomplete({ source : function(request, response){ logger.log('call'); $.ajax({ 'url' : '<c:url value="/jquerycommunity.do?method=searchkeyword"/>', 'type' : 'POST', 'async' : false, 'data' : 'searchkeyword=' + $(gridid + "_searchkeyword").val() + '&searchcondition=' + $(gridid + "_searchcondition").val() + '&categoryid=' + id, 'datatype' : 'json', 'success' : function(data){ 10

13 jqgrid logger.log('return:data.r.length=' + data.r.length); response(data.r); );, minlength : 1, select : function(event, ui) { logger.log('autocomplete selected:' + ui.item.value); $(gridid + '_searchkeyword').val(ui.item.value); $(gridid + '_pageindex').val('1'); $(gridid + '_btnsearch').trigger("click"); return false; ); //$(gridid).jqgrid('gridresize'); 위와같이 jqgrid 로구현된리스트의모습은아래와같다. 11

14 jqgrid jqGrid 와 jstree 연동 i. : 커뮤니티리스트가삭제되거나수정되는경우, jstree 에도이를반영 $(gridid).jqgrid({... 중략... {name: 'myac', width:40, fixed:true, sortable:false, resize:false, formatter:'actions', 12

15 jqgrid formatoptions:{editbutton:false, keys:true, deloptions:{msg:'<spring:message code="board.msg.delete.confirm" />', onclicksubmit:function(rp_ge, rowid){ $(gridid).delgridrow( rowid, { reloadaftersubmit:true, deldata:{communityid: rowid, url:"<c:url value='/jquerycommunity.do?method=remove'/>", aftercomplete : function (response, postdata, formid) { $('#${treeid').jstree("remove","#" + rowid); // 커뮤니티삭제시 tree 반영 return false; ); ],... 중략... aftersavecell:function(rowid, cellname, value, irow, icol){ if(cellname=="communityname"){ // 커뮤니티수정시 tree 반영 $('#${treeid').jstree('get_selected').find("#"+rowid+" a").html('<ins class="jstreeicon"> </ins>' + value);,... 중략... ); 참고 jqgrid 를사용하여리스트를작성할때너무많은양의데이터를한꺼번에출력하려고하면리스트를출력하는데있어서많은시간이걸리거나브라우저가멈추는현상이발생할수있다. 이에한번에출력하는데이터의건수는 100 개이내로하며데이터가많을경우 pager 를이용해 paging 처리할것을권고한다. 13

16 2.Quickpager jqgrid 는기본적으로 Paging 처리를위한 Pager 를제공하고있다. Anyframe 에서는 pagenavigator 와유사한 Pager 출력을위해 quickpager 를확장하여사용하고있다. quickpager 를사용하기위해서는리스트 Script 내의 loadcomplete 함수안에 paging 정보를셋팅해주고 search 버튼을클릭하는이벤트를발생시키도록한다. 2.1.jqgrid 와 quickpager 연동 관련 jquery 코드는다음과같다. jquery("#grid").jqgrid({... 중략... loadcomplete : function(xhr) { $(paginationid).quickpager( { pagesize: "10", pageunit: "10", pageindexid: 'grid_' + id + "_pageindex", searchbuttonid: 'grid_' + id + "_btnsearch", currentpage: $(gridid).getgridparam("page"), totalcount: $(gridid).getgridparam("records"), searchurl: "#" );,... 중략... ); $(gridid + "_btnsearch").click(function() { $(gridid).setgridparam({ page: $(gridid + "_pageindex").val(), postdata: { searchkeyword:$(gridid + "_searchkeyword").val(), searchcondition:$(gridid + "_searchcondition").val() ); $(gridid).setgridparam({url:"<c:url value='/jqueryboard.do?method=list'/ >").trigger("reloadgrid"); ); 위와같이 Script 코드가작성되면 pagenavigator 출력부분에아래와같이 div 영역을표시해준다. <div id="${gridid_boardnav"> <div id="${gridid_pagination" class="pagination"></div> </div> 위와같이정의한 quickpager 는아래와같은 pagenavigator 를출력하게된다 jqgrid 에서제공하는 pager jqgrid 에서도 paging 처리를위한간편한 pager 를제공한다. 구현방법은아래와같다. //jqgrid 속성설정내에정의 pager : jquery('#pager') <!-- JSP 내의 pager 출력부분에정의 --> <div id="pager" class="scroll" style="text-align: center;"></div> 14

17 3.jstree jstree 는계층적으로조직된데이타를 tree 형태로보여주기위해제공되는 jquery 기반의오픈소스 UI 컴포넌트이다. jstree is a javascript based, cross browser tree component. It is packaged as a jquery plugin( jsTree 의활용 jstree 는 0.9.9a 이후 1.0-rc3 로업그레이드되면서일부 api 및사용법이변경되었다. 여기서는 1.0-rc3 버전을기준으로설명한다. jstree 는크게 html, json, xml 방식의 data loading 방식을제공하며, 여기서는 html 방식을제공한다. html 은 JSTL 을사용하여다음과같이표시할수있다. <!-- start of tree --> <div id="tree"> <span>listnode</span> <ul> <li id="root" rel="root"> <a href='#'>root</a> <c:set var="prevdepth" value="-1"/> <c:foreach var="node" items="${treelist"> <c:if test="${node.depth > prevdepth"> <ul> </c:if> <c:if test="${prevdepth > node.depth"> <c:foreach begin="${node.depth" end="${prevdepth - 1" step="1"> </ul></li> </c:foreach> </c:if> <li id="${node.nodeid" parentid="${node.parentid" depth="${node.depth" rel="${node.type"> <a href='#'>${node.nodename</a> <c:if test="${node.haschild == 0"> </li> </c:if> <c:set var="prevdepth" value="${node.depth"/> </c:foreach> </li> </ul> </div> <!-- end of tree --> 위와같은 html 트리관련 jquery 구현코드는아래와같다. // tree definition $(document).ready(function() { $('#${treeid').jstree({ 'plugins' : ["themes","html_data","ui","crrm","search","types","hotkeys","contextmenu"], //,"dnd","html_data", 'checkbox', "cookies", 'themes' : { 'theme' : 'default', 'dots' : false, 'icons' : true 15

18 jstree, 'contextmenu' : { 'items' : createcontextmenu, 'search' : { 'case_insensitive' : true, 'types' : { 'valid_children' : ["root"], 'types' : { 'CA' : {, 'CO' : {// change icon for community 'icon' : {'image' : '<c:url value="/sample/images/tree_types/leaficons.png"/>', 'core' : { 'initially_open' : ['ROOT'], 'animation' : 0 ).bind("select_node.jstree", function (e, data) { // event handling for node select logger.log('select_node:' + data.rslt.obj.attr("id")); if(data.rslt.obj.attr('id') == 'ROOT') { // Root is selected logger.log('root Selected'); _currentnodetype = 'ROOT'; _currentnodeid = 'ROOT'; $tabs.tabs('select', '#tabs-0'); else if(data.rslt.obj.attr('rel') == 'CA') { // Category is selected logger.log('category Selected'); _currentnodetype = data.rslt.obj.attr('rel'); _currentnodeid = data.rslt.obj.attr('id'); // commuity list load $.get("<c:url value='/jquerycategory.do?method=get'/>", {'categoryid' : data.rslt.obj.attr('id'), function(r) { addtab(r.category.categoryname, data.rslt.obj.attr('id')); ); else if(data.rslt.obj.attr('rel') == 'CO'){ // Community is selected logger.log('community Selected'); _currentnodetype = data.rslt.obj.attr('rel'); _currentnodeid = data.rslt.obj.attr('id'); // community's board list load $.get("<c:url value='/jquerycommunity.do?method=get'/>", {'communityid' : data.rslt.obj.attr('id'), function(r) { addtab(r.community.communityname, data.rslt.obj.attr('id')); ); $('#community').val(data.rslt.obj.attr('id')); ).bind("remove.jstree", function(e, data) { // event handling for node delete data.rslt.obj.each(function() { if($(data.rslt.obj).attr("rel") == 'CO') { // for community logger.log('community removed:' + $(data.rslt.obj).attr("id")); $.ajax({ async : false, type : 'POST', url : '<c:url value="/jquerycommunity.do?method=remove"/>', data : { "communityid" : $(data.rslt.obj).attr("id"), success : function(r) { logger.log('111'); data.inst.refresh(); logger.log('222'); 16

19 jstree $tabs.tabs('remove', '#tabs-' + $(data.rslt.obj).attr("id")); logger.log('333'); $("#community option[value='" + $(data.rslt.obj).attr("id") + "']").remove(); logger.log('444');, error : function() { $.jstree.rollback(data.rlbk); ); else if($(data.rslt.obj).attr("rel") == 'CA'){ // for category $.ajax({ async : false, type : 'POST', url : '<c:url value="/jquerycategory.do?method=remove"/>', data : { "categoryid" : $(data.rslt.obj).attr("id"), success : function(r) { data.inst.refresh(); $tabs.tabs('remove', '#tabs-' + $(data.rslt.obj).attr("id"));, error : function() { $.jstree.rollback(data.rlbk); ); ); ); // tree search event handler for button click case $('#treesearch').click(function(e) { $('#${treeid').jstree('search', $('#searchkeyword').val()); ); // tree search event handler for enter key down case $('#searchkeyword').keydown(function(e) { if(e.keycode == '13') { $('#${treeid').jstree('search', $('#searchkeyword').val()); return false; ); ); 트리의노드타입에따른컨텍스트메뉴구성은다음과같이구현한다. /** * context menu generate for tree */ function createcontextmenu(node) { var default_object = { 'create' : {, 'edit' : {, 'remove' : { ; if(node.attr('id') == 'ROOT') { default_object = { create : { label : '<spring:message code="category.context.add" />', action : function(obj) { logger.log('create category : ' + obj.attr('id')); 17

20 jstree opencategoryform(obj, 'create');, edit : false, remove : false ; else if(node.attr('rel') == 'CA') { default_object = { create : { label : '<spring:message code="community.context.add" />', action : function(obj) { logger.log('create community : ' + obj.attr('id')); opencommunityform(obj, 'create');, edit : { label : '<spring:message code="category.context.edit" />', action : function(obj) { logger.log('edit category : ' + obj.attr('id')); opencategoryform(obj, 'edit');, remove : { label : '<spring:message code="category.context.delete" />', _disabled : node.children('ul').length > 0? true : false, action : function(obj) { logger.log('remove category : ' + obj.attr('id')); if(this.is_selected(obj)) { this.remove(); else { this.remove(obj); ; else if(node.attr('rel') == 'CO') { default_object = { create : false, edit : { label : '<spring:message code="community.context.edit" />', action : function(obj) { logger.log('edit community : ' + obj.attr('id')); opencommunityform(obj, 'edit');, remove : { label : '<spring:message code="community.context.delete" />', action : function(obj) { logger.log('remove community : ' + obj.attr('id')); if(this.is_selected(obj)) { logger.log('try remove 1: ' + obj.attr('id')); this.remove(); else { logger.log('try remove 2: ' + obj.attr('id')); this.remove(obj); ; return default_object; 18

21 jstree 트리검색기능구현은다음과같이한다. // tree definition $(document).ready(function() { // tree search event handler for button click case $('#treesearch').click(function(e) { $('#${treeid').jstree('search', $('#searchkeyword').val()); ); // tree search event handler for enter key down case $('#searchkeyword').keydown(function(e) { if(e.keycode == '13') { $('#${treeid').jstree('search', $('#searchkeyword').val()); return false; ); ); Tree 유틸을사용한데이타의정렬 트리형식으로표시할데이타를표시순서대로정렬하기위해서, Tree 와 TreeNode 유틸클래스를활용하여정렬하는것이가능하다.(DB 에서가져온 1 차데이타는 depth 와 display order 순으로정렬되어있어야함.) 다음은카테고리와커뮤니티의데이타를각각가져와서 tree 형태로정렬시킨 CommunityServiceImpl 클래스의 gettreelist() 메소드의구현코드이다. public List<Map<String, String>> gettreelist() throws Exception { List<Map<String, String>> trees = new ArrayList<Map<String, String>>(); List<Community> communities = (List<Community>) communitydao.getlist(new Community()); List<Category> categories = (List<Category>) categorydao.getlist(new Category()); Tree tree = null; if (categories!= null) { tree = new Tree(); int cl = categories.size(); for (int i = 0; i < cl; i++) { Category ca = (Category) categories.get(i); Map<String, String> item = new HashMap<String, String>(); item.put("nodeid", ca.getcategoryid()); item.put("parentid", "ROOT"); item.put("depth", "0"); item.put("displayorder", Integer.toString(i)); item.put("nodename", ca.getcategoryname()); item.put("type", "CA"); tree.add(ca.getcategoryid(), "ROOT", item); if (communities!= null) { int ccl = communities.size(); for (int i = 0; i < ccl; i++) { Community co = (Community) communities.get(i); Map<String, String> item = new HashMap<String, String>(); item.put("nodeid", co.getcommunityid()); item.put("parentid", co.getcategoryid()); item.put("depth", "1"); item.put("displayorder", "0"); 19

22 jstree item.put("nodename", co.getcommunityname()); item.put("type", "CO"); tree.add(co.getcommunityid(), co.getcategoryid(), item); trees = (List<Map<String, String>>) tree.getlist(); return trees; 다음은 jstree 를이용하여 Tree 를출력한화면이다. 20

23 4.Upload jquery 와 AJAX 를활용한 Multi file 첨부기능을구현하여제공하고있다. 4.1.uploadify 소개 uploadify 는 jquery 와 flash Object 를통하여간편하게 multi file 첨부를구현할수있게해주는오픈소스컴포넌트이다. 자세한내용은 사이트를참조하기바란다. 4.2.jqueryUpload.js jquery plugin 에서는 uploadify 를사용하여파일첨부를구현한별도의서브셋을 jqueryupload.js 에별도로구현하였다. 이를통해서파일첨부관련코드가비즈니스로직에추가되는것을최소화하도록의도된것이다. 파일업로드컴포넌트는다음과같이인스턴스화시킨다. $(document).ready(function() { $('#uploadpane').attachment({ 'contextroot' : '${ctx', 'callback' : function() { savepost(); // after file upload ); ); 위의코드에서 'uploadpane', 즉, 첨부파일 UI 가표시될영역은게시물등록 form 인 "dialog-form" 영역에선언되어있다. <!-- board form start --> <form:form id="dialog-form" name="dialog-form" title="board Form"> <fieldset> <input type="hidden" name="postid" id="boardpostid"> <input type="hidden" name="regid" id="boardregid"> <input type="hidden" name="regdate" id="boardregdate"> <table summary="jquery" width="100%">... 중략... <tr> <td><label><spring:message code="board.attach" /></label></td> <td> <div id="uploadpane"></div> <input type="hidden" name="refid" id="refid" value=""/> </td> </tr> </table> </fieldset> </form:form> <!-- board form end --> 파일을업로드한후실제게시물을등록시켜야하므로실제로게시물을저장하는스크립트함수인 savepost() 를 callback 으로선언한다. 등록의경우첨부된파일첨부대표 ID(Reference ID) 는 AnyframeUpload.options.refId 에저장되어있으므로이를파라메터로전달하여게시물정보에저장될수있도록한다. 여기서는 Reference ID 를게시물 ID 와일치시키도록하였으므로 BoardServiceImpl.create() 에서다음과같이처리하여야한다. 21

24 Upload = { Exception.class ) public class BoardServiceImpl private UploadInfoService uploadservice; public int create(board board, String filerefid) throws Exception { SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS", new Locale("ko", "KR")); String postid = "POST-" + formatter.format(new Date()); board.setpostid(postid); board.setregdate((new SimpleDateFormat("yyyy/MM/dd")).format(new Date())); int r = boarddao.create(board); if(r > 0) uploadservice.updatefilerefid(filerefid, postid); // reference id 를 post id 와일치시킨다. return r;... 중략... 참고 jqueryupload.js 내에구현된내용은하나의구현사례이므로구현요건에따라자유롭게재구성될수있다. 다음은 uploadify 와 jqueryupload.js 를활용하여파일첨부기능을구현한것이다. 22

25 Upload 23

26 5.jquery-ui jquery 는 UI 플러그인을통해 UI 컴포넌트를추가적으로제공하며, 테마기능과연동된 UI 컴포넌트를통해강력한 User Inteface 를 Pure-HTML 환경에서도구현할수있도록도와주고있다. jquery 에서제공하는 UI 컴포넌트에대한자세한기능은 에서확인하기바란다. Anyframe jquery plugin 에서는 jquery ui 버전을바탕으로 autocomplete, tab, dialog, button, theme 기능을활용하여제공하고있다. 5.1.Autocomplete autocomplete 는사용자가입력한 prefix 를가지고자동완성기능을제공하는 UI 컴포넌트이다. 아래자바스크립코드는게시물리스트의검색에 autocomplete 기능을적용한내용이다. success 부분과 select 부분의코드활용을주목하기바란다. $(gridid + "_searchkeyword").autocomplete({ source : function(request, response){ logger.log('call'); $.ajax({ 'url' : '<c:url value="/jqueryboard.do?method=searchkeyword"/>', 'type' : 'POST', 'async' : false, 'data' : 'searchkeyword=' + $(gridid + "_searchkeyword").val() + '&searchcondition=' + $(gridid + "_searchcondition").val() + '&communityid=' + _currentnodeid, 'datatype' : 'json', 'success' : function(data){ logger.log('return:data.r.length=' + data.r.length); response(data.r); );, minlength : 1, select : function(event, ui) { logger.log('autocomplete selected:' + ui.item.value); $(gridid + '_searchkeyword').val(ui.item.value); $(gridid + '_pageindex').val('1'); $(gridid + '_btnsearch').trigger("click"); return false; ); 다음은 Autocomplete 을적용한결과이다. 24

27 jquery-ui 5.2.Tab widget Tab 위젯은동일한목적을가지고있으나성격이상이한 UI 를분할하여화면복잡도를낮추고효율적인 User Inteface 구현을도와주는자바스크립트기반의 UI 컴포넌트이다. var _currenttabid = ''; var $tabs = null; 25

28 jquery-ui // 탭을추가 function addtab(title, id) { if($('#tabs-' + id).length > 0) { $tabs.tabs("select", '#tabs-' + id); else{ $tabs.tabs("add", "#tabs-" + id, title ); $(document).ready(function(){ $tabs = $('#tabs').tabs({ tabtemplate: '<li><a href="<%="#"%>{href"><%="#"%>{label</a><span class="ui-icon uiicon-close">remove Tab</span></li>', add: function( event, ui ) { // 탭이추가되었을때의이벤트핸들링 var tab_content = ''; tab_content = _currentnodetype + ':' + _currentnodeid; $(ui.panel).append(tab_content); $(ui.tab).attr('nodeid', _currentnodeid); $(ui.tab).click(); if(_currentnodetype == 'CO') { $.get('<c:url value="/jqueryboard.do?method=getgridtype1"/>', {'gridid' : 'grid_' + _currentnodeid, function(data) { $(ui.panel).html(data); _creategridtype1(_currentnodeid); ); else if(_currentnodetype == 'CA'){ $.get('<c:url value="/jqueryboard.do?method=getgridtype2"/>', {'gridid' : 'grid_' + _currentnodeid, function(data) { $(ui.panel).html(data); _creategridtype2(_currentnodeid); );, select : function(event, ui) { logger.log('tab selected!!:' + $(ui.tab).attr('nodeid')); _currenttabid = $(ui.tab).attr('nodeid'); ); // 탭의 'x' 버튼클릭시해당탭을제거한다. $( "#tabs span.ui-icon-close" ).live( "click", function() { var index = $( "li", $tabs ).index( $( this ).parent() ); $tabs.tabs( "remove", index ); ); ); 다음은 jstree 의구현코드중일부이며, 트리의노드가선택되었을때 tab 을추가하도록하는부분을주목하기바란다.... 생략.bind("select_node.jstree", function (e, data) { // event handling for node select logger.log('select_node:' + data.rslt.obj.attr("id")); if(data.rslt.obj.attr('id') == 'ROOT') { // Root is selected logger.log('root Selected'); _currentnodetype = 'ROOT'; _currentnodeid = 'ROOT'; $tabs.tabs('select', '#tabs-0'); // ROOT 선택시에는탭을추가하지않고포커스만전환한다. else if(data.rslt.obj.attr('rel') == 'CA') { // Category is selected logger.log('category Selected'); 26

29 jquery-ui _currentnodetype = data.rslt.obj.attr('rel'); _currentnodeid = data.rslt.obj.attr('id'); // commuity list load $.get("<c:url value='/jquerycategory.do?method=get'/>", {'categoryid' : data.rslt.obj.attr('id'), function(r) { addtab(r.category.categoryname, data.rslt.obj.attr('id')); // 커뮤니티리스트를위한탭을추가한다. ); else if(data.rslt.obj.attr('rel') == 'CO'){ // Community is selected logger.log('community Selected'); _currentnodetype = data.rslt.obj.attr('rel'); _currentnodeid = data.rslt.obj.attr('id'); // community's board list load $.get("<c:url value='/jquerycommunity.do?method=get'/>", {'communityid' : data.rslt.obj.attr('id'), function(r) { addtab(r.community.communityname, data.rslt.obj.attr('id')); // 게시물리스트를위한탭을추가한다. ); $('#community').val(data.rslt.obj.attr('id')); 생략... 다음은 Tab widget 이적용된화면이다. 왼쪽트리선택시해당화면이우측에탭을활용하여추가되고또한삭제가가능하다. 또한트리에서커뮤니티나카테고리가삭제되는경우우측화면의 tab section 도같이삭제되도록구현되어있다. 27

30 jquery-ui 5.3.Dialog widget Dialog 위젯은 Window Popup 이나브라우져의 Message Alert Box 를 Layed 된 html 요소를활용하여대체할수있도록한것이다. jquery UI 에서제공하는 Dialog 위젯은아래코드와같이다양한옵션및이벤트핸들링을구성할수있다. $(document).ready(function() { 28

31 jquery-ui... 생략 // Dialog form definition for Category $( "#category-form" ).dialog({ autoopen: false, width: 400, height:"auto", modal: true, resizable:true, close: function() { clearcategorydialog(); );... 생략 ); 다음은 Dialog 를적용한결과이다. Modal 형태의 Window 로서 'Cancel' 버튼과타이틀바의 'x' 버튼및 ESC 키를통해창을닫을수있으며, window 의사이즈조절도가능하도록옵션처리되었다. 29

32 jquery-ui 5.4.Button widget jquery UI 에서제공하는버튼위젯의특징은 <button> 태그를그대로활용한다는점으로웹표준을그대로준수하고있다는점이다. <div class="buttons"> <button id="${gridid_btnadd">add</button> 30

33 jquery-ui <button id="${gridid_btnedit">edit</button> <button id="${gridid_btnremove">remove</button> <button id="${gridid_btnrefresh">refresh</button> </div> 위의버튼 tag 들에다음과같이간단한코딩으로위젯을적용하는것이가능하다. 이벤트핸들링또한위젯적용여부에관계없이핸들링하고있다. $("button", ".buttons").button(); // 위젯적용 // 'Add' 버튼의 onclick 이벤트핸들링 $(gridid + "_btnadd").click(function() { dialogmode = "add"; AnyframeUpload.options.refId = ''; $("#dialog-form").dialog( "open" ); ); 다음은게시물리스트에서 Button 위젯을적용한결과이다. 5.5.Theme jquery-ui 에서제공하는 UI 컴포넌트와이를기반으로작성된 jqgrid 는 jquery-ui 에서제공하는 Theme 관련 feature 를통해다양한테마를손쉽게변경할수있다. 다음은테마변경에대한구현코드이다. // Theme Switcher $(document).ready(function(){ $('#themeswitcher').change(function() { var cssurl = '<c:url value="/jquery/jquery/jquery-ui/themes/"/>'; var theme = $('#themeswitcher').val(); $('#uitheme').attr('href',cssurl + theme + '/jquery-ui custom.css'); ); ); 다음은여러가지테마를변경하여적용한화면이다. Redmond( 기본테마 ) 31

34 jquery-ui Blitzer 32

35 jquery-ui South Street 33

36 jquery-ui 34

37 6.Validation jquery 에서는 validation plugin 을통해 jquery 를적용한 AJAX 기반의웹어플리케이션의 form validation 수단을제공한다. validation plugin 은다양한 rule 과메시지표시를제공하지만, 예제에서는가장태그의 attribute 를통해가장간단히구현하는방법을소개한다. 좀더자세한내용은 을참조하기바란다. * validation 을위한 css 설정 validation 메시지표시를위해본예제코드에서는 admin_new.css 에다음의내용을추가하였다. /* validation */ label.error { width: 10em;float: none; color: red; padding-left:.5em; vertical-align: top; * { font-family: verdana", " 돋움 ";font-size: 9pt p { clear: both;.submit { margin-left: 12em; em { font-weight: bold; padding-right: 1em; vertical-align: top; vallidation 적용을위해서는해당되는 form 을다음과같이지정한다. $('#dialog-form').validate(); 해당 form 의 html 은아래와같으며, class 에 'required' 값을부여함으로써필수필드로지정된다. 또한 maxlength 값지정을통해최대길이를제한할수있다. <!-- board form start --> <form:form id="dialog-form" name="dialog-form" title="board Form"> <fieldset>... 생략... <table summary="jquery" width="100%"> <tr> <td><spring:message code="board.title" /></td> <td><input type="text" name="title" id="boardtitle" class="dialog_text required" maxlength="25"></td> </tr> <tr> <td><spring:message code="board.contents" /></td> <td><textarea name="contents" id="boardcontents" class="dialog_text required" maxlength="128"></textarea></td> </tr>... 생략... </table> </fieldset> </form:form> <!-- board form end --> 실제 form 값들의 validation 을수행하기위해서는 valid() 함수를사용한다. /** * Add/Modify for Post */ function savepost() {... 생략 35

38 Validation if(!$('#dialog-form').valid()) { // validation logger.log('dialog-form is invalid.'); return false;... 생략 다음은 validation 을게시물등록 / 수정 form 에적용한결과이다. 36

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

2파트-07

2파트-07 CHAPTER 07 Ajax ( ) (Silverlight) Ajax RIA(Rich Internet Application) Firefox 4 Ajax MVC Ajax ActionResult Ajax jquery Ajax HTML (Partial View) 7 3 GetOrganized Ajax GetOrganized Ajax HTTP POST 154 CHAPTER

More information

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

var answer = confirm( 확인이나취소를누르세요.); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write( 확인을눌렀습니다.); else { document.write( 취소를눌렀습니다.); 자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트

More information

UNIST_교원 홈페이지 관리자_Manual_V1.0

UNIST_교원 홈페이지 관리자_Manual_V1.0 Manual created by metapresso V 1.0 3Fl, Dongin Bldg, 246-3 Nonhyun-dong, Kangnam-gu, Seoul, Korea, 135-889 Tel: (02)518-7770 / Fax: (02)547-7739 / Mail: contact@metabrain.com / http://www.metabrain.com

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF CHAPTER 2 (interaction) Ext JS., HTML, onready, MessageBox get.. Ext JS HTML CSS Ext JS.1. Ext JS. Ext.Msg: : Ext Ext.get: DOM 22 CHAPTER 2 (config). Ext JS.... var test = new TestFunction( 'three', 'fixed',

More information

Javascript

Javascript 1. 이벤트와이벤트핸들러의이해 이벤트 (Event) 는웹브라우저에서발생하는다양한사건을말합니다. 예를들면, 버튼을마우스로을했다거나브라우저를닫았다거나 Enter 키를눌렀다거나등등아주다양한사건들이있습니다. 그렇다면이벤트핸들러 (Event Handler) 는무엇일까요? 이다양한이벤트들을핸들링 ( 처리 ) 해주는것입니다. 예를들면, 어떤버튼을했을때메시지창이뜨게하는등을말합니다.

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 CHAPTER 7. HTML 와 CSS 로웹사이트만들 기 웹사이트작성 웹사이트구축과정 내비게이션구조도 홈페이지레이아웃 헤더 web Shop 내비게이션메뉴

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

INDEX 들어가기 고민하기 HTML(TABLE/FORM) CSS JS

INDEX 들어가기 고민하기 HTML(TABLE/FORM) CSS JS 개발자에게넘겨주기편한 TABLE&FORM 마크업 김남용 INDEX 들어가기 고민하기 HTML(TABLE/FORM) CSS JS 들어가기 이제는 ~ 서로간의이슈웹표준 & 웹접근성왜웹표준으로해야할까요? 모든웹페이지는 ~ 퍼블리싱순서 이제는 ~ 디자이너 디자이너 퍼블리셔 Front-end (UI 개발자 ) 퍼블리셔 Front-end (UI 개발자 ) 서버개발자 서버개발자

More information

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx 과목명: 웹프로그래밍응용 교재: 모던웹을 위한 JavaScript Jquery 입문, 한빛미디어 Part3. Ajax Ch19. node.js 기본 2014년 1학기 Professor Seung-Hoon Choi 19 node.js 기본 이 책에서는 서버 구현 시 node.js 를 사용함 자바스크립트로 서버를 개발 다른서버구현기술 ASP.NET, ASP.NET

More information

Spring Boot

Spring Boot 스프링부트 (Spring Boot) 1. 스프링부트 (Spring Boot)... 2 1-1. Spring Boot 소개... 2 1-2. Spring Boot & Maven... 2 1-3. Spring Boot & Gradle... 3 1-4. Writing the code(spring Boot main)... 4 1-5. Writing the code(commandlinerunner)...

More information

신림프로그래머_클린코드.key

신림프로그래머_클린코드.key CLEAN CODE 6 11st Front Dev. Team 6 1. 2. 3. checked exception 4. 5. 6. 11 : 2 4 : java (50%), javascript (35%), SQL/PL-SQL (15%) : Spring, ibatis, Oracle, jquery ? , (, ) ( ) 클린코드를 무시한다면 . 6 1. ,,,!

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

MAX+plus II Getting Started - 무작정따라하기

MAX+plus II Getting Started - 무작정따라하기 무작정 따라하기 2001 10 4 / Version 20-2 0 MAX+plus II Digital, Schematic Capture MAX+plus II, IC, CPLD FPGA (Logic) ALTERA PLD FLEX10K Series EPF10K10QC208-4 MAX+plus II Project, Schematic, Design Compilation,

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

- 이벤트의처리 <input type= button id= button1 value= 확인 /> <input type= button id= button2 value= 확인 /> 자바스크립트인경우 : document.getelementbyid( button1 ).oncl

- 이벤트의처리 <input type= button id= button1 value= 확인 /> <input type= button id= button2 value= 확인 /> 자바스크립트인경우 : document.getelementbyid( button1 ).oncl 제이쿼리 (JQuery) - 제이쿼리는자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리이다. - 따라서, 제이쿼리를사용하기위해서는자바스크립트라이브러리를사용해야한다. - 제이쿼리사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) - 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호를말함. - 사용예 )

More information

Javascript.pages

Javascript.pages JQuery jquery part1 JavaScript : e-mail:leseraphina@naver.com http://www.webhard.co.kr I.? 2 ......,,. : : html5 ; ; .

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r Jakarta is a Project of the Apache

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Modern Javascript

Modern Javascript ES6 - Arrow Function Class Template String Destructuring Default, Rest, Spread let, const for..of Promises Module System Map, Set * Generator * Symbol * * https://babeljs.io/ Babel is a JavaScript compiler.

More information

Orcad Capture 9.x

Orcad Capture 9.x OrCAD Capture Workbook (Ver 10.xx) 0 Capture 1 2 3 Capture for window 4.opj ( OrCAD Project file) Design file Programe link file..dsn (OrCAD Design file) Design file..olb (OrCAD Library file) file..upd

More information

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date

More information

슬라이드 1

슬라이드 1 핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton

More information

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용   한 수업환경구축 웹데이터베이스구축및실습 구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 http://chrome.google.com 한림대학교웹데이터베이스 - 이윤환 APM 설치 : AUTOSET6

More information

Dialog Box 실행파일을 Web에 포함시키는 방법

Dialog Box 실행파일을 Web에 포함시키는 방법 DialogBox Web 1 Dialog Box Web 1 MFC ActiveX ControlWizard workspace 2 insert, ID 3 class 4 CDialogCtrl Class 5 classwizard OnCreate Create 6 ActiveX OCX 7 html 1 MFC ActiveX ControlWizard workspace New

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

3장

3장 C H A P T E R 03 CHAPTER 03 03-01 03-01-01 Win m1 f1 e4 e5 e6 o8 Mac m1 f1 s1.2 o8 Linux m1 f1 k3 o8 AJAX

More information

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx 과목명 : 웹프로그래밍응용교재 : 모던웹을위한 JavaScript Jquery 입문, 한빛미디어 Part3. Ajax Ch20. XMLHttpRequest 2014년 1학기 Professor Seung-Hoon Choi 20 XMLHttpRequest XMLHttpRequest 객체 자바스크립트로 Ajax를이용할때사용하는객체 간단하게 xhr 이라고도부름 서버

More information

Remote UI Guide

Remote UI Guide Remote UI KOR Remote UI Remote UI PDF Adobe Reader/Adobe Acrobat Reader. Adobe Reader/Adobe Acrobat Reader Adobe Systems Incorporated.. Canon. Remote UI GIF Adobe Systems Incorporated Photoshop. ..........................................................

More information

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가 혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가웹페이지내에뒤섞여있어서웹페이지의화면설계가점점어려워진다. - 서블릿이먼저등장하였으나, 자바내에

More information

게시판 스팸 실시간 차단 시스템

게시판 스팸 실시간 차단 시스템 오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP

More information

Microsoft PowerPoint 세션.ppt

Microsoft PowerPoint 세션.ppt 웹프로그래밍 () 2006 년봄학기 문양세강원대학교컴퓨터과학과 세션변수 (Session Variable) (1/2) 쇼핑몰장바구니 장바구니에서는사용자가페이지를이동하더라도장바구니의구매물품리스트의내용을유지하고있어야함 PHP 에서사용하는일반적인변수는스크립트의수행이끝나면모두없어지기때문에페이지이동시변수의값을유지할수없음 이러한문제점을해결하기위해서 PHP 에서는세션 (session)

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas 플랫폼사용을위한 ios Native Guide - 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager class 개발. - Native Controller에서

More information

서현수

서현수 Introduction to TIZEN SDK UI Builder S-Core 서현수 2015.10.28 CONTENTS TIZEN APP 이란? TIZEN SDK UI Builder 소개 TIZEN APP 개발방법 UI Builder 기능 UI Builder 사용방법 실전, TIZEN APP 개발시작하기 마침 TIZEN APP? TIZEN APP 이란? Mobile,

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

KYO_SCCD.PDF

KYO_SCCD.PDF 1. Servlets. 5 1 Servlet Model. 5 1.1 Http Method : HttpServlet abstract class. 5 1.2 Http Method. 5 1.3 Parameter, Header. 5 1.4 Response 6 1.5 Redirect 6 1.6 Three Web Scopes : Request, Session, Context

More information

untitled

untitled A Leader of Enterprise e-business Solution FORCS Co., LTD 1 OZ Application Getting Started 2 FORCS Co., LTD A Leader of Enterprise e-business Solution FORCS Co., LTD 3 OZ Application Getting Started 'OZ

More information

TP_jsp7.PDF

TP_jsp7.PDF (1) /WEB_INF.tld /WEB_INF/lib (2) /WEB_INF/web.xml (3) http://{tag library }/taglibs/{library} /web_inf/{

More information

Prototype에서 jQuery로 옮겨타기

Prototype에서 jQuery로 옮겨타기 Created by Firejune at 2008/11/10, Last modified 2016/09/11 Prototype에서 jquery로 옮겨타기 jquery는 겸손한(unobtrusive) 자바스크립트를 위한 자바스크립트 라이브러리다. jquery는 태생적으로 BDD(Behavior driven development) 방법론을 지향하고 CSS 셀렉터를

More information

untitled

untitled A Leader of Enterprise e-business Solution FORCS Co., LTD 1 OZ Application Designer Getting Started 2 FORCS Co., LTD A Leader of Enterprise e-business Solution FORCS Co., LTD 3 OZ Application Designer

More information

untitled

untitled A Leader of Enterprise e-business Solution FORCS Co., LTD 1 OZ Application Getting Started (ver 5.1) 2 FORCS Co., LTD A Leader of Enterprise e-business Solution FORCS Co., LTD 3 OZ Application Getting

More information

PHP & ASP

PHP & ASP 단어장프로젝트 프로젝트2 단어장 select * from address where address like '% 경기도 %' td,li,input{font-size:9pt}

More information

Modal Window

Modal Window 접근가능한레이어팝업 Feat. WAI-ARIA 콘텐츠연합플랫폼클라이언트개발부지성봉 Modal Window Modal Window 사용자인터페이스디자인개념에서자식윈도에서부모윈도로돌아가기전에사용자의상호동작을요구하는창. 응용프로그램의메인창의작업흐름을방해한다. Native HTML 의한계점 팝업이떴다라는정보를인지할수없다. 팝업이외의문서정보에접근이된다. 키보드 tab

More information

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View

More information

DocsPin_Korean.pages

DocsPin_Korean.pages Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google

More information

Lab10

Lab10 Lab 10: Map Visualization 2015 Fall human-computer interaction + design lab. Joonhwan Lee Map Visualization Shape Shape (.shp): ESRI shp http://sgis.kostat.go.kr/html/index.html 3 d3.js SVG, GeoJSON, TopoJSON

More information

1. SNS Topic 생성여기를클릭하여펼치기... Create Topic 실행 Topic Name, Display name 입력후 Create topic * Topic name : 특수문자는 hyphens( - ), underscores( _ ) 만허용한다. Topi

1. SNS Topic 생성여기를클릭하여펼치기... Create Topic 실행 Topic Name, Display name 입력후 Create topic * Topic name : 특수문자는 hyphens( - ), underscores( _ ) 만허용한다. Topi 5 주차 - AWS 실습 - SNS 시나리오 1. SNS Topic 생성 2. 3. 4. 5. Subscriptions 생성및 Confirm [ Email Test ] Message 발송 코드로보기 번외 ) SMS 발송하기 실습준비 HTML 파일, AWS 계정및 secretaccesskey, accesskeyid 간단설명 1. 2. 3. 4. SNS : 이메일,

More information

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 CHAPTER 11. 자바스크립트와캔버스로게임 만들기 캔버스 캔버스는 요소로생성 캔버스는 HTML 페이지상에서사각형태의영역 실제그림은자바스크립트를통하여코드로그려야한다. 컨텍스트객체 컨텍스트 (context) 객체 : 자바스크립트에서물감과붓의역할을한다. var canvas = document.getelementbyid("mycanvas"); var

More information

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID android:title= 항목제목 /> </menu> public boolean oncreateoptionsmenu(menu menu) { getme 8 차시메뉴와대화상자 1 학습목표 안드로이드에서메뉴를작성하고사용하는방법을배운다. 안드로이드에서대화상자를만들고사용하는방법을배운다. 2 확인해볼까? 3 메뉴 1) 학습하기 [ 그림 8-1] XML 을이용한옵션메뉴설정방법 public boolean

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios

More information

Macaron Cooker Manual 1.0.key

Macaron Cooker Manual 1.0.key MACARON COOKER GUIDE BOOK Ver. 1.0 OVERVIEW APPLICATION OVERVIEW 1 5 2 3 4 6 1 2 3 4 5 6 1. SELECT LAYOUT TIP 2. Add Page / Delete Page 3. Import PDF 4. Image 5. Swipe 5-1. Swipe & Skip 5-2. Swipe & Rotate

More information

ibmdw_rest_v1.0.ppt

ibmdw_rest_v1.0.ppt REST in Enterprise 박찬욱 1-1- MISSING PIECE OF ENTERPRISE Table of Contents 1. 2. REST 3. REST 4. REST 5. 2-2 - Wise chanwook.tistory.com / cwpark@itwise.co.kr / chanwook.god@gmail.com ARM WOA S&C AP ENI

More information

PowerPoint Presentation

PowerPoint Presentation WordPress 를이용한웹사이트만들기 2015 년 한지웅 WordPress 를이용한웹사이트만들기 Day 1 Day 2 Day 3 Day 4 Day 5 1. 웹사이트제작기초 HTLM 기본 CSS 기본 WordPress 개론 ( 웹사이트구축툴 ) 2. 웹호스팅 / 웹사이트구축 웹호스팅업체선택 cpanel 설정 WordPress 설치 3. WordPress 기초활용

More information

untitled

untitled A Leader of Enterprise e-business Solution FORCS Co., LTD 1 OZ Application Designer Getting Started 2 FORCS Co., LTD A Leader of Enterprise e-business Solution FORCS Co., LTD 3 OZ Application Designer

More information

EMBARCADERO TECHNOLOGIES (Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :

EMBARCADERO TECHNOLOGIES (Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory : #3 (RAD STUDIO) In www.devgear.co.kr 2016.05.23 EMBARCADERO TECHNOLOGIES (Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory : hskim@embarcadero.kr

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 한국성서대학교컴퓨터소프트웨어학과 BoostCourse (Full-Stack Developer) 김석래 예약서비스 기본제공페이지 Spring Framework 시스템설정 (pom.xml) Pom.xml Spring DB Servlet JSON 아직확실히필요한지알수없음 dbcp MySQL DTO DTO DAO Controller Service View Config

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 CHAPTER 13. HTML5 위치정보와드래그앤드롭 SVG SVG(Scalable Vector Graphics) 는 XML- 기반의벡터이미지포맷 웹에서벡터 - 기반의그래픽을정의하는데사용 1999 년부터 W3C 에의하여표준 SVG 의장점 SVG 그래픽은확대되거나크기가변경되어도품질이손상되지않는다. SVG 파일에서모든요소와속성은애니메이션이가능하다. SVG 이미지는어떤텍스트에디터로도생성하고편집할수있다.

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

로거 자료실

로거 자료실 redirection 매뉴얼 ( 개발자용 ) V1.5 Copyright 2002-2014 BizSpring Inc. All Rights Reserved. 본문서에대한저작권은 비즈스프링 에있습니다. - 1 - 목차 01 HTTP 표준 redirect 사용... 3 1.1 HTTP 표준 redirect 예시... 3 1.2 redirect 현상이여러번일어날경우예시...

More information

슬라이드 1

슬라이드 1 - 1 - 전자정부모바일표준프레임워크실습 LAB 개발환경 실습목차 LAB 1-1 모바일프로젝트생성실습 LAB 1-2 모바일사이트템플릿프로젝트생성실습 LAB 1-3 모바일공통컴포넌트생성및조립도구실습 - 2 - LAB 1-1 모바일프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new Mobile Project 메뉴를선택한다.

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

C H A P T E R 2

C H A P T E R 2 C H A P T E R 2 Foundations of Ajax Chapter 2 1 32 var xmlhttp; function createxmlhttprequest() { if(window.activexobject) { xmlhttp = new ActiveXObject( Micr else if(window.xmlhttprequest) { xmlhttp =

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

SproutCore에 홀딱 반했습니다.

SproutCore에 홀딱 반했습니다. Created by Firejune at 2009/10/30 SproutCore에 홀딱 반했습니다. 회사에서 첨여중인 프로젝트의 시제품(prototype)에 SproutCore 자바스크립트 프레임웍을 적용한 것을 시작으로, 아주 조금씩 조금씩 작동원리를 이해해 가면서 즐거운 나날을 보내고 있습니다. 그렇게 약 2개월 정도 작업이 진행되었고 큰 그림이 머리속에

More information

gnu-lee-oop-kor-lec10-1-chap10

gnu-lee-oop-kor-lec10-1-chap10 어서와 Java 는처음이지! 제 10 장이벤트처리 이벤트분류 액션이벤트 키이벤트 마우스이동이벤트 어댑터클래스 스윙컴포넌트에의하여지원되는이벤트는크게두가지의카테고리로나누어진다. 사용자가버튼을클릭하는경우 사용자가메뉴항목을선택하는경우 사용자가텍스트필드에서엔터키를누르는경우 두개의버튼을만들어서패널의배경색을변경하는프로그램을작성하여보자. 이벤트리스너는하나만생성한다. class

More information

오버라이딩 (Overriding)

오버라이딩 (Overriding) WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener

More information

Microsoft PowerPoint - web-part01-ch10-문서객체모델.pptx

Microsoft PowerPoint - web-part01-ch10-문서객체모델.pptx 과목명 : 웹프로그래밍응용교재 : 모던웹을위한 JavaScript Jquery 입문, 한빛미디어 Part1. JavaScript / Ch10. 문서객체모델 2014년 1학기 Professor Seung-Hoon Choi 10 문서객체모델 문서객체모델 (Document Object Model, DOM) 웹브라우저가 HTML 페이지를인식하는방식 document

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

Week13

Week13 Week 13 Social Data Mining 02 Joonhwan Lee human-computer interaction + design lab. Crawling Twitter Data OAuth Crawling Data using OpenAPI Advanced Web Crawling 1. Crawling Twitter Data Twitter API API

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

<property name="configlocation" value="classpath:/egovframework/sqlmap/example/sql-map-config.xml"/> <property name="datasource" ref="datasource2"/> *

<property name=configlocation value=classpath:/egovframework/sqlmap/example/sql-map-config.xml/> <property name=datasource ref=datasource2/> * 표준프레임워크로구성된컨텐츠를솔루션에적용 1. sample( 게시판 ) 프로젝트생성 - egovframe Web Project next generate example finish 2. 프로젝트추가 - 프로젝트 Import 3. 프로젝트에 sample 프로젝트의컨텐츠를추가, 기능동작확인 ⓵ sample 프로젝트에서 프로젝트로복사 sample > egovframework

More information

MasoJava4_Dongbin.PDF

MasoJava4_Dongbin.PDF JSTORM http://wwwjstormpekr Issued by: < > Revision: Document Information Document title: Document file name: MasoJava4_Dongbindoc Revision number: Issued by: < > SI, dbin@handysoftcokr

More information

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES 2012.02.18 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone 02-2108-8030 Fax 02-2108-8031 www.softbase.co.kr Copyright 2010 SOFTBase Inc. All rights reserved 목차 1 장 : HTML 연동개요...

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

1

1 7차시. 이즐리와 택시도를 활용한 인포그래픽 제작 1. 이즐리 사이트에 대해 알아보고 사용자 메뉴 익히기 01. 이즐리(www.easel.ly) 사이트 접속하기 인포그래픽 제작을 위한 이즐리 사이트는 무료로 제공되는 템플릿을 이용하여 간편하게 인포그래 픽을 만들 수 있는 사이트입니 이즐리는 유료, 무료 구분이 없는 장점이 있으며 다른 인포그래픽 제작 사이트보다

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

Polly_with_Serverless_HOL_hyouk

Polly_with_Serverless_HOL_hyouk { } "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "polly:synthesizespeech", "dynamodb:query", "dynamodb:scan", "dynamodb:putitem", "dynamodb:updateitem", "sns:publish", "s3:putobject",

More information

PART 1 CHAPTER 1 Chapter 1 Note 4 Part 1 5 Chapter 1 AcctNum = Table ("Customer").Cells("AccountNumber") AcctNum = Customer.AccountNumber Note 6 RecordSet RecordSet Part 1 Note 7 Chapter 1 01:

More information

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인 표준프레임워크로구성된컨텐츠를솔루션에적용하는것에문제가없는지확인 ( S next -> generate example -> finish). 2. 표준프레임워크개발환경에솔루션프로젝트추가. ( File -> Import -> Existring Projects into

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

Microsoft PowerPoint - web-part02-ch15-문서객체조작.pptx

Microsoft PowerPoint - web-part02-ch15-문서객체조작.pptx 과목명 : 웹프로그래밍응용교재 : 모던웹을위한 JavaScript Jquery 입문, 한빛미디어 Part2. jquery Ch15. 문서객체조작 2014년 1학기 Professor Seung-Hoon Choi 15 문서객체조작 문서객체조작 자바스크립트만으로문서객체모델을다루려면복잡함 jquery를이용하면쉽게다룰수있다. 이책에서가장중요한부분 15.1 문서객체의클래스속성추가

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks XSS s XSS, s, May 25, 2010 XSS s 1 2 s 3 XSS s MySpace 사건. Samy (JS.Spacehero) 프로필 페이지에 자바스크립트 삽입. 스크립트 동작방식 방문자를 친구로 추가. 방문자의 프로필에 자바스크립트를 복사. 1시간 만에 백만 명이 친구등록. s XSS s 위험도가 낮은 xss 취약점을 다른 취약점과 연계하여

More information

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드] Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 CHAPTER 10. DOM 과이벤트처리, 입력검 증 문서객체모델 (DOM) DOM 은 HTML 문서의계층적인구조를트리 (tree) 로표현 DOM 과 BOM HTML 문서를객체로표현한것을 DOM 웹브라우저를객체로표현한것을 BOM(Browser Object Model) HTML 요소찾기 동적인웹페이지를작성하려면원하는요소를찾아야한다. id 로찾기 태그이름으로찾기

More information