onkeypress 속성은 키보드 이벤트 입니다. 

사용자가 키를 누르고 실행할때(키를 클릭한 시점)에 스크립트를 실행합니다.


1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
<!--
  function eventonkeypress() {
    alert("사용자가 키를 누르고 키를 실행하였습니다.");
  }
-->
</script>
</head>
<body>
  <input name="test" onkeypress="eventonkeypress()">
</body>
cs
와 같이 만듭니다.


위의 소스를 응용해서 사용자가 엔터키를 눌렀을때 발생하도록 하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
<script type="text/javascript">
<!--
  function eventonkeypress() {
    if (event.keyCode==13) {
            alert("사용자가 키를 누르고 키를 실행하였습니다.");
        }   
  }
-->
</script>
</head>
<body>
  <input name="test" onkeypress="eventonkeypress()">
</body>
cs


[jquery] select  box 선택값 가져오기


// select box ID로 접근하여 선택된 값 읽기 ( 선택된 value )
$("#셀렉트박스ID option:selected").val();

// select box Name로 접근하여 선택된 값 읽기
$("select[name=셀렉트박스name]").val();

// 같은 방식으로 span과 같은 다른 태그도 접근 가능하다~
$("span[name=셀렉트박스name]").text();

// 선택된 값의 index를 불러오기
var index = $("#셀렉트박스ID option").index($("#셀렉트박스ID option:selected"));

// 셀렉트 박스에 option값 추가하기
$("#셀렉트박스ID").append("<option value='1'>1번</option>");

// 셀렉트 박스 option의 맨앞에 추가 할 경우
$("#셀렉트박스ID").prepend("<option value='0'>0번</option>");

// 셀렉트 박스의 html 전체를 변경할 경우
$("#셀렉트박스ID").html("<option value='1'>1차</option><option value='2'>2차</option>");

// 셀렉트 박스의 index별로 replace를 할 경우
// 해당 객체를 가져오게 되면, option이 다수가 되므로 배열 객체가 되어 eq에 index를 넣어 개별 개체를 선택할 수 있다.
$("#셀렉트박스ID option:eq(1)").replaceWith("<option value='1'>1차</option>");

// 직접 index 값을 주어 selected 속성 주기
$("#셀렉트ID option:eq(1)").attr("selected", "selected");

// text 값으로 selected 속성 주기
$("#셀렉트ID")val("1번").attr("selected", "selected");

// value 값으로 selected 속성 주기
$("#셀렉트ID").val("1");

// 해당 index item 삭제하기
$("#셀렉트ID option:eq(0)").remove();

// 첫번째, 마지막 item 삭제하기
$("#셀렉트ID option:first").remove();
$("#셀렉트ID option:last").remove();

// 선택된 옵션의 text, value 구하기
$("#셀렉트ID option:selected").text();
$("#셀렉트ID option:selected").val();

// 선택된 옵션의 index 구하기
$("#셀렉트ID option").index($("#셀렉트ID option:selected"));

// 셀렉트박스의 아이템 갯수 구하기
$("#셀렉트ID option").size();

// 선택된 옵션 전까지의 item 갯수 구하기
$("#셀렉트ID option:selected").prevAll().size();

// 선택된 옵션 후의 item 갯수 구하기
$("#셀렉트ID option:selected").nextAll().size();

// 해당 index item 이후에 option item 추가 하기
$("#셀렉트ID option:eq(0)").after("<option value='3'>3번</option>");

// 해당 index item 전에 option item 추가하기
$("#셀렉트ID option:eq(3)").before("<option value='2'>2번</option>");

// 해당 셀렉트 박스에 change event binding 하기
$("#selectID").change(function() {
alert($(this).val());
alert($(this).children("option:selected").text());
});


[jquery] select  box 선택값 가져오기

 

function (e)  <<<<< (e) 는 event 관련 object를 받는 argument 이다.

@Resource 어노테이션은 어플리케이션에서 필요로 하는 자원을 자동 연결할 떄 사용된다.

프로퍼티 및 설정메서드(Setter, Getter)등에 적용시키며 스프링 설정파일에 등록되어있는 빈 객체의 name 속성을 통하여 자동으로 주입된다.


비슷한 어노테이션으로는 

@Autowired 어노테이션이 있다.


@Autowired

- 비표준 / Spring Framework용

- Bean 검색 우선 순위 : Type 우선

- @Qualifier("")을 사용하여 지정 가능

  ex) @Autowired

 @Qualifier("test1") // 이건 Bean이 여러게 검색되었을때 이 어노테이션도 사용하여 구분 짖는다.

이런식으로 지정해 줘야 함


@Resource

- Java표준

- Bean 검색 우선 순위 : ID 우선

- Name 속성으로 지정 가능

  ex) @Resource

 @Name("test1")

이런식으로 지정해 줘야 함.


@Resource는 프로퍼티와 일치하는 빈을 찾을 것이고, 혹은 name 속성을 이용해 명시적으로 빈의 이름을 설정할 수 있다

'Back-End > Spring' 카테고리의 다른 글

Spring]Injection of resource dependencies failed 에러  (0) 2019.03.10
Context initialization failed 오류  (0) 2018.02.20
HashMap  (0) 2017.12.12
Spring 어노테이션 @PathVariable  (0) 2017.06.05

Java HashMap이란?


HashMap이란 Map인터페이스의 한종류로써 Key와 Value 값으로 데이터를 저장하는 형태를 가지고 있다.


Key 값은 중복이 불가능하고, value 값은 중복이 가능하며, value에는 null도 사용 가능.


ex)

 map.put("BTC","1000만원");

 map.put("BTG","30만원");

 map.put("BTC","2000만원");


결과 : 최종 BTC를 호출할때는 Key에 저장된 value, 2000만원으로 마지막에 입력된 값으로 변경되어 2000만원이 호출 된다.



HashMap() 사용 방법

-HashMap 객체를 생성


HashpMap<Spring, Integer> map = new HashMap<String, Integer>();





생성자/메서드설명
HashMap()HashMap 객체를 생성한다.
HashMap(int initialCapacity)지정된 값을 초기용량으로 하는 HashMap 객체 생성한다.
HashMap(int initialCapacity , float loadFactor)지정된 값을 초기용량과 load factor의 HashMap 객체 생성한다.
HashMap(Map m)주어진 Map에 저장된 모든 요소를 포함하는 MashMap 을 생성한다.
void clear()HashMap에 저장된 모든 객체를 제거한다.
Object clone()현재 HashMap을 복제하여 반환한다.
boolean containsKey(Object key)HashMap에 지정된 키(key)가 포함되어 있는지 알려준다. (포함되어 있으면 true)
boolean containsValue(Object key)HashMap에 지정된 값(value)가 포함되어 있는지 확인한다.(포함되어 있으면 true)  
Set entrySet()HashMap에 저장된 키와 값을 엔트리(키와 값의 결합)의 형태로 Set에 저장하여 반환한다.
Object get(Object key)지정된 키(Key)의 값(객체)을 반환한다.
boolean isEmpty()HashMap이 비어 있는지 확인한다.
Set keySet()HashMap에 저장된 모든 키가 저장된 Set을 반환 한다.
Object put(Object key, Object value)HashMap에 키와 값을 저장 한다.
void putAll(Map m)Map에 해당하는 모든 요소를 HashMap에 저장 한다.
Object remove(Object key)HashMap에서 지정된 키로 저장된 값(객체)를 제거한다.
int size()HashMap에 저장된 요소의 개수를 반환한다.
Collection values()HashMap에 저장된 모든 값을 컬렉션 형태로 반환한다.


 

gfn이란 ? 

Global Function의 줄임말.


서비스 이름 : gfnService(strServiceId, strArgument)

데이터 셋 이름 : dsService


데이터셋 구조


여기서 DS란 dataset을 뜻함 


SVC_ID ( 서비스 이름 )


QUERY_LIST ( 쿼리 이름 )


SERVICE ( 사용자 정의 Biz.Service 이름 ) 현재 기본값 gvService로 지정되있음


IN_DATASET_LIST ( 쿼리에 보낼 DS )


OUT_DATASET_LIST ( 결과값 쿼리를 받을 DS ) 


CONTROLLER ( 사용자 정의 컨트롤러 ) 현재 기본값 gvController로 지정되있음


CALLBACK ( 서비스를 호출 후에 부를 함수 이름 , 공통으로 지정한 방식에 따라 사용법이 바뀜 우리 회사에선 COLLBACK을 타면 Y 아니면 공백 )


SYNC_YN ( 동기화 여부, 'Y' or '공백'으로 표시 )



----


사용 목적 - 서비스 호출할때 사용함


<!-- 중소벤치기업부 사업별 매핑 Merge 등록/수정 -->

<query id="SHYBCard.mergeMapping" isDynamic="true"> 

<statement><![CDATA[ 

/* SHYBCard.mergeMapping : 중소벤치기업부 사업별 매핑 Merge 등록 / 수정 */

            MERGE INTO SHYB_RCMS_MAP_M A

      USING ( SELECT :PMS_ID     AS PMS_ID

                   , :BZ_CLAS_CD AS BZ_CLAS_CD

                   , :ITXP_CD    AS ITXP_CD

                   , :H01_DOC    AS H01_DOC 

                FROM DUAL ) B 

      ON ( A.PMS_ID     = B.PMS_ID     AND

           A.BZ_CLAS_CD = B.BZ_CLAS_CD AND

           A.ITXP_CD    = B.ITXP_CD    AND

           A.H01_DOC    = B.H01_DOC

         )

      WHEN MATCHED THEN

           UPDATE 

              SET A.USE_YN   = 'Y'

                , A.UPD_ID   = :GV_WORKER_ID

                , A.UPD_DT   = SYSDATE

      WHEN NOT MATCHED THEN

           INSERT ( PMS_ID,  BZ_CLAS_CD,  ITXP_CD,  H01_DOC,  PILSU_YN,  SORT_SEQ,  USE_YN,  BIGO,  REG_ID      , REG_DT,   UPD_ID,       UPD_DT )

           VALUES (:PMS_ID, :BZ_CLAS_CD, :ITXP_CD, :H01_DOC, :PILSU_YN, (SELECT NVL(MAX(SORT_SEQ),0) + 1 

               FROM SHYB_RCMS_MAP_M 

              WHERE PMS_ID = :PMS_ID 

                AND BZ_CLAS_CD = :BZ_CLAS_CD 

                AND ITXP_CD = :ITXP_CD),'Y', :BIGO, :GV_WORKER_ID, SYSDATE, :GV_WORKER_ID, SYSDATE )

]]></statement>

</query>


빨간 부분에서 중요한건 -> merge insert구문에서 value에 쿼리를 넣었다는것. 값을 넣어야 하기 떄문에 value에 넣은게 맞겠지??

생각 잘해라!

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

mybatis 동적 쿼리 choose 등 사용 주의사항  (1) 2018.07.13
mybits 에러  (0) 2018.07.13
Merge Into 사용방법  (0) 2017.11.23
데이터 변형  (0) 2017.10.17
LAPD,RAPD 사용법  (0) 2017.10.17

위치 : webapp > WEB-INF > config > egovframework > springmvc > dispatcher-servlet.xml


dispatcher-servlet.xml => 뷰와 컨트롤러를 연결해주는 역할을 하는 파일이다.

즉 해당 xml을 이용하면 스프링에서 제공하는 mvc를 사용 하겠다는 말과 동일하다.


작동순서


1. 클라이언트가 해당 어플리케이션에 접근하면 접근한 URL의 요청을 dispather-servlet이 가로챈다. 이렇게 요청을 

가로채는게 가능한 것은 web.xml에 등록된 dispatcher-servlet의 <url-pattern>이 해당 어플의 모든 url로 등록 되어 있기 때문이다.

 현재 전자정부프레임워크에는 <url-pattern>*.do</url-pattern> 라고 지정되어 있을 것이다.

 

2. 가로챈 정보를 HandlerMapping에게 보내서 해당요청을 처리할 수 있는 controller를 찾게 된다.


3. 핸들러 매핑이 해당 요청을 처리할 controller를 찾아냈다면 요청을 컨트롤러에 보내준다. 개발자가 건드리는 부분이 컨트롤러이다.


4. 컨트롤러는 해당 요청을 처리한 후 응답받을 view의 이름을 리턴하게 된다. 그 때 이름을 ViewResolver가 받아서 View의 존재 여부를 확인 한다.


5. 해당 view가 존재하면 처리결과를 view에 보낸 후 이 결과를 다시 디스패처 서블릿에 보낸다. 그리고 디스패처서블릿은 최종결과를 뷰에 보내게 된다.


<!-- 타일즈 세팅하는 프레임워크 -->


<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">

   <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />

   <property name="order" value="1" />

  </bean>


  <!-- Tiles 2 Configurer -->

  <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">

   <property name="definitions">

    <list>

     <value>/WEB-INF/tiles/default-layout.xml</value>

    </list>

   </property>

  </bean>


위와 같이 정의할 경우 /WEB-INF/tiles/default-layout.xml파일을 로드하여 각 view 이름에 맞게 tiles view를 리턴해 준다.


HandlerMapping - 들어오는 요청을 handlerMapping 구현체가 다양하게 만든 기준에 기반한 전처리자(pre-processors)와 후처리자(post-processors)(핸들러 인터셉터)의 목록에 매핑한다.

대부분의 인기있는 구현체는 어노테이션이 붙은 컨트롤러를 지원하지만 그렇지 않은 구현체들도 존재한다.


HandlerAdapter - 핸들러가 실제로 호출되었는지 여부에 상관없이 DispatcherServlet이 요청에 매핑된 핸들러를 호출하도록 돕닌다. 예를들어 어노테이션이 붙은 컨트롤러를 호출하려면 다양한 어노테이션을 처리해야 한다.

그러므로 HandlerAdapter의 주요 목적은 이러한 세부내용에서 DispatcherServlet을 보호하는 것이다.


HandlerExceptionResolver - 예외를 뷰에 매핑하고 더 복잡한 예외 처리 코드도 사용할 수 있다.

ViewResolver - 논리적인 스프링 기반의 뷰 이름을 실제 View 타입으로 처리한다.

LocaleResolver - 국제화된 뷰화면을 제공할 수 있도록 클라이언트가 사용하는 로케일을 처리한다.

ThemeResolver - 개인화된 레이아웃을 제공하는 것처럼 웹 어플리케이션이 사용할 수 있는 테마를 처리한다.

MiltipartResolver - HTML 폼에서 업로드하는 파일을 처리하는 등의 멀티파트(multi-part) 요청을 파싱한다.


tiles > default-layout.xml


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

<!DOCTYPE tiles-definitions PUBLIC

       "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"

       "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">

 

<tiles-definitions>

<definition name="layouts-tiles" template="/WEB-INF/jsp/egovframework/example/cmmn/default-layouts.jsp">

   <put-attribute name="header"     value="/WEB-INF/jsp/egovframework/example/cmmn/default-header.jsp" />

   <put-attribute name="left"     value="/WEB-INF/jsp/egovframework/example/cmmn/default-left.jsp" />

   <put-attribute name="nav"     value="/WEB-INF/jsp/egovframework/example/cmmn/default-nav.jsp" />

   <put-attribute name="content"    value="" />

   <put-attribute name="footer"     value="/WEB-INF/jsp/egovframework/example/cmmn/default-footer.jsp" />

</definition>

<definition name="*/*.tiles" extends="layouts-tiles">

   <put-attribute name="content"   value="/WEB-INF/jsp/egovframework/example/{1}/{2}.jsp" />

</definition>

</tiles-definitions>



// <put-attribute name="content"   value="/WEB-INF/jsp/egovframework/example/{1}/{2}.jsp" />

// 이부분의 뜻은 해당폴더 /WEB-INF/jsp/egovframework/example 밑에 있는 모든 jsp에 타일즈 (현재 폴더 defult-layout.xml)를 적용시키겠다 라는 뜻이다.



'Back-End > Egov' 카테고리의 다른 글

Maven이란??  (0) 2017.11.27

Maven(메이븐) 이란?


메이븐은 프로젝트 구조와 내용을 기술하는 선언적 접근방식의 오픈소스 빌드 툴이다. 컴파일과 동시에 빌드를 수행할수 있고 테스트를

병행하거나 서버측 디플로이 자원을 관리할 수 있는 환경을 제공한다 


pom.xml에서 핵심항목은 dependencies이다. 이것은 어플리케이션을 컴파일하고 테스트하고 실행하는데 필요한 라이브러리 목록을 기술한다.


태그의 종류


name : 프로젝트의 이름

url      : 사이트 url

groupId : 프로젝트 그룸 ID, 도메인이나 특정한 정보로 식별

version     : 버전 버전설정

packaging : 패키징 타입 설정


여기서 중요한것은 dependency인데 Spring이나 JDBC처럼 의존관계가 추가 되는 라이브러리등은 해당 타겟 라이브러리만 지정해주면

Maven이 자동으로 타겟이 의존하는 라이브러리를 설정해준다.

'Back-End > Egov' 카테고리의 다른 글

디스패처 서블릿(dispatcher-servlet) 과 타일즈 설정  (0) 2017.11.27

merge into는 

DB 테이블을 다룰 때, 특정 조건의 데이터가 존재하는 경우에는 해당 row를 원하는 값으로 update하고,

없는 경우에는 새로운 데이터를 insert해야 하는 경우에 사용한다. 



MERGE문


MERGE INTO 테이블명

USING ( update나 insert될 데이터 원천, 하나의 테이블만 이용한다면 FROM DUAL사용 )

ON (UPDATE될 조건, 쿼리의 WHERE이라고 봐도 무방함)

WHEN MATCHED THEN ( ON에서 조건에 해당하면 실행 될 문 )

UPDATE SET 컬럼1 = 값1 ( UPDATE문 실행)

WHEN NOT MATCHED THEN ( ON에서 조건에 해당하지 않으면 실행 될 문 )

INSERT ( 컬럼 LIST ) VALUE ( VALUE );



!!!!!! 가장 중요한것. 이거때문에 하루 버렸는데,Point!!!!


using ( select 할때 )에서 항시 해당 Table 의 PK를 전체를 변수로 받아야 합니다.  null 유의 )



예) 회사에서 사용한 것 (테이블명,컬럼명 변경함)


MERGE INTO MAP_M A

      USING ( SELECT :컬럼0 AS 컬럼0         //컬럼0~3은 모두 MAP_M 이라는 테이블의 KEY값.

                   , :컬럼1 AS 컬럼1

                   , :컬럼2 AS 컬럼2

                   , :컬럼3 AS 컬럼3

                FROM DUAL ) B // FROM DUAL은 테이블을 1개만 쓸때!! 

      ON ( A.컬럼0     = B.컬럼0     AND

           A.컬럼1 = B.컬럼1 AND

           A.컬럼2 = B.컬럼2 AND

           A.컬럼3 = B.컬럼3

          )

      WHEN MATCHED THEN

           UPDATE 

              SET A.컬럼4   = 'Y'

                , A.컬럼5   = :받아올 값

                , A.컬럼6   = :받아올 값

      WHEN NOT MATCHED THEN

            INSERT ( 컬럼1,   컬럼2,    컬럼3,    컬럼4,    컬럼5,    컬럼6 )

           VALUES (:컬럼1,  :컬럼2,    :컬럼3,    :컬럼4,    :컬럼5,   :컬럼6 )


이런식으로 사용하면 끝 !!!! 


그리고 Oracle 10g 이후에는 When matched,, when not matched 이하의 update,insert 구문에도 where을 사용할 수 있습니다 !!!! 



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

mybits 에러  (0) 2018.07.13
이런방식의 쿼리. sort_sql에서 max값 구할때  (0) 2017.12.06
데이터 변형  (0) 2017.10.17
LAPD,RAPD 사용법  (0) 2017.10.17
UNION, UNION ALL  (0) 2017.06.16

+ Recent posts