이 블로그 검색

2010년 10월 28일 목요일

according to TLD or attribute directive in tag file, attribute value does not accept any expressions

"<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>" 으로 작성을 했더니 아래의 에러가 발생
→ According to TLD or attribute directive in tag file, attribute value does not accept any expressions

"<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>"으로 수정하니 정상적으로 실행됨


Servlet 2.3<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

Servlet 2.4<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>

2010년 10월 21일 목요일

jstl

  • forEach, if

<select name="ASTimeHH">
    <c:forEach var="ii" begin="0" end="24" step="1">
<option value="${ii}" <c:if test="${fn:substring(mainData.ACCEPT_START_YMD, 8, 10) == ii}">selected</c:if>>${ii}
        </option>
   </c:forEach>
</select>

이미지 넣기

  • 표기법
  1. background-image: url(images/bg.gif); =>css 파일 기준 경로
  2. background-image: url(../images/bg.gif);  => css 파일 기준 경로
  3. background-image: url(/images/bg.gif);

  • 반복 제어
  1. background-repeat : no-repeat;
  2. background-repeat : repeat;
  3. background-repeat : repeat-x;
  4. background-repeat : repeat-y;

  • 위치지정
  1. 가로(left, center, right), 세로(top, center, bottom)
  2. 예) background-position : left top;
  3. 예) background-position : 5px 8px;  =>오른쪽으로 5px, 아래로 8px
  4. 예) background-position : 50% 50%  =>화면 한가운데 배치
  5. 예) background-position : 5px 50%   =>오른쪽으로5px, 세로로 가운데

  • 제자리에 이미지 고정시키기
  1. background-attachment : fixed; =>스크롤해도 화면의 그 자리에 계속 유지
  2. background-attachment : scroll;  => 기본설정

  • 속기법
  1. background : url(image/bullseye.gif) fixed left top repeat-x;

overflow 프로퍼티

스타일 정의된 태그안의 내용물이 스타일에 정의된 너비나 높이를 넘어설 경우

  1. overflow : visible;  => 평소대로 보여준다.
  2. scroll;  => 스크롤바를 넣는다.
  3. auto; => 스크롤바가 필요할때만 넣는다.
  4. hidden; =>박스바깥으로 넘치는 내용은 숨긴다. 

border태그

  • 속성
  1. color
  2. width : 선의 두께
  3. style : solid, dotted, dashed, double, groove, ridge, inset, outset, none, hidden

  • 설정방법
  1. border : 4px solid #F00;
  2. border-bottom : 2px dashed red;
  3. border : 2px inset #FFCC33; border-right:none;   =>위, 아래, 왼쪽에만 선을 넣음
  4. border-width:2px; border-style:double;  border-color:#FFCC33;

2010년 10월 14일 목요일

StringTokenizer

st = new StringTokenizer(amcBean.getPOST(), "-");
tmp_zip_1 = st.nextToken();
tmp_zip_2 = st.nextToken();

화면 가운데 배치하기

#wrapper{
  width:760px;
  margin:15px auto 0 auto;
}

<body>
  <div id="wrapper">
  </div>
</body>


  • 800*600정도 해상도에 맞음

2010년 10월 13일 수요일

XML 파일 생성

  1. JSP페이지에서 만들기
  2. JDOM
      -XML.JAVA

/**
 * @class Xml
 * @brief Xml Classes
 *
 * registered date 20100105
 * programmed by Seok Kyun. Choi. 최석균
 * http://syaku.tistory.com
 */

package org.syaku.util;

import java.util.*;

import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;


public class Xml {

  // 해쉬맵을 이용하여 문서 생성
  public Document make(HashMap hm) throws Exception {
    
    Element data = new Element("data");

    Element element = new Element("item");
    Set set = hm.keySet();
    Object []items = set.toArray();
    for(int i = 0; i < items.length; i++) {
      String name = (String) items[i]; 
      String value = (String) hm.get(name);

      addElement(element,name,value);
    }

    data.addContent(element);

    Document document = new Document(data);

    return document;
  }

  // 엘리먼트 생성
  public Element addElement(Element parent, String name, String value) {
    Element element = new Element(name);
    element.setText(value);
    parent.addContent(element);
    return parent;
  }

  // 애트리뷰트 생성
  public void addAttribute(Element element, String name, String value){
    Attribute attribute = new Attribute(name,value);
    element.setAttribute(attribute);
  }


}
- XML출력
<%@ page contentType="text/html; charset=euc-kr"%>
<%@ page import="java.util.*" %>
<%@ page import="org.syaku.util.*" %>
<%@ page import="org.jdom.*" %>
<%@ page import="org.jdom.output.*" %>

<%
HashMap hm = new HashMap();
hm.put("샤쿠","Syaku");
hm.put("Site","syaku.tistory.com");
hm.put("블로그","Blog");

Xml xml = new Xml();
Document document = (Document) xml.make(hm);

XMLOutputter outputter = new XMLOutputter();
Format format = Format.getPrettyFormat();
format.setEncoding("EUC-KR");
outputter.setFormat(format);

response.setContentType("application/xml");
outputter.output(document, response.getWriter());
// 시스템출력
// outputter.output(document, System.out);
%>


    - 생성된 XML

3단 레이아웃

<html>
<head>
<title>3단 레이아웃
</title>

<style type="text/css">
#banner{
  background-color:red;
}

#leftSidebar{
  background-color:yellow;
  position:absolute;
  top:0;
  left:0;
  width:150px;
}

#mainContent{
  background-color:blue;
  margin-left:170px;
  margin-right:170px;
 
}

#rightSidebar{
  background-color:yellow;
  position:absolute;
  top:0;
  right:0;
  width:150px;
}

#footer{
  background-color:#808000;
}

#contentWrapper{
  position:relative;

}
</style>
</head>
<body>
<div id="banner">banner</div>
<div id="contentWrapper">
  <div id="leftSidebar">leftSidebar</div>
  <div id="mainContent">mainContent<br>여기는 본문영역입니다.</div>
  <div id="rightSidebar">rightSidebar</div>
  <div id="footer">footer</div>
</div>
</body>
</html>

ajax 참고 사이트

  • 기본적인 ajax소스 및 테스트

http://www.w3schools.com/ajax/default.asp

xml 받아와서 뿌리기

AJAX XML Example



The loadXMLDoc() function creates an XMLHttpRequest object, adds the function to be executed when the server response is ready, and sends the request off to the server.
When the server response is ready, an HTML table is built, nodes (elements) are extracted from the XML file, and it finally updates the txtCDInfo placeholder with the HTML table filled with XML data:


function loadXMLDoc(url)
{
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    txt="<table border='1'><tr><th>Title</th><th>Artist</th></tr>";
    x=xmlhttp.responseXML.documentElement.getElementsByTagName("CD");
    for (i=0;i<x.length;i++)
      {
      txt=txt + "<tr>";
      xx=x[i].getElementsByTagName("TITLE");
        {
        try
          {
          txt=txt + "<td>" + xx[0].firstChild.nodeValue + "</td>";
          }
        catch (er)
          {
          txt=txt + "<td>&nbsp;</td>";
          }
        }
    xx=x[i].getElementsByTagName("ARTIST");
      {
        try
          {
          txt=txt + "<td>" + xx[0].firstChild.nodeValue + "</td>";
          }
        catch (er)
          {
          txt=txt + "<td>&nbsp;</td>";
          }
        }
      txt=txt + "</tr>";
      }
    txt=txt + "</table>";
    document.getElementById('txtCDInfo').innerHTML=txt;
    }
  }
xmlhttp.open("GET",url,true);
xmlhttp.send();
}














   <CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
</CATALOG>












파라미터를 서버로 보내기


요청 파라미터를 서버로 보내기

서버로 요청을 보내는 방법으로 GET, POST 방식에 대해 사용법을 보겠습니다.

먼저 GET 방식은  GetAndPostExample.jsp?name=홍길동
처럼 URL 을 만들어서 호출합니다. 한글처리를 위해서 encodeURI 함수를 사용해서
인코딩합니다.  AJAX 에서는 데이터 전송시 UTF-8 을 사용합니다.
그래서 한글 처리에 주의해야 합니다. 한글 처리부분은 서버에 따라 달라지는 것 같습니다.
TOMCAT 에서와 IIS + PHP 에서 처리방법이 달라지더군요. 공통적으로 처리하는 방법이
있는지 알아봐야 겠네요.^^

POST 방식은 
xmlHttp.open("POST", url, true);  // POST 방식을 사용한다고 초기화 합니다.
xmlHttp.onreadystatechange = handleStateChange;  // 콜백 함수를 붙입니다.
// 헤더를 지정합니다. POST 방식에서는 필요하다고 합니다.
// PHP에서는 이 라인이 없어야 제대로 수행되었던것 같습니다.
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
// GET 과는 다르게 보낼 내용을 send 메소드에 넣습니다.
xmlHttp.send("name=홍길동");





파일 : GetAndPostExample.html






요청 파라미터를 서버로 보내기


이름을 입력하세요:



 
   
     
     
   
 
이름:


 
 

 



서버 응답:




파일 : GetAndPostExample.jsp


안녕하세요. 님 환영합니다. [Method: ]

2010년 10월 12일 화요일

오라클 함수

단일행 함수

 - 
문자형 함수
 UPPER : 
모든 문자를 대문자로 전환 
 LOWER : 
모든 문자를 소문자로 전환 
 INITCAP : 
문자를 단어별로 앞머리는 대문자 나머지는 소문자로 전환 
 CONCAT : 
 문자열을 합성. ||연산자와 같은 용도로 사용
 SUBSTR : 
특정문자열의 부분을 선택 
 LENGTH : 
문자열의 길이를 구함 
 LPAD : 
왼쪽 문자 자리를 채움 
 RPAD : 
오른쪽 문자 자리를 채움 
 LTRIM : 
왼쪽 문자를 지움 
 RTRIM : 
오른쪽 문자를 지움 
 TRANSLATE : 
특정 문자열을 대체 
 REPLACE : 
특정 문자열을 대신 

 UPPER(
문자값) : UPPER('Oracle Server')
 → ORACLE SERVER 
 LOWER(
문자값) :  LOWER('Oracle Server')
 → oracle server 
 INITCAP(
문자값) :  INITCAP('Oracle Server')
 → Oracle Server 
 CONCAT(
문자값1,  문자값2) :  CONCAT('Oracle', ' Server')
 → Oracle Server 
 SUBSTR(
문자값,  a,  b)
 a 
선택할 문자열의 시작위치.
 
음수면 끝에서부터 시작
 b 
선택할 문자열의 개수.
 
 인자는 생략할  있으며,  
 
생략할 경우 문자열의 끝까지 선택 
 :  SUBSTR('
강남구 역삼동‘,5,2)
 → 
역삼 
 LENGTH(
문자값1, a, 문자값2) : LENGTH(‘홍길동’)
 → 3 
 LPAD(
문자값1, a, 문자값2)
 RPAD(
문자값1, a, 문자값2)
 a : 
전체 채울 자리수
 
문자값2 : 채울 문자 
 
생략할  있으며생략되면 
 
공백값임 
 : LPAD(‘
홍길동’,10 ‘*’)
 → ****
홍길동 
 LTRIM(
문자값1, 문자값2)
 RTRIM(
문자값1, 문자값2)
 
문자값1에서 왼쪽(오른쪽)에서부터
 
더이상 문자값2 만나지 않을 때까지 지움
 : LTRIM('XXAXBA','X')
 → AXBA 
 TRANSLATE(
문자값, a, b)
 a 
대체하고 싶은 문자(from)
 b 
대체할 결과의 문자(to) 
 : TRANSLATE('AABBA','B','C')
 → AACCA 
 REPLACE (
문자값, a, b) 
 a 
바꾸고 싶은 문자(from)
 b 
바꿀 결과의 문자(to) 
 : REPLACE ('JACK and JUE','J','BL') 
 → BLACK and BLUE 

 - 
숫자형 함수
 ROUND : 
숫자를 반올림 
 TRUNC : 
숫자를 절사 
 MOD : 
나누기 연산에서 나머지 구함 
 POWER : 
거듭제곱 
 SQRT : 
제곱근 
 SIGN : 
양수인지 음수인지 0인지를 구벌함 
 CHR : ASCII 
값에 해당하는 문자를 구함 

 ROUND(
숫자값, a), TRUNC(숫자값, a)
 a 
숫자값을 반올림(버림)하여 a자리까지 
 
돌려줌.a 양수이면 소수이하자리를
 
음수이면 정수 부분 자리임
 
생략할  있으며생략하면 0
 : ROUND(35.735,2)→35.74 
 MOD(
숫자값, a )
 a 
숫자값을 나누기   있음
 : MOD(7,2)→1 
 POWER(
숫자값1, 숫자값2) : POWER(3,2)→9 
 SQRT (
숫자값) : SQRT(25)→5 
 SIGN(
숫자값) : SIGN(-15)→-1 
 CHR(
숫자값) : CHR(65)→A 

 - 
날짜형 함수
 SYSDATE : 
현재 시스템의 날짜  시간을 구함 
 LAST_DAY : 
지정한 날짜의 해당 월의 마지막 날짜를 구함 
 MONTHS_BETWEEN : 
 날짜 사이의 개월 수를 구함 
 ADD_MONTHS : 
지정한 날짜로부터  개월 후의 날짜를 구함 
 ROUND : 
날짜에 대한 반올림 
 TRUNC : 
날짜에 대한 버림 

 SYSDATE : SYSDATE → 10-MAY-99 
 LAST_DAY(
날짜값) : LAST_DAY('17-FEB-98') → 28-FEB-98 
 MONTHS_BETWEEN(
날짜값1, 날짜값2) : MONTHS_BETWEEN('26-APR-97','22-JUL-95') → 21.1290323
 ADD_MONTHS(
날짜값숫자값) : ADD_MONTHS('22-JUL-95',21) → 22-APR-97 
 ROUND(
날짜값자리수) : 현재 날짜가 1999 5 10일이라고 가정하자.
 ROUND(SYSDATE,'MONTH') → 01-MAY-99
 TRUNC(
날짜값자리수) : 현재 날짜가 1999 5 10일이라고 가정하자.
 TRUNC(SYSDATE,'YEAR') → 01-JAN-99

 - 
날짜에 대한 산술연산
 
날짜 + 숫자 : 날짜 특정한 날로부터 몇일 후의 날짜 계산 
 
날짜 - 숫자 : 날짜 특정한 날로부터 몇일 전의 날짜 계산 
 
날짜 - 날짜 : 숫자  날짜 사이의 차이를 숫자로 계산 

 - 
변환형 함수
 TO_CHAR : 
숫자나 날짜를 문자열로 변환 
 TO_NUMBER : 
문자를 숫자로 변환 
 TO_DATE : 
문자를 날짜로 변환 

 - TO_CHAR
에서 숫자를 문자로 변환시에 형식에 사용되는 요소
 9 : 
일반적인 숫자를 나타냄 
 0 : 
앞의 빈자리를 0으로 채움 
 $ : dollar
 표시함 
 L : 
지역 통화 단위(ex ) 
 . : 
소숫점을 표시함 
 , : 
천단위를 표시함 
 - TO_CHAR
에서 날짜를 문자로 변환시에 형식에 사용되는 요소
 SCC : 
세기를 표시 S 기원전(BC) 
 YEAR : 
연도를 알파벳으로 spelling 
 YYYY : 4
자리 연도로 표시 
 YY : 
끝의 2자리 연도로 표시 
 MONTH : 
월을 알파벳으로 spelling 
 MON : 
월의 알파벳 약어 
 MM : 
월을 2자리 숫자로 표시 
 DAY : 
일에 해당하는 요일 
 DY : 
일에 해당하는 요일의 약어 
 DDD,DD,D : 
연도,, 중의 날짜를 숫자로 표시 
 HH , HH24 : (1-12) , (0-23)
중의 시간을 표시 
 MI : 
분을 표시 
 SS : 
초를 표시 
 AM(A.M.),PM(P.M.) : 
오전인지 오후인지를 표시 

 TO_CHAR(
문자값,‘형식’)
 
숫자를 문자로 변환 : TO_CHAR(350000,'$999, 999')→ $350,000
 
숫자를 날짜로 변환 : TO_CHAR(SYSDATE,'YY/MM/DD')→ 95/05/25 
 TO_DATE(
문자값, ‘형식’) : TO_DATE('10 SEPTEMBER 1992','DD MONTH YYYY')→10-SEP-92 
 TO_NUMBER(
문자값) : TO_NUMBER('1234')→ 1234 

 - DECODE 
함수
 DECODE 
함수는 값을 비교하여 해당하는 값을 돌려주는 함수
 > DECODE (
형식,비교값1,결과치1,비교값2,결과치2,...기본치 )
 
형식 : 컬럼이나  
 
비교값1 : 형식이 비교값1 맞는지를 비교 
 
결과값1 : 형식이 비교값1 맞을  갖는  
 
기본치 : 형식이 비교값1,2,... 맞지 않을  가지는 
 
생략될  있으며생략되면 NULL이다

 SQL> SELECT name,title,DECODE(SUBSTR(title,-2,2),
 2 '
부장',salary*1.1,
 3 '
과장',salary*1.07,
 4 '
사원',salary*1.05,
 5 salary) 
이번달급여
 6 FROM s_emp
 7 ORDER BY 3 DESC ;

다중행 함수

 - 
그룹함수
 COUNT( a ) : a
 행의 개수를 구함 
 AVG( a ) : a
 평균을 구함 
 SUM( a ) : a
 합계를 구함 
 MIN( a ) : a
 최소값을 구함 
 MAX( a ) : a
 최대값을 구함 
 STDDEV( a ) : a
 표준 편차를 구함 
 VARIANCE( a ) : a
 분산을 구함 

 COUNT(*)
 제외한 모든 그룹함수는 NULL값을 고려하지 않습니다
 
중복값을 제거하고 싶은 경우는 a 앞에 DISTINCT 기술합니다
 MAX , MIN , COUNT
 제외한 그룹함수는 숫자타입의 데이터에만 가능합니다