이하 방식은 스프링 3.2 이상에서 사용할 수 있다.


Interceptor

@Component("loginInterceptor") // 없어도 되나 있으면 편하다.

public class 인터셉터 이름 extends HandlerInterceptorAdapter {

.

.

.

}


servlet-context.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans:beans xmlns="http://www.springframework.org/schema/mvc" 

                      xmlns:beans="http://www.springframework.org/schema/beans"

<!-- 

  보통은 bean이 기본태그인데 spring mvc project 템플릿으로 시작했더니 mvc가 기본태그이다.

-->

.

.

.>


.

.

.

<!-- Interceptor -->

<interceptors>

<interceptor>

<mapping path="/**"/> <!-- 포함되는 url -->

<exclude-mapping path="/resources/**"/> <!-- 제외하는 url -->

<beans:ref bean="loginInterceptor" /> <!-- 인터셉터 애노테이션 이름 -->

<!-- 애노테이션으로 안했다면  

<beans:bean class="인터셉터 패키지 포함 풀경로"></beans:bean>

-->

</interceptor>

</interceptors>

.

.

.



'Java' 카테고리의 다른 글

EL 함수 추가하기  (0) 2013.09.10
Apache POI 추가  (0) 2013.08.22
Spring 실행 쿼리문 콘솔 출력 - log4jdbc-remix (feat. 메이븐)  (0) 2013.08.08
ojdbc14 추가  (0) 2013.06.24
ibatis 상황별 쿡북 - My SQL 기준  (0) 2011.06.17

.bind()

이미 존재하는 DOM에 한해에서 이벤트를 지정할 수 있다.


$(셀렉터).bind(이벤트명, 이벤트처리함수);



.live()

1.4 이하에서 미래의 DOM까지 이벤트를 할당했던 방식


$(셀렉터).live(이벤트명, 이벤트처리함수);



.delegate()

1.4에 추가되서 1.6 이하에서 미래의 DOM까지 이벤트를 할당했던 방식


$(document).delegate(셀렉터, 이벤트명, 이벤트처리함수);



.on()

1.7에 추가되서 bind과 기존 live, delegate를 모두 처리할 수 있다.


$(셀렉터).on(이벤트명, 이벤트처리함수); // 현재 DOM만

$(document).on(이벤트명, 셀렉터, 이벤트처리함수); // 미래 DOM까지


'Javascript > jQuery' 카테고리의 다른 글

iframe 로딩 후에 동작할 스크립트 작성법  (0) 2015.08.19
jQuery UI datepicker 옵션들  (0) 2013.10.02
jgGrid 몇 가지  (0) 2013.09.11
jqGrid 기본 - XML 버전  (2) 2013.05.14
이미지 로드 에러시 대체 이미지 출력  (0) 2011.06.30

오늘 어쩌다보니 이클립스랑 STS를 각각 셋팅하게 되어서 정리해본다.



1. 플러그인 설치 - Eclipse Marketplace


Eclipse Color Theme, Subclipse, Properties Editor



2. Preferences - Font


나눔고딕코딩



3. Preferences - Save Actions


자바, 자바스크립트



4. Preferences - Typing


Text Editors - Show line numbers

Java - Semicolons, Braces

JavaScript - Semicolons, Braces



5. Preferences - Spelling 해제



지금 STS가 실행이 안되서 방법을 찾으면서 정리해본다.

(나의 증상은 로고가 뜨고 로딩바가 1/15정도 진행되다가 꺼진다.)


1. eclipse.ini 나 STS.ini 를 수정한다. - 볼드친 부분을 추가한다. 둘 중에 하나 먼저.


-clean

-startup

.

.

.

-vm

C:/Program Files/Java/jdk1.7.0_09/bin/javaw.exe

-vmargs


나의 경우 기존에 이미 넣었던 부분이라 스킵한다.



2. 아래의 경로 이하의 *.snap 파일을 삭제한다.


D:\자신의 워크스페이스\.metadata\.plugins\org.eclipse.core.resources


나의 경우 해결되지 않아 3번을 진행했다.



3. 아래의 경로 이하에서 *.tree 파일을 삭제한다.


D:\자신의 워크스페이스\.metadata\.plugins\org.eclipse.core.resources\.root


나의 경우 아직도 해결되지 않았다. 다만 진전이 있다면 경로 메시지가 떴다. An error has occurred. See the log file



이 경우 2로 돌아가 snap 파일 지우라는데 그랬더니 여전히 실행이 안되고 다시 초기 증상으로 돌아간다.

그래서 보라는 log 파일을 열어봤다.

스크롤바 가장 하단에 눈에 띄는 메시지 "Workbench early startup"



4. 아래의 파일을 삭제한다.


D:\자신의 워크스페이스\.metadata\.plugins\org.eclipse.e4.workbench\workbench.xml



드디어 실행됐다. 그런데..... 프로젝트고 설정값이고 뭐고 하나도 없다.

어쨌든 STS를 다시 실행시켰다는데에 의의가 있다.

왜냐면 워크스페이스가 꼬인거라 STS를 새로 받아도 실행이 안되는 거였으니까.






설치


Help > Install New Software...

Work with : http://mybatis.googlecode.com/svn/sub-projects/generator/trunk/eclipse/UpdateSite/

Add 버튼 눌러서 등록




사용방법

1.

프로젝트 우클릭 > New




2. 1번에서 생성한 파일을 열어 파일을 양식에 맞춰서 입력

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >

<generatorConfiguration >

  <classPathEntry location="C:\Users\윈도우계정명\.m2\repository\com\oracle\ojdbc14\10.2.0.4.0\ojdbc14-10.2.0.4.0.jar"/> <!-- maven이면 써줘야 한다. -->

  <context id="context1" >

    <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="???" userId="???" password="???" />

    <javaModelGenerator targetPackage="???" targetProject="???" />

    <sqlMapGenerator targetPackage="???" targetProject="???" />

    <javaClientGenerator targetPackage="???" targetProject="???" type="XMLMAPPER" />

    <table schema="???" tableName="???" >

      <columnOverride column="???" property="???" /> <!-- 특정 컬럼만 할때인듯-->

    </table>

    <table schema="???" tableName="???" /> <!-- 전체컬럼일듯 -->

  </context>

</generatorConfiguration>



3. 2번에서 입력한 파일에 대고 마우스 우클릭



주로 jquery, jqueryui 등이 min으로 압축하면서 빨간엑스가 발생해서 거슬리는게 제거하는 방법은 간단하다.


프로젝트에서 우클릭 -> properties -> JavaScript -> Include Path -> Source 탭


3번까지 진행하는 팝업이 뜨는데 나는 **/*min.js 형식으로 등록했다.


    <repository>
        <id>mesir-repo</id>
        <url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url>
    </repository>
    
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc14</artifactId>
        <version>10.2.0.4.0</version>
    </dependency>

 

'Java' 카테고리의 다른 글

EL 함수 추가하기  (0) 2013.09.10
Apache POI 추가  (0) 2013.08.22
Spring 실행 쿼리문 콘솔 출력 - log4jdbc-remix (feat. 메이븐)  (0) 2013.08.08
Spring Interceptor 예외처리  (0) 2013.08.08
ibatis 상황별 쿡북 - My SQL 기준  (0) 2011.06.17

공식 사이트? 공식 블로그? : http://www.trirand.com/

데모페이지 : http://trirand.com/blog/jqgrid/jqgrid.html


데이터는 xml와 json으로 불러올 수 있는데 느린 외부 서버를 가지고 테스트해본 결과 

json보다 xml이 약간 더 속도가 빨라서 xml을 쓰고 있다.


인클루드할 파일들은 다음과 같다. 순서는 지켜져야 한다.

<link rel="stylesheet" type="text/css" media="screen" href="/AMES/js/jquery/css/custom-theme/jquery-ui-1.8.21.custom.css" /> <!-- jquery UI -->

<link rel="stylesheet" type="text/css" media="screen" href="/AMES/js/jquery.jqGrid/css/ui.jqgrid.css" /> <!-- jqGrid -->


<script src="/AMES/js/jquery/js/jquery-1.7.2.min.js" type="text/javascript"></script> <!-- jquery -->

<script src="/AMES/js/jquery/js/jquery-ui-1.8.21.custom.min.js" type="text/javascript"></script> <!-- jquery UI -->

<script src="/AMES/js/jquery.jqGrid/js/jquery.jqGrid.min.js" type="text/javascript"></script> <!-- jqGrid -->

<script src="/AMES/js/jquery.jqGrid/js/i18n/grid.locale-en.js" type="text/javascript"></script> <!-- jqGrid 언어셋 -->


xml 양식은 다음과 같다.

<rows>

<page>현재페이지번호</page>

<total>페이징을 위한 총 페이지 수(계산해서 넘겨줘야 한다.)</total>

<records>총 row수</records>


<row id="row를 유니크하게 표현할 수 있는 값. 애매하면 row 번호로 정도로 해도 된다. 단순 출력이면 id는 없어도 된다. ">

<cell>값1</cell>

<cell>값2</cell>

<cell>값3</cell>

</row>

</rows>


화면단은 다음과 같다.

<table id="tblist1"></table> <!-- 그리드가 그려짐 -->

<div id="pager"></div> <!-- 페이징 자리 -->


기본 스크립트는 다음과 같다.

$('#tblist1').jqGrid({

caption: '그리드 이름. 출력된다',

datatype: "xml", // or json

autowidth: true, // true면 알아서 화면 꽉 차게. false면 width 속성으로 grid 가로 사이즈를 지정할 수 있다.

height: 250, // 그리드 높이

shrinkToFit: false, // 컬럼이 그리드 width에 맞춰 자동으로 맞춰질지 여부

scrollOffset: 0,

rownumbers:true, // 줄번호 표시 여부

altRows:true, // title 태그처럼 값이 커서 옆에 표시는 것 여부

colNames:['값1', '값2', '값3'], // 그리드에서 그려질 컬럼 이름

colModel:[

{name:'값1',index:'VALUE1', width:90}, // name은 모르겠고 index는 해당 그리드 값 뽑아서 쓸때 필요하다.

{name:'값2',index:'VALUE2', width:100, align:'right', formatter:'currency', formatoptions:{decimalSeparator: ".", thousandsSeparator: ",", decimalPlaces: 0, defaultValue: 0, prefix: "$ "}},

// 정렬도 되고 자동으로 , 도 찍어 줄 수 있으며 prefix 도 가능하다.

{name:'값3',index:'VALUE3', width:0, hidden: true} // hidden도 가능하다.

],

loadonce : false, // 페이징을 할거면 false가 낫고 고정된 값이라면 true로 해서 한번만 불러온 값으로 출력하는 것이 효율적이다.

hidegrid : false,

                multiselect : true, // 여러 줄 선택할 수 있다. 이 값은 $("#tblist1").jqGrid('getGridParam','selarrrow'); 이렇게 가져올 수 있는데 배열이다.

sortname: 'VALUE1 DESC, VALUE2', // 정렬할 컬럼명인데 단독 컬렴명도 되지만 좌측처럼 여러 값을 넣어도 된다. 이 값은 sidx 라는 이름으로 파라미터가 넘어간다.

sortorder: 'ASC', // 정렬방식. 파라미터 명은 sord 이다.

pager : '#pager', // 화면단에 페이징 자리 이름이다.

rowNum : 200, // 한 화면에 기본 row수.  

rowList:[50,100,150,200,250,300], // 한 화면의 row를 select 박스로 선택할 수 있게 해준다.

viewrecords : true,

recordpos: "left",

showpage:true, // 페이징 true

gridview : true, // 처리속도를 빨리해주나 treeGrid, subGrid, afterInsertRow(event)에는 사용할 수 없다.

emptyrecords: '데이터가 존재하지 않습니다.', // 데이터가 없을때 출력될 메시지. 페이징 자리에 출력되서 눈에 그다지 띄지는 않는다.

afterInsertRow: function(rowid, rowdata, rowelem) { // 데이터를 로드할때의 액션

var STATUS = rowdata.STATUS;

var color=null;

if(STATUS=="Ready") color = "#ff8c00";

else if(STATUS=="Started") color = "#ffa500";

$('#tblist1').setCell(rowid, 'STATUS', STATUS, { background: color }); // 이런식으로 특정 컬림이 특정 값일때 색상을 바꿔줄 수도 있다.

},


onSelectRow: function(id) { // row를 선택했을때 액션. id는 xml의 id다.

var ret = $("#tblist1").jqGrid('getRowData',id); // ret는 선택한 row 값을 쥐고있는 객체다.

var value1 = ret.VALUE1; // 이런식으로 값을 가져올 수 있다. 

}


});


// 컬럼명 하단에 컬럼마다 input창이 붙어서 inline 검색을 할 수 있는 폼으로 만들어준다.

$("#tblist1").filterToolbar({

stringResult: true,

groupOp: 'AND',

searchOnEnter: true,

beforeSearch: function() { //  검색전 액션이다.

$("#tblist1").setGridParam({url:"xml/data_xml.jsp?"}); // 데이터 xml 주소를 지정할 수 있다.

}

}); 


// 컬럼그룹을 만들어 두 줄로 표시할 수 있다.

$("#tblist1").jqGrid('setGroupHeaders', {

useColSpanStyle: true, 

groupHeaders:[ 

{startColumnName: '값1', numberOfColumns: 2, titleText: 'COL GROUP'}

// startColumnName은 'colNames'에 표시한 컬럼명

// numberOfColumns은 시작한 컬럼을 포함해서 묶을 연속하는 컬럼수

// titleText 컬럼그룹명. 화면에 출력된다.

]});


마지막으로 인라인 검색시 넘어오는 데이터는 json형식의 파라미터로 다음과 같다.

{\"groupOp\":\"AND\",\"rules\":[{\"field\":\"VALUE1\",\"op\":\"bw\",\"data\":\"검색텍스트1\"},{\"field\":\"VALUE2\",\"op\":\"bw\",\"data\":\"검색텍스트2\"}]}


트리 그리드는 추후에.

오류내용

ORA-00942: 테이블 또는 뷰가 존재하지 않습니다.


해결

말그대로 테이블이나 뷰가 존재하지 않았다. 

해당 테이블이 실제로 존재하지 않는다면 생성을 해주면 되고,

존재하는데 저런 메시지가 뜬다면 권한문제다. select 권한을 준다.

userspace도 확인해봐야할 부분이다.




SELECT TBL.TABLE_NAME , TCM.COMMENTS , TBL.TABLESPACE_NAME , TCL.COLUMN_ID , TCL.COLUMN_NAME , 
	CASE WHEN TCL.DATA_TYPE = 'VARCHAR2' OR TCL.DATA_TYPE = 'CHAR' OR TCL.DATA_TYPE = 'NUMBER' 
		THEN TCL.DATA_TYPE || '(' || DATA_LENGTH || ')'
	ELSE TCL.DATA_TYPE END AS DATA_TYPE , CON.KEY , 
		DECODE(NULLABLE , 'N' , 'NOT NULL' , '') AS NOTNULL , DATA_DEFAULT , CCM.COMMENTS	 
FROM USER_TABLES TBL , USER_TAB_COMMENTS TCM , USER_TAB_COLUMNS TCL , USER_COL_COMMENTS CCM , 
	(SELECT CCL.TABLE_NAME , COLUMN_NAME ,
		CASE WHEN SUM(DECODE(CONSTRAINT_TYPE , 'P' , 1 , 0)) > 0 AND  SUM(DECODE(CONSTRAINT_TYPE , 'F' , 1 , 0)) > 0 
		THEN 'PK,FK'
			WHEN SUM(DECODE(CONSTRAINT_TYPE , 'P' , 1 , 0)) > 0
		THEN 'PK'
			WHEN SUM(DECODE(CONSTRAINT_TYPE , 'F' , 1 , 0)) > 0
		THEN 'FK'
	 	ELSE '' END AS KEY ,
		SUM(DECODE(CONSTRAINT_TYPE , 'C' , 0 , 'P' , 0 , 'F' , 0 , 1)) AS CCC			  
	FROM USER_CONS_COLUMNS CCL , USER_CONSTRAINTS CNS
	WHERE CCL.CONSTRAINT_NAME = CNS.CONSTRAINT_NAME
	GROUP BY CCL.TABLE_NAME , COLUMN_NAME ) CON
WHERE TBL.TABLE_NAME = TCM.TABLE_NAME
	AND TBL.TABLE_NAME = TCL.TABLE_NAME 
	AND TCL.TABLE_NAME = CCM.TABLE_NAME AND TCL.COLUMN_NAME = CCM.COLUMN_NAME
	AND TCL.TABLE_NAME = CON.TABLE_NAME(+) AND TCL.COLUMN_NAME = CON.COLUMN_NAME(+)
ORDER BY TBL.TABLE_NAME , COLUMN_ID


출처 : http://pompsky.blog.me/60051648162


'DB > Oracle' 카테고리의 다른 글

오라클 유저 비밀번호 변경  (0) 2013.09.26
' 홑따옴표 처리  (0) 2013.09.04
update select문  (0) 2013.03.21
날짜변환  (0) 2013.02.01

+ Recent posts