레이블이 자바스레드인 게시물을 표시합니다. 모든 게시물 표시
레이블이 자바스레드인 게시물을 표시합니다. 모든 게시물 표시

2013년 10월 22일 화요일

[JSP강좌]JSP 페이지 지시자 지시자는 JSP가 JSP 콘테이너에게

[JSP강좌]JSP 페이지 지시자 

지시자는 JSP가 JSP 콘테이너에게 어떠한 메시지를 보내기 위한 것
 클래스선언, 구현할 메소드, Content-Type등의 값을 설정
 클라이언트에 어떠한 출력도 내보내지 않는다.
 모든 지시자들은 JSP 파일 전체에 대한 범위를 가진다.
 지시자는 태그 안에서 @로 시작한다.
 page, include, taglib 지시자 등이 있다.

[page 지시자]
language :  <%@ page language=“java” %> 사용언어 지정 기본값은 java

extends :  생성될 클래스가 확장해야하는 슈퍼클래스의 완전한 이름을 지정, 상속할 Class지정, 생략시 콘테이너가 자동으로 HttpJspPage 인터페이스를 구현한 클래스를 지정하므로 보통 사용안함, 톰캣의 경우 변환된 .java File을 확인하면 HttpJspPage 를 구현한HttpJspBAse를 상속함
<%@ page extends=“확장할 클래스명” %>

import : 일반적인 자바클래스의 import, 여러개인 경우 ,로 구분 ,기본적으로 임포트 되는것 : java.lang.*, javax.servlet.*, javax.servlet.http.*, javax.servlet.jsp.*
session : 페이지가 하나의 HTTP 세션에 참여하는지의 여부, session은 서블릿의 javax.servlet.http.HttpSession 객체와 대응되는 것으로 JSP컨테이너에서는 session이라는 별명으로 제공, 세션을 사용할려면 반드시 “true”, 기본값 true

buffer : Client 출력 스트림에 쓰일 버퍼링 방식을 지정 JSP에서의 출력버퍼의 크기를 지정, ‘none’으로 설정되면 JspWriter 객체를 이용한 출력시 버퍼를 이용하지 않고 JSP에서 출력되는 내용은 즉시 Client에 응답한다.
<%@ page buffer=“8kb” %>
autoFlush : “true”인 경우 출력버퍼가 꽉 차면 자동적으로 버퍼가 비워짐, “false”인 경우 overflow발생(예외)
<%@ page autoFlash=“true” %>
Buffer 속성을 “none” 으로 한 경우 autoFlash=“false”로 설정 할 수 없다.
isThreadSafe : “false”인 경우 JSP처리기는 요청들을 도착한 순서대로 Queue에 쌓은후 순서대로 요청들을 하나씩 처리, 이는 서블릿에서 SingleThreadModel을 구현 할 때와 같은 방식이다. 즉 true로 설정되면 _jspService 메소드가 Synchronized를 이용하여 동기화 된다. 즉 HTTP 요청을 처리하기 위한 스레드가 종료 한 후에 다른 스레드가 수행된다.

info : 페이지의 Servlet.getServletInfo() 메소드의 구현으로 얻을수 있는 정보문자열을 정의, 내용이나 길이의 제한은 없으며 제작자 이름, 버전, 저작권 정보등이 포함된다.


isErrorPage : 현재 JSP Page가 다른 JSP Page의 에러페이지인지의 여부를 결정 “true”이면 이 페이지는 에러 Page의 역할을 하며 Exception 개체를 제어 가능 하다. 이 Exception 개체는 java.lang.Throwable 클래스의 인스턴스 이다. 
errorPage : 점검(catch)되지 않은 RunTime 에러가 발생시 호출될 에러 page의 URL을 기술한다. 에러페이지와 에러를 발생시킨 페이지는 같은 서버에 존재해야 한다. 출력 스트림이 버퍼로 설정되어 출력이 Client로 안 갔다면 error page의 호출이 가능하나, 출력이 이미 Client로 전송되었다면 에러페이지의 호출은 불가능하다. 기본적으로 버퍼는 8kb이므로 8kb이하로 출력을 했다면 에러페이지의 호출은 가능. 결국 에러페이지는 클라이언트로 아무것도 넘어가지 않은 경우 Exception이 발생했을때 가능<%@ page errorPage=“../error.jsp %> 

contentType  : JSP Page의 MIME Type을 설정<%@ page contentType= “text/html; charset=euc-kr” %> 

pageEncoding : JSP Page를 위한 문자 인코딩을 지정
<%@ page pageEncoding=“euc-kr” %> 




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


[기타 다른 강좌는 아래 해당 카테고리를 클릭해주세요]


2013년 8월 8일 목요일

[오라클자바커뮤니티, 자바교육]스트럿츠에서의 파일 업로드 Example 입니다.(struts file upload)

스트럿츠에서의 파일 업로드 Example 입니다.(struts file upload)


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



스트럿츠의 폼에서 File을 인식하기 못하기 때문에

org.apache.struts.upload.FormFile 클래스를 사용하여야 합니다.

제가 작업하던중 스트럿츠의 파일 업로드에 사용한 소스입니다.

궁금하신 점은 답글 남겨주시거나 메일 보내주시면 대답해 드리겠습니다. ^^


///////////////// image_insert.jsp/////////////////////////////////////


<%@ page contentType="text/html;charset=EUC-KR" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>


<html:form action="/ImageInsert" enctype="multipart/form-data" >
  <table>
    <TR bgcolor=FFFFFF>
                      <TD height="30" bgcolor='#E6EBF0'>* 이미지(대)</TD>
                      <TD colspan="2">
                        <html:file property="image_path[0]" size="30"/>       
                      </TD>
                    </TR>
                    <TR bgcolor=FFFFFF>
                      <TD height="30" bgcolor='#E6EBF0'>* 이미지(중)</TD>
                      <TD colspan="2">
                        <html:file property="image_path[1]" size="30"/>               
                      </TD>
                    </TR>
                    <TR bgcolor=FFFFFF>
                      <TD height="30" bgcolor='#E6EBF0'>* 이미지(소)</TD>
                      <TD colspan="2">
                        <html:file property="image_path[2]" size="30"/>               
                      </TD>
                    </TR>
  </table>
</form:html>

///////////////////struts-config.xml///////////////////////////////////

<form-beans>
  <form-bean name="imageinsertForm" type="ImageInsertForm"/>
</form-beans>

<action-mappings>
  <action         
                path="/ImageInsert"
                type="ImageInsertAction"
            name="imageinsertForm"                       
            validate="false"
            input="/image_insert.jsp"
        />

///////////////////ImageInsertForm.java///////////////////////////////

import org.apache.struts.upload.FormFile;
public class ImageInsertForm  extends ActionForm
{

    private FormFile[] image_path = new FormFile[3];
   
    public FormFile[] getImage_path() {
                return image_path;
        }
        /**
        * @param image_path The image_path to set.
        */
        public void setImage_path(FormFile[] image_path) {
                this.image_path = image_path;
        }
}       

////////////////////ImageInsertAction.java/////////////////////////////

import org.apache.struts.upload.FormFile;

public class GoodsInsertAction extends BaseAction
{
        public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)
        {
                  FormFile image_path[] = ((ImageInsertForm)form).getImage_path();
                  ImageDAO imageDAO = new ImageDAO();
                  imageDAO.imageInsert( image_path );
                 
                  return (mapping.findForward( "image_insert_success" ));
        }
}

/////////////////////////// GoodsFile.java////////////////////////////
/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class GoodsFile
{
        private String fileName = null;
        private String tempFileName = null;

        public String getFileName() {
                return fileName;
        }
       
       
        public String getTempFileName() {
                return tempFileName;
        }
       


        public void setFileName(String fileName) {
                this.fileName = fileName;
        }



        public void setTempFileName(String tempFileName) {
                this.tempFileName = tempFileName;
        }
}

////////////////////ImageDAO.java///////////////////////////////////

import org.apache.struts.upload.FormFile;

public class ImageDAO
{

    public  void imageInsert( FormFile[] image_path )
    {
        Connection con=null;
        PreparedStatement pstmt=null;
        ResultSet rs = null;
        String sql = "";
        GoodsFile goodsFile[] = new GoodsFile[ 3 ];
        String path = "D:\\upload";

        try
        {
                for( int i = 0 ; i < 3 ; i++ )
                {
                        goodsFile[ i ] = FileUploadUtil.doFileUpload( image_path[ i ] , gcode , Integer.toString( ( i + 1 ) ) );
                }

                con = DriverManager.getConnection(ConnectionPoolManager.URL_PREFIX+"oraclejava");
               
                sql = "INSERT INTO IMAGES( IMAGE_PATH1 , IMAGE_PATH2 , IMAGE_PATH3 ) VALUES(  :IMAGE_PATH1 , :IMAGE_PATH2 , :IMAGE_PATH3 );
                pstmt = con.prepareStatement(sql);
                pstmt.setString( 1 , goodsFile[ 1 ].getFileName()  );
                    pstmt.setString( 2 , goodsFile[ 2 ].getFileName() );
                    pstmt.setString( 3 , goodsFile[ 3 ].getFileName() );
                pstmt.executeUpdate();
 
                }
        catch( Exception e )
        {
                return null;
        }
        finally
        {
                    try
                {

                    if ( rs != null )
                        rs.close();
                    if ( pstmt != null )
                        pstmt.close();
                    if ( con != null )
                        con.close();
                }
                catch ( Exception ignore )
                {
               
        }         
    }
}


///////////////////////FileUploadUtil.java/////////////////////////////
ublic class FileUploadUtil
{
        public static GoodsFile doFileUpload(FormFile fileList  )
        throws FileNotFoundException, IOException
        {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                InputStream stream = fileList.getInputStream();

                               

                //파일을 업로드할 절대 경로를 지정해야 한다.
                String path = "D:\\upload\";
                OutputStream bos = new FileOutputStream( path + fileList.getFileName()  );
                int bytesRead = 0;
                byte[] buffer = new byte[8192];
                while ((bytesRead = stream.read(buffer, 0, 8192)) != -1)
                {
                        bos.write(buffer, 0, bytesRead);
                }
                bos.close();
                stream.close();

        GoodsFile boardFile = new GoodsFile();
        boardFile.setFileName(fileList.getFileName());
        boardFile.setTempFileName(fileList.getFileName() );

        return boardFile;
}
[출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecStruts&wr_id=64

[오라클자바닷넷커뮤니티교육, ORACLEJAVANEW.KR]간단한 Validator Framework 예제

간단한 Validator Framework 예제


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




이번 예제는 이전의 강좌인 "Struts를 이용한 간단한 로그인 예제”의 기능에 Validation 기능을 간단히 추가해 보도록 하겠습니다. "Struts를 이용한 간단한 로그인 예제” 강좌에 나와 있는 내용에 대해서는 이번 강좌에서는 언급하지 않고 Validation을 위해 추가되는 코드 부분만 기술토록 하겠습니다.

혹시 "Struts를 이용한 간단한 로그인 예제”부분이 궁금하신 분들은 해당 강좌를 참고 하시기 바랍니다.

[검증 조건]
사용자 ID는 필수입력, 5~10자를 넘을 수 없으며, 시작은 알파벳으로
비밀번호는 필수입력이며 10자를 넘을 수 없음, 시작은 알파벳, 숫자로…

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

1.Struts 설정 파일에 Validator Plug-in을 Add 합니다. (메시지 리소스 설정 다음에 추가 합니다.)

<plug-in
className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

----------------------------------------------------------------
2.Blank Struts Web Application에서 validator-rules.xml 과 validation.xml 파일을 복사 합니다. (struts 배포판안에 struts-blank.war 파일이 포함되어 있으며 이 파일을 TOMCAT_HOME/webapps 아래에 둔 후 톰캣을 실행하면 저절로 압축이 풀리며 /WEB-INF/ 아래에 보시면 두개의 파일이 있습니다.)
-----------------------------------------------------------------

참고로 파일의 내용은 다음과 같습니다.

-------------------------------
validation.xml
-------------------------------

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
          "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">

<form-validation>

<!--
    This is a minimal Validator form file with a couple of examples.
-->

    <global>

        <!-- An example global constant
        <constant>
            <constant-name>postalCode</constant-name>
            <constant-value>^\d{5}\d*$</constant-value>
        </constant>
        end example-->

    </global>

    <formset>

        <!-- An example form -->
        <form name="logonForm">
            <field
                property="username"
                depends="required">
                    <arg key="logonForm.username"/>
            </field>
            <field
                property="password"
                depends="required,mask">
                    <arg key="logonForm.password"/>
                    <var>
                        <var-name>mask</var-name>
                        <var-value>^[0-9a-zA-Z]*$</var-value>
                    </var>
            </field>
        </form>

    </formset>

    <!-- An example formset for another locale -->
    <formset language="fr">

        <constant>
            <constant-name>postalCode</constant-name>
            <constant-value>^[0-9a-zA-Z]*$</constant-value>
        </constant>

        <!-- An example form -->
        <form name="logonForm">
            <field
                property="username"
                depends="required">
                    <arg key="logonForm.username"/>
            </field>
            <field
                property="password"
                depends="required,mask">
                    <arg key="logonForm.password"/>
                    <var>
                        <var-name>mask</var-name>
                        <var-value>^[0-9a-zA-Z]*$</var-value>
                    </var>
            </field>
        </form>

  </formset>

</form-validation>




-------------------------------
validator-rule.xml
-------------------------------

<!DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
          "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<!--
  $Id: validator-rules.xml 54932 2004-10-16 17:02:16Z germuska $

  This file contains the default Struts Validator pluggable validator
  definitions.  It should be placed somewhere under /WEB-INF and
  referenced in the struts-config.xml under the plug-in element
  for the ValidatorPlugIn.

      <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
                                                  /WEB-INF/validation.xml"/>
      </plug-in>

  These are the default error messages associated with
  each validator defined in this file.  They should be
  added to your projects ApplicationResources.properties
  file or you can associate new ones by modifying the
  pluggable validators msg attributes in this file.

  # Struts Validator Error Messages
  errors.required={0} is required.
  errors.minlength={0} can not be less than {1} characters.
  errors.maxlength={0} can not be greater than {1} characters.
  errors.invalid={0} is invalid.

  errors.byte={0} must be a byte.
  errors.short={0} must be a short.
  errors.integer={0} must be an integer.
  errors.long={0} must be a long.
  errors.float={0} must be a float.
  errors.double={0} must be a double.

  errors.date={0} is not a date.
  errors.range={0} is not in the range {1} through {2}.
  errors.creditcard={0} is an invalid credit card number.
  errors.email={0} is an invalid e-mail address.

  Note: Starting in Struts 1.2.0 the default javascript definitions have
        been consolidated to commons-validator. The default can be overridden
        by supplying a <javascript> element with a CDATA section, just as
        in struts 1.1.

-->

<form-validation>

  <global>

      <validator name="required"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateRequired"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
                  msg="errors.required"/>

      <validator name="requiredif"
                classname="org.apache.struts.validator.FieldChecks"
                method="validateRequiredIf"
                methodParams="java.lang.Object,
                              org.apache.commons.validator.ValidatorAction,
                              org.apache.commons.validator.Field,
                              org.apache.struts.action.ActionMessages,
                              org.apache.commons.validator.Validator,
                              javax.servlet.http.HttpServletRequest"
                msg="errors.required"/>

      <validator name="validwhen"
          msg="errors.required"
                classname="org.apache.struts.validator.validwhen.ValidWhen"
                method="validateValidWhen"
                methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      org.apache.commons.validator.Validator,
                      javax.servlet.http.HttpServletRequest"/>


      <validator name="minlength"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateMinLength"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.minlength"
          jsFunction="org.apache.commons.validator.javascript.validateMinLength"/>


      <validator name="maxlength"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateMaxLength"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.maxlength"
          jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>



      <validator name="mask"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateMask"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.invalid"/>


      <validator name="byte"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateByte"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.byte"
      jsFunctionName="ByteValidations"/>


      <validator name="short"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateShort"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.short"
      jsFunctionName="ShortValidations"/>


      <validator name="integer"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateInteger"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.integer"
      jsFunctionName="IntegerValidations"/>



      <validator name="long"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateLong"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.long"/>


      <validator name="float"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateFloat"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.float"
      jsFunctionName="FloatValidations"/>

      <validator name="double"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateDouble"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.double"/>


      <validator name="date"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateDate"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.date"
      jsFunctionName="DateValidations"/>


      <validator name="intRange"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateIntRange"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends="integer"
                  msg="errors.range"/>


      <validator name="floatRange"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateFloatRange"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends="float"
                  msg="errors.range"/>


      <validator name="creditCard"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateCreditCard"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.creditcard"/>


      <validator name="email"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateEmail"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.email"/>

      <validator name="url"
            classname="org.apache.struts.validator.FieldChecks"
              method="validateUrl"
        methodParams="java.lang.Object,
                      org.apache.commons.validator.ValidatorAction,
                      org.apache.commons.validator.Field,
                      org.apache.struts.action.ActionMessages,
                      javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.url"/>

    <!--
      This simply allows struts to include the validateUtilities into a page, it should
      not be used as a validation rule.
    -->
    <validator name="includeJavaScriptUtilities"
            classname=""
              method=""
        methodParams=""
              depends=""
                  msg=""
          jsFunction="org.apache.commons.validator.javascript.validateUtilities"/>

  </global>

</form-validation>


       

--------------------------------------------------------------
3.ActionForm 클래스(LoginForm.java)를 다음과 같이 수정 합니다.  LoginForm 클래스가 ValidatorForm 클래스를 상속 받도록 구성 합니다. 물론 import org.apache.struts.validator.ValidatorForm; 문장도 추가 하구요…

혹시 validate() 메소드가 재정의 되어 있다면 주석으로 막으세요~
--------------------------------------------------------------

import org.apache.struts.validator.ValidatorForm;

public class LoginForm extends ValidatorForm {

-----------------------------------------------------------------
4.validation.xml 파일을 다음처럼 수정 합니다. minlength, maxlength인 경우 오류 출력시 매개변수가 두 개 필요 합니다.
-----------------------------------------------------------------

errors.minlength={0} can not be less than {1} characters.
  errors.maxlength={0} can not be greater than {1} characters.
 
  그래서 아래 설정에서 매개변수가 2개로 되어 있으니 참고 바랍니다.

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
          "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">

<form-validation>

<!--
    This is a minimal Validator form file with a couple of examples.
-->

    <global>

        <!-- An example global constant
        <constant>
            <constant-name>postalCode</constant-name>
            <constant-value>^\d{5}\d*$</constant-value>
        </constant>
        end example-->

    </global>

    <formset>
        <!-- An example form -->
        <form name="loginForm">
            <field
                property="id"
                depends="required, minlength, maxlength, mask">
                        <arg0 key="prompt.id"/>
                                        <arg1 key="${var:maxlength}"
                                                name="maxlength"
                                                resource="false"/>
                                        <arg1 key="${var:minlength}"
                                                name="minlength"
                                                resource="false"/>
                                        <var>
                                                <var-name>minlength</var-name>
                                                <var-value>5</var-value>
                                        </var>
                                        <var>
                                                <var-name>maxlength</var-name>
                                                <var-value>10</var-value>
                                        </var>
                                        <var>
                        <var-name>mask</var-name>
                        <var-value>^[a-zA-Z]*$</var-value>
                    </var>
            </field>
            <field
                property="pwd"
                depends="required,mask">
                    <arg0 key="prompt.password"/>
                    <arg1 key="${var:maxlength}"
                                                name="maxlength"
                                                resource="false"/>
                    <var>
                        <var-name>mask</var-name>
                        <var-value>^[0-9a-zA-Z]*$</var-value>
                    </var>
                    <var>
                                                <var-name>maxlength</var-name>
                                                <var-value>10</var-value>
                                        </var>
            </field>
        </form>

    </formset>
</form-validation>

-----------------------------------------------
5.validator-rule.xml 파일은 그대로 사용 합니다.
-----------------------------------------------

--------------------------------------------------------------------
6.application.properties 파일은 리소스 번들 파일로서 에러 메시지 출력을 위해 사용 합니다.
--------------------------------------------------------------------

login.title = LogIn
login.login = Login
login.reset = Cancel

prompt.id= User ID :
prompt.password=Password :

main.title=Main

user.depttitle=DeptNo
user.ename=ENAME
user.job=JOB

jdbc.error=SAVE FAIL!!!

# Struts Validator Error Messages
  errors.required={0} is required.
  errors.minlength={0} can not be less than {1} characters.
  errors.maxlength={0} can not be greater than {1} characters.
  errors.invalid={0} is invalid.

  errors.byte={0} must be a byte.
  errors.short={0} must be a short.
  errors.integer={0} must be an integer.
  errors.long={0} must be a long.
  errors.float={0} must be a float.
  errors.double={0} must be a double.

  errors.date={0} is not a date.
  errors.range={0} is not in the range {1} through {2}.
  errors.creditcard={0} is an invalid credit card number.
  errors.email={0} is an invalid e-mail address.



###############################################3
error.id.required=<li>ID REQUIRED.</li>
error.pwd.required=<li>PASSWORD REQUIRED</li>
error.login.invalid=<li>ID/PASSWORD NOT CORRECT</li>

errors.header=<h3><font color="red">ERROR!</font></h3>
                  You must correct the following error(s) before proceeding:<UL>
errors.footer=</ul><hr>

--------------------------
7.struts-config.xml
--------------------------

<!--  Form Bean Definitions -->
    <form-beans>
        <form-bean name="loginForm" type="login2.LoginForm"/>                 
    </form-beans>

        <!--Action Mapping Definitions  -->   
    <action-mappings>
        <!-- loginAction에 대한 정의 -->
        <action         
            path="/LoginSubmit"
            type="login2.LoginAction"
            name="loginForm"                                   
            input="/login.jsp"
        />
        </action-mappings>

2013년 8월 5일 월요일

(오라클자바교육,ORACELJAVA강좌)JAVA Swing과 JDBC(오라클)를 이용한 예제

//오라클의 EMP Table의 데이터를 가지고 화면에 뿌리는 예제
//이름을 입력하고 Enter Key를 누르면 JDBC를 이용하여  데이터를 가지고 옵니다.


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


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

class DBTest {
        JTextField name;    JPasswordField tel;  JTextField addr;
        public DBTest() {
                JFrame f = new JFrame();
                Container cp = f.getContentPane();
                cp.setLayout(new FlowLayout());
                name = new JTextField("",10);
                name.setCaretColor(Color.blue);
                tel  = new JPasswordField("",10);
               
                                tel.setEditable(false);
                addr = new JTextField("",10);
                addr.setEditable(false);
                cp.add(new JLabel("성명 : "));        cp.add(name);
                cp.add(new JLabel("전화번호 : ")); cp.add(tel);
                cp.add(new JLabel("주소 : "));        cp.add(addr);

                name.addActionListener( new ActionListener()
                        {
                                public void actionPerformed(ActionEvent ae) {
                                        dataGet();
                                }
                        }
                );
                f.setSize(600, 100);                f.setVisible(true);
        }
       
                public static void main(String[] args) {
                new DBTest();       
        }

        public void dataGet() {
                Connection con=null;
                Statement stmt=null;
                ResultSet rs=null;
                try {
              Class.forName("oracle.jdbc.driver.OracleDriver");                       
                  con = DriverManager.getConnection("jdbc:oracle:thin:@***.***.***.***:1521:WINK", "test", "test");
                  stmt = con.createStatement();
                  rs = stmt.executeQuery("select tel, addr from emp where name = " + "'" + name.getText().trim() + "'");
                  if (rs!=null) {

                                            rs.next();
                          tel.setText(rs.getString("tel"));
                          addr.setText(rs.getString("addr"));
                  }
                }
                catch(Exception e) {System.out.println(e);}
                finally {
                        try        {
                                if (con != null) {con.close();        }
                        }
                        catch (Exception e){}
                }
        }
}


2013년 7월 28일 일요일

(오라클자바개발자실무교육,오엔제이프로그래밍실무교육센터)JAVA Nateive Thread/Green Thread 선점형/비선점형

Sun의 JDK 1.2/1.3에는 JIT(just-In-time) 기술이 도입되어 loading 시점에  바이트코드를 실제 기계에서 수행되는 코드로 바꾼 후 실행하게 함으로써 상당한 성능 향상을 가져왔다 
네이티브와 그린 쓰레드는 자바에서 사용되는 쓰레드의 실제 구현상의 차이를 나타내는 것이다. 쓰레드를 자바 가상 기계 내에서 처리하는 것이 그린 쓰레드이고, 커널의 쓰레드 지원 기능을 이용하는 것이 네이티브 쓰레드이다.


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




비선점형(Non-preemptive)멀티태스킹 :운영체제가 제어권을 가지고 있지 않고 응용 프로그램이 제어권을 가지고 있는 것으로 응용 프로그램이 제어권을 운영체제로 돌려주지 않고 중앙 처리 장치를 독점하면 컴퓨터가 다운되는 현상이 생길 수 있다.(Win3.1, MacOS)

선점형(preemptive) 멀티태스킹 : 운영체제가 제어권을 응용 프로그램에게 부여하는 것으로 응용 프로그램이 제어권을 독점하는 것을 방지하여 안정적인 작업 환경을 지원하는 체제이다.(Win95/98, WinNT, Unix)