레이블이 struts view인 게시물을 표시합니다. 모든 게시물 표시
레이블이 struts view인 게시물을 표시합니다. 모든 게시물 표시

2013년 10월 28일 월요일

default 키워드 사용 예제 oracle 9i에서는 SQL문에 default 키워드를 사용 할 수 ...

default 키워드 사용 예제

oracle 9i에서는 SQL문에 default 키워드를 사용 할 수 있게 되었는데 아래의 예를 통해 이해해 보도록 합니다.

SQL>  create table addr (
  2  name varchar2(15) not null primary key,
  3  age number(3) default 0
  4  );

Table created.

SQL> insert into addr (name, age) values ('jclee1',1);

1 row created.

SQL> insert into addr (name, age) values ('jclee2',2);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from addr;

NAME                  AGE
--------------- ----------
jclee1                  1
jclee2                  2

SQL> update addr set age=default
  2  where name = 'jclee1';

1 row updated.

SQL> commit;

Commit complete.

SQL> select * from addr;

NAME                  AGE
--------------- ----------
jclee1                  0
jclee2                  2 

2013년 8월 8일 목요일

[오라클자바커뮤니티자바교육강좌, ORACLEJAVA.KR]jQuery를 통한 무한 스크롤 구현

jQuery를 통한 무한 스크롤 구현


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  


window객체에 scroll 이벤트 연결원리 

사용자가 마우스  스크롤 움직이면 scroll 이벤트 발생
무한 스크롤 만들려면 화면 끝까지 스크롤이 도달 했다는 사실 인식 필요
   document 객체의 height 속성은 문서 전체의 높이의미
   스크롤이 끝까지 내려가면  window객체 scrollTop +height=document 객체높이
<script type="text/javascript">
$(document).ready(function() {
//스크롤 이벤트 발생 시
$(window).scroll(function() {
var scrollHeight = $(window).scrollTop()+$(window).height();
var documentHeight = $(document).height();
if (scrollHeight = documentHeight) {
for(var i=0; i <10; i++) {
$("<h1>무한 스크롤 </h1>").appendTo("body");
}
}
});
});
$(document).ready(function() {
for(var i=0; i<20; i++) {
$("<h1>무한 스크롤</h1>").appendTo("body");
}
});
</script><body></body>

 

[Struts Shopping cart, 오라클자바커뮤니티]스트럿츠 이번에는 상품 상세보기에서 장바구니 담기를 구현해 보도록 하죠^^

이번에는 상품 상세보기에서 장바구니 담기를 구현해 보도록 하죠^^


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  


 

---------------------------------------------------------------
1. 상품상세보기 에서는 다음과 같이 HTML FORM 태그를 구성합니다.
---------------------------------------------------------------

<html:form action="/CartInsert">



----------------------------------------------------------------
2. CartInsert를 위한 struts-config.xml은 다음과 같습니다.
----------------------------------------------------------------

<!-- Insert ShoppingCart  -->
        <action         
            path="/CartInsert"
            type="goods.action.CartInsertAction"
            name="cartForm"                                     
        />

혹시 몰라 말씀드리는데... 스트럿츠의 <html:form>에는 html이나 jsp에서 from name을 주지않도록 되어 있는데,.,, 이는 struts-config.xml안에서 정의하기 때문이죠... html 소스 보기를 하면 자동으로 form name이 변환되어져 있는 것을 확인 할 수 있습니다.


----------------------------------------------------------------
3. CartInsertAction.java
----------------------------------------------------------------

//============================================================================
/**
  * 시스템명 : goods / 장바구니
  * 작 성 일  : 2005-05-15
  * 작 성 자  : Lee, Jong-Cheol
  * 수 정 자  :
  * 파 일 명  : goods.action.CartInsertAction
  * 버    전  : 1.0
  * 개    요  : 쇼핑카트의 물품 추가 Action
  * 이    력  : 2005-05-15 : 초기 작성
  *     
  */
//============================================================================

package goods.action;

import java.util.ArrayList;

import goods.model.Cart;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;

import oraclejava.BaseActionLogin;
import oraclejava.Constants;
import oraclejava.YLog;


/**
 * @author 이종철
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class CartInsertAction extends BaseActionLogin{
    public ActionForward cartInsert(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
                    throws Exception {                         
       
                DynaActionForm dForm = (DynaActionForm)form;
       
                String gCode        = dForm.get("gcode").toString();
                String gName        = dForm.get("gname").toString();
                String gName2      = dForm.get("gname2").toString();
                String price        = dForm.get("price").toString();
                String cnt          = dForm.get("cnt").toString();
                String juklip_ratio = dForm.get("juklip_ratio").toString();
                String unit        = dForm.get("unit").toString();
                String image_path3  = dForm.get("image_path3").toString();
                String is_taekbae_discount  = dForm.get("is_taekbae_discount").toString();
                String is_direct    = dForm.get("is_direct").toString();
             
                Cart cart = getCart(request);
                                                                                                                     
                cart.addItem(gCode, gName, gName2, price, cnt, juklip_ratio, unit, image_path3, is_taekbae_discount);
               
                ArrayList cartList = (ArrayList)cart.getCartItems();
               
                HttpSession session = request.getSession();
                   
                session.setAttribute(Constants.CART_LIST, cartList);
               
                //장바구니 보기
                if (is_direct.equals("N")) {                                     
                    return mapping.findForward(Constants.CARTOK);
                }
                //바로 주문하기
                else {
                    return mapping.findForward(Constants.ORDERPAGE); 
                }                                                         
            }
}


Cart.java, CartItem.java는 이전 강좌를 참고 하세요~

[오라클자바커뮤니티]Struts Validator 프레임워크 소개

Struts Validator 프레임워크 소개 


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  


스트럿츠의 Validator 프레임워크는 특별한 검증 로직을 개발자가 프로그래밍 하지 않고 애플리케이션의 Validation Rule을 이용하여 설정 할 수 있게 해 줍니다.(사용자가 필수입력 항목에 값을 넣었는지, 값이 지정된 범위에 맞게 되어 있는지, 이메일 주소 형식이 올바른지, 우편번호 형식이 맞는지…)  마치 닷넷 프레임워크의 Validation Control과 같은 기능을 수행 합니다.  (값을 꼭 넣으세요, 나이는 0 ~99 사이 입니다, 전화번호 형식이 잘못 되었군요, E-Mail 주소 형식이 잘못 되었군요와 같은 오류를 출력 할 수 있겠죠^^)

ActionForm에서 개개 프로퍼티에 대해 분리된 검증 로직을 구현하기 위해서는 에러 발견시 수동으로 ActionErrors를 만들고 ActionErros 컬렉션에 추가하는 별도의 작업을 개발자가 해 주어야 합니다.

이러한 방식의 문제점은 애플리케이션 전체에 걸쳐 많은 검증 로직을 포함하는 각각의 ActionForm 내부에 코딩을 해야 한다는 것 입니다. 값이 꼭 입력되어야 하는 “필수입력” 이라는 것만 생각 해 보아도 이것을 개개 프로퍼티(속성) 마다 , 그리고 모든 ActionForm에 대해 기술 한다는 것은 상당한 낭비라고 생각합니다. 물론 이러한 형태는 유지 보수도 어렵게 하는 단점도 있습니다.

Validator Framework는 현재 Jakarta Comons 프로젝트의 한 부분으로 스트럿츠 메인 배포판에 포함되어 있습니다. 물론 Commons 다운로드 페이지에서도 다운 받을 수 있습니다.
(http://jakarta.apache.org/commons)

Validator Framework에는 고유한 기능들을 위한 몇 개의 패키지가 필요한데 그 중 Jakarta ORO 패지지가 가장 중요 합니다. 정규 표현식, 치환, 텍스트 분리 등의 기능을 포함하고 있습니다. 스트럿츠에서 필요로 하는 패키지는 스트럿츠의 배포판에 포함되어 있는데 commons-validator.jar와 commons-oro.jar 파일을 /WEB-INF/lib 폴더에 추가 해야 합니다. 

Validator 프레임워크는 프로그래밍이 아닌 선언을 통해 사용자의 입력 값을 검증 하는 것으로 이것은 결국 소스 외부의 어떤 검증 규칙이 있다는 것을 의미 합니다. 즉 validation-rule.xml과 validation.xml 이라는 두 개의 설정 파일을 필요로 합니다.

---------------------------------
Validator Framework에 관해
---------------------------------

- 일종의 프레임웍 컴포넌트 입니다.
- XML 파일을 통해 설정 하며, 이 파일을 통해 폼의 필드에 대한 Validation 조건을 기술 합니다.
- 날짜나 정수형과 같은 기본 데이터 타입을 위한 Validator가 제공 됩니다.
- 우편번호나 전화번호 같은 패턴 기반 검증도 가능 합니다.
- 멀티 페이지와 지역화된 검증이 지원 됩니다.
- 리소스의 최적 사용 :: JavaScript 검증 기능을 제공 하거나 서버 측의 검증을 보장 가능
- 유지보수를 한곳에서 :: 클라이언트와 서버측 검증 모두를 동일한 Configuration으로부터 생성 가능
- 확장성 :: 사용자 정의 검증은 정규 표현식이나 자바 코드를 통해 가능
- 스트럿츠와의 통합 :: 기본적으로 검증은 스트럿츠의 메시지 번들을 공유
 

--------------------------------------
Validator를 구성하는 Component
--------------------------------------

- Validator
       
기본적인 공통의 타입을 다루며 required mask, minLength, maxLength, range, native types, date, email, credit card등을 포함 합니다.

- Resource Bundle
       
        지역화된 메시지와 라벨을 제공

- XML Configuration (File)

        검증 룰에 대한 정의
       
- JSP Tag

        주어진 폼 이름과 액션 경로를 통한 JavaScript 검증을 발생 시킵니다.       

- ValidatorForm
       
자동적으로 폼빈 이름에 기반한 프로퍼티들을 검증 합니다.
(실행 시점에 ActionMapping 파라미터를 통해 validate() 메소드로 보내어진)

- ValidatorActionForm

        자동적으로 액션 경로에 기반한 프로퍼티들을 검증 합니다.
(실행 시점에 ActionMapping 파라미터를 통해 validate() 메소드로 보내어진)

2013년 8월 5일 월요일

(Java Framework, 자바교육,스트럿츠교육)Java Struts View

Struts에서의 VIEW 


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의) 
 www.onjprogramming.co.kr 


Struts Framework에서 VIEW의 역할은 대부분 JSP가 수행 하며 커스텀태그,HTML,JSP의 조합으로 VIEW 를 만들어 낼 수 있습니다.

JSP기술은 개발자가 JSP안의 스크립틀릿에 비즈니스 로직을 마음대로 추가 할 수 있으므로 유지보스를 어렵게 하며 개발자가 JSP문법 뿐 아니라 커스텀태그의 사용법까지 알고 있어야 하는 단점이 있습니다. 또한 변경 후 다시 시작하는 경우 JSP 페이지를 다시 컴파일 해야 합니다.

Struts에서 사용 가능한 태그라이브러리는 HTML, Bean, Logic, Template, Nested, Tiles 6가지가 있습니다. 각 태그라이브러리는 서로 다른 역할을 하며 독립적으로 사용 가능 합니다. 또한 사용자가 새로운 커스텀 태그를 만들어 사용하는 것도 가능 합니다.

이전 로그인 예제(3)에서 사용자가 main.jsp에 접근 할 때 인증을 한 사용자인지의 여부를 검사하는 것을 커스텀 태그를 이용하여 만들어 봤습니다.

스트럿츠에서 제공하는 태그 라이브러리를 사용 하려면 web.xml에 등록해야 하는데 아래는 web.xml 파일의 내용 입니다.

<!-- Struts Tag Library Descriptors -->
        <taglib>
            <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
            <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
            <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
            <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
        </taglib>

다음으로 해야 할 일은 JSP 페이지에서 taglib 지시자를 추가 하는 것입니다.

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>


다음은 스트럿츠에서 제공 하는 커스텀 태그를 이용한 login.jsp 입니다.

<%@ page language="java" %>
<%@ page pageEncoding="euc-kr" %>
<!-- 최초 사용자가 접속하게 되는 페이지 입니다. -->
<!-- 아래는 import와 동일한 기능을 하는 태그로 태그 확장을 사용 할 수 있도록 합니다 -->
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/app.tld" prefix="login" %>

<!-- 인증이 안된 사용자는 login.jsp로 보내 버립니다. -->
<login:IsLogin/>

<html>
<head>
    <title><bean:message key="main.title" /></title>
    <html:base/>
</head>       
        <body>               
            <h3>반갑습니다.<bean:write name="user" property="id"/>님!</h3>                                       
                <ul>                       
                        <li>                           
                                <html:link forward="logoff">로그아웃</html:link>
                        </li>                       
                </ul>
        <body>
</html>