레이블이 instance method인 게시물을 표시합니다. 모든 게시물 표시
레이블이 instance method인 게시물을 표시합니다. 모든 게시물 표시

2013년 8월 8일 목요일

[오라클자바커뮤니티,자바교육]자바의 자료형

JAVA자료형에 대해 계속 보도록 하겠습니다. 


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



1. 정수 자료형 (byte,short,int,long)

자바에서 제공하는 정수 자료형은 byte, short, int, long 4가지가 있습니다.(1,2,4,8 바이트 순)

C언어의 unsigned는 지원하지 않습니다.

short, byte에 연산을 하면 무조건 int형이 됩니다. 아래의 예를 보죠...

short a=0, b=0;

short c = a + b;

만약 위의 코드 부분이 컴파일 되다면 다음과 같은 오류가 날것 입니다.

---------- javac ----------
test.java:10: possible loss of precision
found : int
required: short
short c = a + b;
^
1 error


int형이 아닌 long형으로 데이터를 다루기 위해선 숫자 끝에 소문자 l이나 대문자 L을 표시한다.

Int : 12 (10진수), 012 (8진수), 0x12 (16진수)

Long : 12L, 12l



2. 부동소수 자료형 (float ,double)

자바에서 제공하는 부동소수 자료형은 float와 double이 있습니다.
부동소수 자료형 뒤에 아무것도 붙이지 않거나 ‘d’ 또는 ‘D’ 가 붙으면 기본적으로 double 형이 되며 ‘f’, ‘F’를 붙이면 float 자료형이 됩니다.

유효 10진 자리수
float : 6자리, double : 15자리

2진수로 표현하므로 표현 오차 발생하며 보다 정확한 표현을 하려면 BigDecimal 이용하세요~

리터럴

float --> 1e1f, 2.F, .3f, 6.02E+23f, 1.4039846e-45f ~ 3.40282347e+38f
double --> 1e1, 2.D, .3, 6.02E+23d, 4.94065645841246544e-324 ~ 1.79769313486231570e+308



[예제]

// FloatPointTest.java

class FloatingPointTest
{
public static void main( String[] args )
{
System.out.println( 1.2345678901234567890123456789 ); // 1.2345678901234567
System.out.println( 2e3 ); // 2000.0
System.out.println( 0.1 + 1.6 ); // 1.7000000000000002
System.out.println( 3.0 / 0.0 ); // Infinity
System.out.println( 0.0 / 0.0 ); // NaN
}
}



3. 진리 자료형 (boolean)

boolean Literal : true, false

boolean 형은 다른 데이터형과 연산이 불가하며 boolean형은 boolean 형과 연산이 가능 합니다.

[예제]

public class BooleanTest {
public static void main(String[] args) {
boolean b1 = true; boolean b2 = !b1;
System.out.println("b1 : " + b1);
System.out.println("!b1 : " + b2);
System.out.println(b1 & b2);
System.out.println(b1 | b2);
System.out.println(b1 == b2);
System.out.println(" 6 < 7 : " + (6 < 7));
}
}

[결과]

b1 : true
!b1 : false
false
true
false
6 < 7 : true

4. 문자 자료형 (char)

자바는 유니코드를 지원하는데 JDK1.4부터는 Unicode 2.0까지 지원합니다.

한 문자를 표현할 때는 '와 ' 사이에 단 한 글자만이 올 수 있습니다.

자바에서 문자를 표현하는 방법은 두가지가 있는데 첫번째 방법은 있는 그대로 쓰는 것이며 두번째 방법은 유니코드로 표현하는 방법이다. 예)char c = ‘A’, char c = ‘\u0041’

[예]

class CharTest {
public static void main(String[] args) {
char c1 = 'A'; char c2 = '\u0041';
char c3 = '가'; char c4 = '\uac00';
System.out.println("c1:"+c1+",c2:"+c2);
System.out.println(c1 == c2);
System.out.println("c3:"+c3+",c4:"+c4);
System.out.println(c3 == c4);
}
}

[결과]

c1:A,c2:A
true
c3:가,c4:가
true

[ORACLEJAVANEW.KR]Struts DispacthAction 클래스

Struts DispacthAction 클래스 DispacthAction 클래스


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


액션의 경우 하나의 클래스에 관련된 action이 정의 되어 있는 것이 좋은 방법인데  DispacthAction 클래스는 관련된 action은 하나의 클래스에 관리하는 방법을 제공 합니다.

DispacthAction 클래스는 추상 클래스 이므로 사용하기 위해서는 액션 클래스에서 오버라이드 해야 하며 DispacthAction 클래스에서는 어느 action이 불리어져야 하는지를 관리 하기 위해 hidden request parameter를 관리 합니다.

DispacthAction 을 상속 받은 하위 클래스로 넘어오는 hidden parameter는 스트럿츠 설정 파일에 있는 <action> 요소의 parameter 라는 속성의 값이 넘어 오게 됩니다.

결국 DispacthAction 클래스를 상속 받은 하위 클래스는 execute() 메소드와 signature가 같은 많은 메소드(각각의 Action이 수행 해야 하는 메소드)를 정의해야 합니다.


=================================================================

1. Action 처리를 위한 DispatchAction클래스의 하위 클래스를 작성

public class UserRegistrationMultiAction extends DispatchAction {
...
}

2. 관계된 action을 구현 합니다.

public ActionForward processPage1( ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
...
}

public ActionForward processPage2(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
...
}


3. Action Mapping을 작성 합니다. 이때 paramter라는 속성에 “action” 이라고 줍니다. 이 action이라는 파라미터와 그 값(이건 JSP에서 넘어 옵니다)이 위에서 구현한 DispatchAction 클래스를 상속한 UserRegistrationMultiAction 클래스에 넘어 가게 됩니다.
즉 paramter인 action의 값이 수행 하고자 하는 action이 되는 것 입니다.

<action path="/userRegistrationMultiPage1"
type="strutsTutorial.UserRegistrationMultiAction"
name="userRegistrationForm"
attribute="user"
parameter="action"
input="/userRegistrationPage1.jsp">
...
</action>

<action path="/userRegistrationMultiPage2"
type="strutsTutorial.UserRegistrationMultiAction"
name="userRegistrationForm"
attribute="user"
parameter="action"
input="/userRegistrationPage2.jsp">
...
</action>

4. 이젠 JSP에서 action이라는 히든 텍스트를 만들어 Action이 일어 날 때 Action을 처리하는  클래스(UserRegistrationMultiAction ) 로 넘기게 됩니다.

userRegistrationPage1.jsp 에 포함된 히든 태그

<html:hidden property="action" value="processPage1"/>

userRegistrationPage2.jsp 에 포함된 히든 태그

<html:hidden property="action" value="processPage2"/> 

2013년 8월 6일 화요일

[오라클자바교육강좌]Easy Struts를 이용한 예제

Easy Struts를 이용한 예제 


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



1.Tomcat Project를 하나 만듭니다.

- File  --> New를 선택 후 “Project”를 선택 합니다.

-Java 옵션의 “Tomcat Project”를 선택 후 적절한 프로젝트 이름을 입력 합니다. 그런 다음 Next 하시구요…
(우린 EasyStruts라고 하자구요~)

-“Can update server.xml”을 check 확인 하시구요(이건 디폴트 입니다)

-“Finish” 합니다.

2.Easy Struts가 사용 가능하도록 합니다.

- “New” (좌측 상단에 위치) 버튼을 클릭 합니다.
-“Java” 옵션의 하위 옵션인 “Easy Struts”를 선택 합니다.

 

오른쪽에 보이는 것은 Easy Struts가 제공하는 10가지의 Function 입니다.

- Base package for generation : com.asprise.struts
-“Add Easy Struts support" 를 선택 후 Next 합니다.
-"Copy Struts binary" 와"Copy Struts TLD" 를 체크 합니다.



3.“Easy Action Associated with a Form”을 이용하여 작업 하기

좌 상단의 New 버튼을 누른 후 “Easy Struts Function View”를 띄웁니다. “Easy Action associated with a form" 을 선택하고 아래의 과정을 따라 합니다.

Use case, Forn Name 과 FornType을 변경 합니다. (이건 화면을 띄우면 기본적으로 값이 채워져 있습니다.)

Use case : owner
Form name : ownerForm
Form Type : com.asprise.form.OwnerForm

그런 다음 Form properties에서 “Add”를 클릭 합니다.
아래와 같이 속성을 줍니다.

이름 :: 타입 :: 초기치 :: JSP input type
----------------------------------------------
greet :: java.lang.String : Mr. : :: select
name :: java.lang.String : : :: text
email :: java.lang.String : : :: text
tel :: java.lang.String:: :: text
address :: java.lang.String : : :: text

위와 같이 속성을 주게되면 struts에서는 자동으로 setter와 getter를 생성 하게 되는 겁니다.

그런 다음 아래에서 처음 두 개의 체크 박스를 체크 하시구요 다음으로 넘어 갑니다.

       
4. 위에서 Next를 하게 되면 화면이 하나 나타나는데 기본적으로 input value는 “/form/owner.jsp”로 되어 있을 겁니다.
이 JSP 파일의 Location은 수작업 또는 Preference Setting을 통해 수정 하는 것이 가능 합니다. Preference Setting을 수정
하기 위해서는 “Window” 메뉴의 “Preference”로 이동 후 “Easy Struts” 옵션을 선택 합니다. 그런 다음 “Style” 탭을 선택하고
적절하게 “JSP form localtion”을 수정 합니다. 만약 공백으로 준다면 지금 나타나는 화면에서 /owner.jsp로 나타날 겁니다.
아래에 각 항목에 대한 설명이 있습니다.

Path. 서브밋 되는 Request의 Path이며 반드시 “/”로 시작 해야 합니다.
Type. ActionMapping,에서 사용되는 Action Class의 이름
Attribute. Request Scope나 Session Scope에서 폼빈에 대한 이름
Scope: 폼빈이 이 매핑을 통해 존재하게 될 Scope
input. : 에러 등이 나게 되면 Return하게 되는 context-relative path 
Validate : 이걸 체크하게 되면 ActionForm.validate() method 가 Call 됩니다.
Parameter. Action에게 넘겨 줄 파라미터 등을 기술

Path : /owner
Type : com.asprise.struts.OwnerAction
Attribute : ownerForm
Scope : Request
(Create JSP)Input : /owner.jsp

 
4.위화면에서 Next를 누르게 되면 Forward와 Exception을 설정 하게 되는데 그 내용은 아래와 같습니다.

Forward : Action이 포워드될 Servlet이나 JSP 자원에 대한 Context-relative 경로
Exception : 이 mapping과 관련된 Exception Handler

아래와 같이 Forward를 만듭니다.

Forward name : success
Forward path : /success.jsp

 

화면에서  Finish를 클릭하면 Struts 시스템에서는 자동으로 com.asprise.struts.form.OwnerForm.java and com.asprise.struts.action.OwnerAction.java 파일을 만들게 됩니다. (EasyStruts/WEB-INF/src/ 아래에 만듭니다) 이와 동시에 /owner.jsp 파일도 자동으로 만들어 집니다.  개발자는 적절히 이러한 파일들을 수정을 하면됩니다. 폼빈에서는 validate 메소드 등을 적절히 완성하면 됩니다.

5.이번에는 자동으로 만들어진 Action Class를 수정해 보도록 합니다.

아래의 소스가 자동으로 만들어진 Action Class 입니다. 여기에서 Interger라고 한 부분을 int로 수정 하시구요….

여러분들은 validate() 메소드를 추가해 주시면 됩니다. Validate가 추가된 소스는 다음에 있으니 참고 바랍니다.

Validate() 메소드가 추가된 OwnerForm.java 파일은 다음과 같습니다.

==================================================================

// Created by Xslt generator for Eclipse.
// XSL :  not found (java.io.FileNotFoundException:  (No such file or directory))
// Default XSL used : easystruts.jar$org.easystruts.xslgen.JavaClass.xsl

package com.asprise.struts.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

/**
 * OwnerForm.java created by EasyStruts - XsltGen.
 * http://easystruts.sf.net
 * created on 01-25-2005
 *
 * XDoclet definition:
 * @struts:form name="ownerForm"
 */
public class OwnerForm extends ActionForm {

        // --------------------------------------------------------- Instance Variables

        /** greet property */
        private String greet = "Mr.";

        /** address property */
        private String address;

        /** email property */
        private String email;

        /** tel property */
        private String tel;

        /** name property */
        private String name;

        // --------------------------------------------------------- Methods

        /**
        * Method validate
        * @param ActionMapping mapping
        * @param HttpServletRequest request
        * @return ActionErrors
        */
        public ActionErrors validate(
                ActionMapping mapping,
                HttpServletRequest request) {

                        ActionErrors errors = new ActionErrors();
                  if (greet == null || greet.trim().equals("")) {
                        errors.add("greet", new ActionError("error.greet"));
                  }
                  if (name == null || name.trim().equals("")) {
                        errors.add("name", new ActionError("error.name"));
                  }
                  if (address == null || address.trim().equals("")) {
                        errors.add("address", new ActionError("error.address"));
                  }
                  if (email == null || email.trim().equals("")) {
                        errors.add("email", new ActionError("error.noEmail"));
                  }
                  else if (email.indexOf("@")==-1) {
                        errors.add("email", new ActionError("error.wrongEmail"));
                  }
                  if (tel == null || tel.trim().equals("")) {
                        errors.add("tel", new ActionError("error.tel"));
                  }
                  return errors;
    }

       

        /**
        * Method reset
        * @param ActionMapping mapping
        * @param HttpServletRequest request
        */
        public void  reset(ActionMapping mapping, HttpServletRequest request) {
                greet = "Mr.";
                address = "";
                email = "";
                tel = "";
                name = "";

        }

        /**
        * Returns the greet.
        * @return String
        */
        public String getGreet() {
                return greet;
        }

        /**
        * Set the greet.
        * @param greet The greet to set
        */
        public void setGreet(String greet) {
                this.greet = greet;
        }

        /**
        * Returns the address.
        * @return String
        */
        public String getAddress() {
                return address;
        }

        /**
        * Set the address.
        * @param address The address to set
        */
        public void setAddress(String address) {
                this.address = address;
        }

        /**
        * Returns the email.
        * @return String
        */
        public String getEmail() {
                return email;
        }

        /**
        * Set the email.
        * @param email The email to set
        */
        public void setEmail(String email) {
                this.email = email;
        }

        /**
        * Returns the tel.
        * @return String
        */
        public String getTel() {
                return tel;
        }

        /**
        * Set the tel.
        * @param tel The tel to set
        */
        public void setTel(String tel) {
                this.tel = tel;
        }

        /**
        * Returns the name.
        * @return String
        */
        public String getName() {
                return name;
        }

        /**
        * Set the name.
        * @param name The name to set
        */
        public void setName(String name) {
                this.name = name;
        }

}

=================================================================================

6.이번에는 OwnerAction.java 에서 사용된 error key에 대한 부분을 ApplicationResources.properties 파일에 설정 합니다.

# Resources for parameter 'com.asprise.struts.ApplicationResources'
# Project P/EasyStruts

errors.header=<h4>Validation Error(s)</h4><ul>
errors.footer=</ul><hr>

error.greet=<li>Choose your greet
error.name=<li>Enter your name
error.address=<li>Enter your address
error.tel=<li>Enter your contact number
error.wrongEmail=<li>Correct your email
error.noEmail=<li>Enter your email


7.이번에는 OwnerAction.java 파일을 변경 합니다.

===========================================================================

// Created by Xslt generator for Eclipse.
// XSL :  not found (java.io.FileNotFoundException:  (No such file or directory))
// Default XSL used : easystruts.jar$org.easystruts.xslgen.JavaClass.xsl

package com.asprise.struts.action;

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

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

import com.asprise.struts.form.OwnerForm;

/**
 * OwnerAction.java created by EasyStruts - XsltGen.
 * http://easystruts.sf.net
 * created on 01-25-2005
 *
 * XDoclet definition:
 * @struts:action path="/owner" name="ownerForm" input="/owner.jsp" validate="true"
 * @struts:action-forward name="/success.jsp" path="/success.jsp"
 */
public class OwnerAction extends Action {


        /**
        * Method execute
        * @param ActionMapping mapping
        * @param ActionForm form
        * @param HttpServletRequest request
        * @param HttpServletResponse response
        * @return ActionForward
        * @throws Exception
        */
        public ActionForward execute(
                ActionMapping mapping,
                ActionForm form,
                HttpServletRequest request,
                HttpServletResponse response)
                throws Exception {
                        OwnerForm ownerForm = (OwnerForm) form;
     
                  String greet = ownerForm.getGreet();
                  String name = ownerForm.getName();
                  request.setAttribute("name", name);
                  request.setAttribute("greet", greet);

                  // Forward control to the specified success target

                  return (mapping.findForward("success"));

        }

}

====================================================================

8.이번에는 owner.jsp를 수정 합니다.

“greet”라는 속성을 만들 때 select 형태로 주었습니다, 이 부분에 적절한 옵션을 추가해 주시면 됩니다.

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html>
  <head>
      <meta
        name = "Generator"
        content = "Easy Struts Xslt generator for Eclipse (http://easystruts.sf.net).">
      <title>Struts Form for ownerForm</title>
  </head>
  <body>
      <html:form action="/owner">
        greet : <html:select property="greet">
                    <html:option value=""></html:option>
                    <html:option value="Mr.">Mr.</html:option>
                    <html:option value="Miss">Miss</html:option>
                    <html:option value="Mrs.">Mrs.</html:option>
                </html:select><html:errors property="greet"/>
    name : <html:text property="name"/><html:errors property="name"/></br>
    address : <html:text property="address"/><html:errors property="address"/></br>
    email : <html:text property="email"/><html:errors property="email"/></br>
    tel : <html:text property="tel"/><html:errors property="tel"/></br>
        <html:submit/><html:cancel/>
      </html:form>
    <html:errors />
  <body>
</html>


9.이번에는 success.jsp를 만듭니다. (EasyStruts 프로젝트에서 New , File 한 후 추가 합니다)

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

<logic:present name="name" scope="request">
Thank you,
  <logic:present name="greet" scope="request">
      <bean:write name="greet" scope="request"/>
  </logic:present>
  <bean:write name="name" scope="request"/>
</logic:present>


10.이번에는 struts-config.xml 파일을 열어 설정을 확인합니다. UI형태를 지원하므로 편리하게 struts-config.xml을 설정하는 것이 가능 합니다

Struts-config.xml을 클릭하면 다음과 같은 UI를 가진 화면이 나타나는데 여기서 기존 방법보다 좀 더 편리하게 struts의 설정을 할 수가 있습니다.

 

11.실행 결과 확인 

[오라클자바닷넷커뮤니티, ORACLEJAVA]환영인사(Welcome)를 struts의 Action으로 설정하기 , 스트럿츠 교육

환영인사(Welcome)를 struts의 Action으로 설정하기 


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




web.xml에서 welcome-file-list는 사용자가 URI의 일부만 입력을 했을 때 기본적으로 보여 줄 자원을 정하기 위해 사용 합니다.

예를들어 다음과 같이 설정 했다면…(Login 이라는 웹 애플리케이션을 만들었다고 가정)

<welcome-file-list>
            <welcome-file>main.jsp</welcome-file>
    </welcome-file-list>

브라우저에서 http://localhost/Login/ 이라고 입력하면 main.jsp 가 로딩 된다는 이야기 입니다. 즉 http://localhost/Login/main.jsp 와 같은 기능을 수행 하는 것 입니다.

몰론 welcome-file-list에 여러 개의 welcome-file을 선언 하는 것 역시 가능 합니다.

이렇게 하면 컨테이너는 사용자가 요청한 URI와 일치하는 환영파일을 찾을 때 까지(기술된 순서대로) 찾는 과정을 반복 합니다.

Welcome-file의 속성 값은 ‘/’로 시작하거나 뒤쪽에 ‘/’이 붙을 수 없으니 주의 하세요~

----------------------------------------------------------
환영 파일 내에서 struts의 Action을 사용 하기
----------------------------------------------------------

컨테이너는 welcome-file-list 요소 내에 서블릿 매핑을 지원하지 않으므로 struts의 Action을 사용하기 위해 welcome-file 요소를 직접 만질 수는 없습니다.

그대신 다음과 같은 방법을 이용하면 가능 합니다.

1.        web.xml에서 welcome-file을 설정 합니다.

<welcome-file-list>
            <welcome-file>welcome.jsp</welcome-file>
    </welcome-file-list>

2.        welcome.jsp를 만듭니다.

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
        <body>
                <logic:forward name="welcome"/>
        </body>
</html>

3.        welcome.jsp에서 사용한 global-forward를 만듭니다.(struts-config.xml)

<global-forwards>
<forward name="welcome" path="welcome.do"/>
    </global-forwards>

4.        global-forward에서 정의 한 Action에 대한 매핑을 합니다.(struts-config.xml)

<action-mappings>                   
        <!-- welcome Action정의 -->
        <action
                path="/welcome"
                type="login2.Welcome"
                validate="false"
        />           
    </action-mappings>

5.        테스트를 위해 간단한 Action 파일을 만듭니다.

package login2;

import org.apache.struts.action.Action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import login2.Constants;

public class Welcome extends Action {       
       
        public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
                               
                //성공적으로 처리 되었음을 알림, main.jsp로 보내버림...
                //결국 환영인사를 하게 되면 main.jsp가 불리는 것입니다.
                return (mapping.findForward(Constants.SUCCESS));
               
        }
}


결과를 확인 하기 위해 http://localhost/Login/ 이라고 입력 하면 main.jsp가 실행 됩니다. 혹시 main.jsp를 만들지 않으신 분은 이전 강좌에 있는 main.jsp를 이용하세요~

2013년 8월 3일 토요일

실습과 예제를 통해 Spring Framework3.2를 배우는 과정, (개발과정)Ajax,jQuery,MyBatis&Spring3.X개발자과정(평일야간)

실습과 예제를 통해 Spring Framework3.2를 배우는 과정, (개발과정)Ajax,jQuery,MyBatis&Spring3.X개발자과정(평일야간)


강좌명 (개발과정)Ajax,jQuery,MyBatis&Spring3.X개발자과정(평일야간)
교재 자체교재 or PDF 무료 제공
강좌 일정 08월09일(금) ~ 09월04일(수)((평일야간) 19:00~22:00, 14일) 총 42시간
강의 장소 [B강의장]구로디지털단지역2번 출구-> 미니스톱끼고 우회전 -> 100m 직진 후 골목길 끝에서 이마트방향 우회전 -> 50m 직진 후 우체국 옆골목으로 길건너서 직진 -> 150미터 직진 후 JnK 타워에서 우회전 -> 50미터 직진 후 우측에 코오롱빌란트2차 803호 (구로구 구로3동 222-8 코오롱디지털타워 빌란트2차 803호)
[약도보기]
수강절차 - 강좌내용 확인
- 전화 또는 홈페이지(www.onjprogramming.co.kr)를 통한 수강지원 및 수강료 결제(무통장입금, 온라인 카드결제)
- 고용보험 가입자(재직자)인 경우 고용보험환급 관련 서류 제출
- 수강전 : 커리큘럼 및 장소에 대해 다시 한번 공지
- 교육 전 설문 작성(간단한 개발 경력, 수강 목적, 강좌진행방식 등)
- 강좌 수강
- 수강후 : 교육 후 설문 작성
수강료 - 680,000원
[고용주환급]대기업:20만원 전후,중소기업:270,000원
[개인수강지원(개인환급)]정규직 504,000 ,비정규직:전액환급
대기업(상시근로자 300인 이상 대기업)은 개인환급 불가합니다.

재직자 내일배움카드 : 정부지원금 80% 자기부담금 20%
(구 능력개발카드 명칭이 내일배움카드로 변경 / 연간 총한도 200만원)
수강료
입금안내
- 온/오프라인 카드결제, 계좌이체(수강안내->입금안내 참조)
문의사항 02-851-4790 번으로 연락 부탁 드립니다.
교육개요 (스프링 개발자 과정은 오엔제이프로그래밍 교육 센터 입니다!)

본 과정은 수료 후 자바기반 환경에서 스프링 웹개발이 가능하도록 하는 속성 스프링 개발자 과정 입니다. Ajax, jQuery를 기본으로, 스프링 개발을 위한 최소 구성요소(IoC, AOP, JDBC, MVC)를 학습하고 MyBatis, Hibernate를 학습 후 활용성이 높은 게시판 예제, XPlatform&Spring을 단계별로 학습하면서 이전에 배운 요소기술들을 하나씩 주입시켜 개발해 나가는 개발자 실습 과정 입니다. 게시판 버전을 1차, 2차로 나누어서 1차에서는 Spring DI를 중심으로 Spring JDBC, MVC요소를 결합시켜 작성하며 2차에서는 로그인 기능을 추가하고 Spring 로깅 AOP기능, MyBatis와의 결합을 구현해 나감으로써 스프링 기능 및 부가기능에 대한 응용 학습을 하게 되며, 마지막으로 최근 UI 개발의 필수 구성요소인 XPlatform과 Spring의 연동에 대해서도 학습을 하게 되어 어떠한 환경에서도 개발가능한 자바 웹 개발자를 만들어 드립니다.

본 과정을 이수 후 현장에서 즉시 개발가능한 스프링 개발자가 되는데 손색이 없도록 진행 예정입니다. (단 수강생 스스로도 열심히 학습해 주셔야 합니다)

[특징]
- 실습에 근거한 이론 취득
- 이론/실습 과제로 인한 개발력 UP
교육목표 - Ajax, jQuery 활용 능력
- Spring IoC, AOP에 대한 이해
- Spring JDBC, MVC에 대한 이해
- 스프링 웹 개발에 대한 이해
- 스프링 개발력 UP
교육대상 - Spring을 경험하지 못한 자바 개발자
- Spring을 배우고 싶은 자바 개발자
선수학습 - JAVA, JSP
 

Ajax Programming - Ajax란, 장점
- Ajax 사용예제 분석
- XMLHttpRequest 객체, 메소드, 속성
- Cross-Browsing
- innerHTML, CSV
- JavaFramework & Ajax
- Ajax 동적 XML 로딩
- Form 입력값 검증
- Auto refresh
DOM - DOM 개요
- JAVA for DOM
- Dynamic DOM 다루기
jQuery Programming - jQuery 개요, 다운로드, 설치
- $(document).ready() 메소드
- Selector
$(“*"), $("#ID"), $("DIV"),$(".classname"), $("p > a"),
$(“elementname.classname")
속성 선택자, 속성(attr)
입력양식 필터 선택자
위치와 관련된 필터 선택자
- jQuery 배열(Array) 관리
- jQuery 객체 확장
기본 필터링 메소드
특정 위치 문서 객체 선택
문서 객체에서 특정 태그를 선택하는 방법
innerHTML 속성과 관련된 jQuery 메서드
문서객체 생성 , 제거
- jQuery Event
이벤트 관련 메소드(발생, 제거)
이벤트 자동 발생
마우스/키보드/윈도우/입력양식 이벤트
- jQuery 기본효과, 사용자지정효과
- jQuery, Ajax
관련 메소드
XML 문서 다루기
입력양식 전송
Spring & ORM Basic - Spring의 도입배경 및 아키텍처에 대해 이해한다.
(자바빈의 태동부터 EJB, 그리고 현재까지)
- Eclipse, Maven, STS 플러그인에 대한 이해
(개발환경 설정의 이해)
- Spring IoC(DI, DL)
- Spring AOP
- AspectJ Annotation
- Spring Web MVC, JDBC
- Spring Controller에 대한 이해
- ORM에 대한 이해
Hibernate에 대한 이해
MyBatis에 대한 이해
Spring Project 스프링 게시판 작성하기(Step by Step으로 이해가 쏙쏙)

- 1차버전 : 기본 게시판 기능(리스트보기, 답글, 커멘트, 게시물 입력, 수정) + 게시물 내용 미리보기(Ajax연동)
기술요소 : Ajax, Spring MVC, Spring JDBC, Spring DI

[절차]
게시물 보기 화면부터 구현 후 전체 기능 추가
Controller 구현
Model 영역 구현
DAO 구현
Service 구현
Ajax Manager 구현
View 구현
web.xml, 스프링 설정 파일 작성
TEST, 시연


- 2차버전 : 기본 게시판 기능(리스트보기, 답글, 커멘트, 게시물 입력, 수정) + 로그인 기능(인증한 경우에만 글읽기, 입력,수정,삭제 가능) + 파일 업로드 + DB쪽 Spring AOP를 이용한 로깅 + SQL문을 MyBatis를 이용하여 별도 XML로 관리

기술요소 : Ajax, Spring MVC, Spring JDBC, Spring DI, Spring AOP, MyBatis 결합

[절차]
스프링 설정 파일 수정
Controller 수정
Model 영역 수정
DAO 수정
Service 수정
View 수정
TEST, 시연
 

[oracle hint]ACCESS 경로를 변경하는 힌트(INDEX) , 오라클,자바,교육,강좌

ACCESS 경로를 변경하는 힌트(INDEX)


구로디지털 오엔제이프로그래밍실무교육센터


이 힌트는 생긴 그대로 테이블에 있는 인덱스를 사용할 수 있도록 해주는 구문 입니다. 비트맵 인덱스에 대해서는 사용이 가능하지만 INDEX_COMBINE 힌트를 쓰는 것이 맞구요

사용법은 다음과 같습니다.

[형식]

[]

SQL> select index_name, table_name from user_indexes
  2  where table_name = 'MYEMP1';

INDEX_NAME                     TABLE_NAME
------------------------------ ------------------------------
IDX_MYEMP1_DEPTNO              MYEMP1
SYS_C0011302                   MYEMP1


인덱스가 있는 경우 where 절에 인덱스 컬럼이 보이면 오라클이 알아서 인덱스를 경유하여 데이터를 추출 한다.

SQL> select count(*) from myemp1
  2  where deptno = 2;

  COUNT(*)
----------
   2000000

   : 00:00:00.75
--------------------------------------------------------------------|   0 | SELECT STATEMENT  |                   |     1 |     2 |  3867   (1)|
|   1 |  SORT AGGREGATE   |                   |     1 |     2 |            |
|*  2 |   INDEX RANGE SCAN| IDX_MYEMP1_DEPTNO |  2000K|  3906K|  3867  


이번에는 인덱스를 숨겨보자. 숨긴 후 실행하면 9초 정도 걸린다.

SQL> alter index IDX_MYEMP1_DEPTNO invisible;

인덱스가 변경되었습니다.

SQL> select count(*) from myemp1
  2  where deptno = 2;

  COUNT(*)
----------
   2000000

   : 00:00:09.93

Execution Plan
----------------------------------------------------------
|   0 | SELECT STATEMENT   |        |     1 |     2 | 16966   (1)| 00:03:24 |
|   1 |  SORT AGGREGATE    |        |     1 |     2 |            |          |
|*  2 |   TABLE ACCESS FULL| MYEMP1 |  2000K|  3906K| 16966   (1)|


다시 인덱스 보이도록 설정.

SQL> alter index IDX_MYEMP1_DEPTNO visible;

인덱스가 변경되었습니다.


Index 힌트만 사용한다면 오라클은 적절한 인덱스를 알아서 찾아 경유한다.
SQL>  select /*+ index */
  2          count(*)
  3    from myemp1
  4   where deptno = 2;

  COUNT(*)
----------
   2000000

   : 00:00:00.11

Execution Plan
----------------------------------------------------------
|   0 | SELECT STATEMENT  |                   |     1 |     2 |  3867   (1)|
|   1 |  SORT AGGREGATE   |                   |     1 |     2 |            |
|*  2 |   INDEX RANGE SCAN| IDX_MYEMP1_DEPTNO |  2000K|  3906K|  3867  


만약 테이블 명 다음에 인덱스 명을 여러 개 나열한다면 오라클 서버의 Optimizer는 적정한 인덱스를 찾아 실행 계획을 수립합니다.



2013년 8월 2일 금요일

JAVA AWT TabedPane 예제 - Tab

//일반 응용 프로그램에서의 Tab control을 자바에서 만들어 보는 겁니다.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

class TabbedPane {
        public static void main(String[] args) {
                JTabbedPane tp = new JTabbedPane();
                String tabs[] = {"첫번째탭","두번째탭","세번째탭"};
               
                for(int i=0;i<tabs.length; i++) {
                        JLabel label = new JLabel(i+"번째 컴포넌트",JLabel.CENTER);
                        label.setBackground(SystemColor.control);
                        label.setOpaque(true);
                        tp.addTab(tabs[i], null, null, tabs[i]+"에 대한 툴팁");                       
                }

                tp.setSelectedIndex(0);

                JFrame f = new JFrame();
                f.getContentPane().add(tp, "Center");
                f.setSize(400, 500);
                f.setVisible(true);
        }
}

간단한 JAVA Swing Button 예제

import java.awt.*;
import javax.swing.*;

public class SwingButtonTest {
        public void Test() {
        JFrame f = new JFrame("Swing 테스트"); //frame을 생성하고,
        JPanel p = new JPanel();              // panel을 생성합니다.
        JButton b = new JButton("예");        //그리고 button을...
        p.add(b);                                      // button을 panel에 추가합니다
        b.setToolTipText("이건 튤팁입니다.");
        f.getContentPane().add(p);
        f.pack();
        f.setVisible(true);
        }
public static void main(String args[]) {
        new SwingButtonTest().Test();
}
}

JAVA BufferedReader/BufferedWriter – 예제

import java.io.*;
public class BufferedWriterSample {
public static void main(String[] args) throws Exception {
File imsiFile = File.createTempFile("imsi",".tmp");
imsiFile.deleteOnExit();
FileWriter fw = new FileWriter(imsiFile);
BufferedWriter bw = new BufferedWriter(fw);
for(int i=0; i<args.length; i++) {
bw.write(args[i]);
bw.newLine();    }
bw.close();
System.out.println(imsiFile+" 에 썼습니다...");
FileReader fr = new FileReader(imsiFile);
BufferedReader br = new BufferedReader(fr);
System.out.println(imsiFile+"에서 읽습니다...");
for(String readLine;(readLine=br.readLine())!=null;) {
System.out.println(readLine);
}
br.close();
}
}

2013년 8월 1일 목요일

oracle 11g : 오라클11g : 읽기전용 테이블 , readonly table

Oracle 11g : 읽기 전용 테이블

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


이전 버전의 오라클에서는 테이블은 다른 사용자에게 SELECT 오브젝트 권한을 주는 경우에만 읽기전용이 가능했고 해당 Owner는 테이블에 Read/Write 둘 다 가능했으며 읽기전용으로 만드는 것은 불가능 했다.

오라클 11g에서부터 alter table 테이블명 read only 명령으로 읽기전용으로 변경이 가능하다,

[형식]
ALTER TABLE table_name READ ONLY;
ALTER TABLE table_name READ WRITE;


SQL>reate table readtest
as
select rownum id, '홍길동'||rownum name from dual;

SQL>select * from readtest;

SQL> alter table readtest read only;

테이블이 변경되었습니다.

SQL> insert into readtest values (2, '김길동');
insert into readtest values (2, '김길동')
            *
1행에 오류:
ORA-12081: "SCOTT"."READTEST" 테이블에 작업을 갱신하는 것이 허용되지 않습니다


SQL> delete from readtest;
delete from readtest
            *
1행에 오류:
ORA-12081: "SCOTT"."READTEST" 테이블에 작업을 갱신하는 것이 허용되지 않습니다


SQL> truncate table readtest;
truncate table readtest
               *
1행에 오류:
ORA-12081: "SCOTT"."READTEST" 테이블에 작업을 갱신하는 것이 허용되지 않습니다


SQL> alter table readtest read write;

테이블이 변경되었습니다.

SQL> truncate table readtest;

테이블이 잘렸습니다.

java.util.HashMap 클래스 – 예제

import java.util.*; 
public class HashMapTest { 
  public static void main(String args[]) { 
    Map map = new HashMap(); 
    Integer hana = new Integer(1); 
    for (int i=0, n = args.length; i<n; i++) { 
      String key = args[i]; 
      Integer freq = (Integer)map.get(key); 
      if (freq == null) { 
        freq = hana; 
      } 
    else { 
        int value = freq.intValue(); 
        freq = new Integer(value + 1); 
      } 
      map.put(key, freq); 
    } 
    System.out.println(map); 
    Map sortedMap = new TreeMap(map); 
    System.out.println(sortedMap); 
  } 


Java Collection Framework (자바 컬렉션 프레임워크)

java2에 새롭게 추가된 자료구조 클래스들의 모임
 Collection, Map, Set, List, StoredMap, StoredSet등의 6개의 인터페이스와 이동을 구성하는 클래스들로 Java Collection FrameWork을 구성한다.
 대량의 Data를 다룰때 일관된 I/F를 제공
 6개의 인터페이스와 10개의 클래스로 구성
  java.util.Collection : 순서/중복에 관계없는 객체들의 단순한 모임
  java.util.Set : 중복되지 않는 수학적인 의미의 객체모임(순서는없다), Collection을 상속
  java.util.List : 순차적 나열에 의한 순서 지정이 가능한 구조. Collection을 상속
  java.util.Map : Key와 Key에 대한 Value로 이루어진 구조
  java.util.SortedSet : 값들이 정렬된 Set, Set을 상속
  java.util.SortedMap : Key가 정열된 Map

(instance member, field, method)클래스멤버 - 인스턴스변수(필드)/인스턴스 메소드

인스턴스 필드(변수)
 static으로 선언되지 않은 모든 변수(필드)는 인스턴스필드
  public double r;
 클래스의 인스턴스와 연관, 생성된 모든 객체는 자신만의 
  복사본을 가진다.
 클래스 내부에서 이름하나만으로 지칭된다.
  public double r;
  public double area() {
      return PI * r * r;
  }
 클래스 외부에서는 클래스를 인스턴스화한 객체.변수명 형
  태로 사용한다. 인스턴스 필드(변수)의 값은 한객체를 다른
  객체와 구분한다.
  Circle c = new Circle();    c.r=2.0;
  Circle c1 = new Circle();  c1.r=5.0;


 인스턴스 메소드
 static으로 선언되지 않은 모든 메소드
  public double area();
 클래스의 인스턴스(객체)와 연관된다.
 static이든, 아니든 모든 클래스멤버 사용가능
 클래스 외부에서는 클래스를 인스턴스화한 객체.메소드명 형태로 사용한다. 
  인스턴스 필드(변수)의 값은 한객체를 다른객체와 구분한다.
  Circle c = new Circle();    c.r=2.0;
  double a = c.area(); //객체 c에는 이미 r 값이 setting됨

   


- 매개변수가 없는 c.area()가 어떤 데이터에 대해 수행될건지 어떻게 아는가? 사실 모든 인스턴스 메소드는 암시적인 this 매개변수를 가지고 실행된다. This는 메소드가 호출되는 객체(Circle)이다. This 매개변수는 항상 필요하지는 않기에 메소드 시그네쳐에 보이지 않는다.
메소드가 그자신의 필드(변수)등을 접근한다는것을 명시적으로 this를 이용하여 지정할수 있다.
  public double area() {
return Circle.PI * this.r * this.r;
  }


클래스 멤버예제(Circle1.java)
class Circle {
        //클래스 변수(필드), 상수정의
public static final double PI = 3.141592; 
//클래스 메소드
public static double radianToDegree(double rads) {
return rads * 180 / PI;
}
//인스턴스 필드(변수), 원의반지름
public double r;
//인스턴스 메소드, 원의 면적계산
public double area() {  return PI * r * r; }
//인스턴스 메소드,원주계산
public double circumference() {  return 2 * PI * r; } 
}


public class Circle1 {
  public static void main(String[] args) {
Circle c = new Circle();
c.r = 4.0;
//인스턴스 메소드 이용
System.out.println("반지름이 4인 원의 면적은 : " + c.area());
System.out.println("반지름이 4인 원의 원주는 : " + c.circumference());
        //클래스 메소드및 클래스변수(필드) 이용
System.out.println("2 * PI의 Degree는 : " +
                    Circle.radianToDegree(2.0*Circle.PI) + "도 입니다.");
}
}