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

2013년 8월 10일 토요일

[HTML5, AJAX, jQUERY, 웹표준, 웹접근성 실무교육]HTML5, WebWorker

WEBWORKER는 웹클라이언트에 멀티쓰레드를 할 수 있게 해주는 것이다.
 
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클, SQL기초튜닝, 자바, 스프링3.X, 웹표준, HTML5, Ajax, jQuery, 안드로이드, 아이폰, 닷넷 실무강의)  

[장점]
1. 메인 스크립트에서 긴 연산을 수행할 때 브라우저가 어는(freeze) 현상을 방지할 수 있다.
2. 빡센 계산을 할 때 멀티코어를 사용하여 병렬계산을 할 수 있다.
[제약사항]
1. 보안상의 이유로 WebWorker는 DOM 객체에 접근할 수 없다.
2. 뭐 동일한 이유로 alert() 등도 사용할 수 없다.
- 하지만 다음 객체들은 사용가능
navigator, location, XMLHttpRequest, Date, String 등 자바스크립트 기본 객체들
3. 통신에 사용되는 postMessage() 함수의 매개변수로 객체를 넘길 수 있지만 call by value 이므로 역시
DOM 객체에 접근불가
4. 각 브라우저에서 구현한 WebWorker가 프로세스의 형태이든 쓰레드의 형태이든 시동비용과 인스턴
스당 메모리 사용량이 제법 되므로 왕창 생성해서 무지막지하게 돌리는 것은 권장되지 않음
5. 여러 페이지가 공유하는 형태의 WebWorker인 SharedWorker는 아직 구현된 브라우저가 없음  

[오라클자바커뮤니티, 자바교육,JAVA JDBC]JAVA LongRaw 예제

--------------------------
자바에서 LongRaw 예
--------------------------

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




1. 읽을때(detail이란 컬럼이 longraw 입니다.)

try{
            InputStream vIcode        =null;
            BufferedReader vvcode    =null;

            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(" select name,title,detail,re_id,ip,count,to_char(ilsi,'dd/MON/yyyy(hh:mi)'),path,e_mail,root_id,depth  from db_board where id = "+szID);
            rs.next();
            szName = rs.getString(1);
            szTitle = rs.getString(2);
           
            szDetail= hangul.han(new String(rs.getBytes(3),0));           
            szRe_Id = rs.getString(4);
            szIp = rs.getString(5);
            iCount = rs.getInt(6);
            szIlsi = rs.getString(7);
            szPath = rs.getString(8);
            szE_mail = rs.getString(9);
            szRoot_Id = rs.getString(10);
            szDepth = rs.getString(11);
            iCount++;
            rs.close();
            stmt.executeUpdate(" update db_board set count=count+1 where id = "+szID);
            stmt.close();
   
      }

2. 저장하는 예

PreparedStatement ps = con.prepareStatement("insert into db_board(id,re_id,name,title,detail,passwd,count,ip,ilsi,e_mail,is_re,board_gbn,path,root_id,depth) values (?,0,?,?,?,?,0,?,sysdate,?,'N',?,?,?,0)");

          ps.setInt(1,iId);
          ps.setString(2,hangul.han(szName));
          ps.setString(3,hangul.han(szTitle));

//////////////////////////////////////////////////////////////////////////
          StringBuffer szbWriteDetail = new StringBuffer();
          for( int i = 0,len=szDetail.length() ; i < len ; i++){
              if( szDetail.charAt(i) == ' ')
                  szbWriteDetail.append(" ");
              else if( szDetail.charAt(i) == '<')
                  szbWriteDetail.append("<");
              else if( szDetail.charAt(i) == '>')
                  szbWriteDetail.append(">");
              else if( szDetail.charAt(i) == '\n')
                  szbWriteDetail.append("<br>");
              else
                  szbWriteDetail.append(szDetail.charAt(i));
          }
////////////////////////////////////////////////////////////////////////////

          StringBufferInputStream abc = new  StringBufferInputStream(szbWriteDetail.toString());
          ps.setBinaryStream(4,abc,szbWriteDetail.length());
          ps.setString(5,szPasswd);
          ps.setString(6,szIp);
          ps.setString(7,szE_mail);
          ps.setString(8,szBoard_Gbn);
          ps.setString(9,szPath);
          ps.setInt(10,iId);

          ps.executeUpdate( );


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

2013년 8월 4일 일요일

java Brackets Balance Method

자바 스택을 이용한 괄호 체크 하는 메소드 입니다. 

public static boolean bracketsBalance (String exp) {
    ArrayStack stk = new ArrayStack(exp.length() +1);
    for (int i = 0; i < exp.length(); i++) {
         char ch = exp.charAt(i);
         //시작괄호 이면 스택에 넣음
         if (  ch== '[' || ch == '('  )  {
            stk.push( new Character(ch));
         }        
         else if(ch == ']' || ch == ')')  { 
 //파싱중 우측괄호를 봤는데, 스택이 비어있다면 오류
 if (stk.isEmpty())   return false;          
               //우선 스택에서 하나를 꺼낸다.                       
               char charFromStack = ((Character)stk.pop()).charValue();
    // 파싱한것이 ‘(‘ 인데 스택에서 꺼낸것이 ‘)’ 아니거나,
               //  파싱한것이 ‘[’ 인데 스택에서 꺼낸것이 ‘]’ 아닌경우
     if (  ch == ']' && charFromStack != '['
    ||  (ch == ')' && charFromStack != '(')  )
    return false;
 } // end if
    } // end for loop
    return stk.isEmpty();  //empty means matched,  else unmatched
}