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

2012-10-31

java] random 사용하여 난수 구하기.



    // 1 ~ 10  사이의 정수 난수
    for (int i = 1; i <= 20; i++) {
      int n = (int) (Math.random() * 10) + 1;   <== *10 부분을 100, 1000 으로 늘리면 1-100, 1-1000 까지의 난수를 구할 수 있다.
      System.out.println(n);
    }

    // 0.0 ~ 1.0    사이의 실수 난수
    for (int i = 1; i <= 20; i++)
      System.out.println(Math.random());

java] Quartz를 사용하여 동적으로 Job 등록하기




출처 : http://zemba.tistory.com/53


Quartz는 작업을 일정 지정한 시간에 Class기능을 수행하도록 만드는 스케쥴러이다.
이를 위해서는  Schduler가 있어야 하며 또 수행할 작업들의 Class가 있어야 한다.

나는 Quartz를 사용하기 위해서 우선 다음과 같이 분류하였다.



분류
 기능
 Quartz Scheduler Main
 실질적인 Scheduler가 Job을 수행시키는 Class
 Quartz Job Class
 수행할 작업의 내용이 담겨있는 Class
 Quartz PropertyLoader
 Properties에 Job정보를 Main Class에서 읽어 드리도록만든 Loader Class(정해진 규칙에 따라서 등록해야 함)
각 분류별 Class의 코드의 내용을 확인해보자.
1.Scheduler Class(THJobMain.class)
  - Main에서는 Properties파일에서 등록한 Job내용을 읽어드려 수행하는 작업만 수행한다.
  - Scheduler는 StdSchedulerFactory에 스케쥴생성을 통하여 스케쥴러를 시작할수 있다. 단순히 스케쥴러는 시작만한다.
  - 스케쥴러 에서 Start후에는 스케쥴러에 등록된 Job Class가 동작하게 되는것이다.
  - JobRegist에서 Job을 등록해준다.
  - JobRegist에서는 CronTrigger를 사용하여 스케쥴에 등록하여준다.
  - JobDetail은 "Name" , "Group" , "Class" 형태로 등록하고
    CronTrigger는 "Name" , "Group" , "CronExpression"으로 등록한다.
  - 해당 Job을 scheduler.scheduleJob(jobDetail, trigger); 를 사용하여 스케쥴러에 등록해준다.
package tahoe.core.job;import java.text.ParseException;
import org.apache.log4j.PropertyConfigurator;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

public class THJobMain
{
    private SchedulerFactory schedulFactoty = null;
    private Scheduler scheduler = null;
    private JobDetail jobDetail = null;
    private CronTrigger trigger = null;
    private String className = null;
    private String expression = null;
    THPropertyLoader ThProp = new THPropertyLoader();
  
    public THJobMain()
    {
        JobInit();
    }
 
    private void JobInit()
    {
        try
        {
            schedulFactoty = new StdSchedulerFactory();
            scheduler = schedulFactoty.getScheduler();
            scheduler.start();
            JobRegist();
        }
        catch (SchedulerException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public void JobRegist()
    {
        String taskGroups = ThProp.read("TaskGroups");
        String taskList = ThProp.read( taskGroups + ".TaskNames");
        String[] arTaskGroups = taskList.split(",");
     
        for ( int i = 0; i < arTaskGroups.length; i++ )
        {
            Class c = null;
            className = ThProp.read( arTaskGroups[i] + ".class" );
            expression = ThProp.read( arTaskGroups[i] + ".Expression" );

            try
            {
                c = Class.forName( className );
            }
            catch (ClassNotFoundException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            jobDetail = new JobDetail( arTaskGroups[i], arTaskGroups[i], c );
            trigger = new CronTrigger( arTaskGroups[i], arTaskGroups[i] );
            try
            {
                trigger.setCronExpression( expression );
                scheduler.scheduleJob(jobDetail, trigger);
            }
            catch (SchedulerException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            catch ( ParseException e2 )
            {
                e2.printStackTrace();
            }
        }
    }
 
 
    public static void main(String[] args)
    {
        PropertyConfigurator.configure("WEB-INF/conf/log4j.properties");
        new THJobMain();
    }
}


2.PropertyLoader Class(THPropertyLoader.class)
  - Param으로 받은 string Value를 사용하여 Properties파일의 해당 내용을 찾는다.
  - String으로 값을 Return해준다.
package tahoe.core.job

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class THPropertyLoader
{
 
    public THPropertyLoader()
    {}
 
    /**
     * properties 파일 읽기
     */
     public String read(String propKey)
     {
         Properties  pp  = new Properties();
         try
         {
              FileInputStream fis  = new FileInputStream("WEB-INF/conf/quartz.properties");
              pp.load(fis);
         }
         catch (IOException ioe)
         {
              ioe.printStackTrace();
              System.exit(-1);
         }
        return pp.getProperty(propKey);
     }
}


3.Job Class(THJobTest1.class,THJobTest2.class,THJobTest3.class)
  - 실재 스케쥴이 시작될때 작업을 해야할 기능이 있는 Class이다.
  - Job Class는 Quartz의 Job class를 필수적으로 구현해서 사용해야한다.(implement Job)
  - Job 수행은 execute를 통해서 실행된다.(로직을 사용시에 이부분에서 로직을 구현하면 된다.)
  - Test를 위해 sysout메세지 출력으로 Test해본다.
public class THJobTest1 implements Job
{
    public void execute(JobExecutionContext context)
    {
        System.out.println("Test Job1 = " + new Date());
    }
}
public class THJobTest2 implements Job
{
    public void execute(JobExecutionContext context)
    {
        System.out.println("Test Job2 = " + new Date());
    }
public class THJobTest3 implements Job
{
    public void execute(JobExecutionContext context)
    {
        System.out.println("Test Job3 = " + new Date());
    }
}


이제 Properties파일에 설정한후 실행을 해보자.
현재 Property에 Expression 설정을 매 5초 마다 실행 하도록 설정하였다.
각각 등록후 에 Main에서 수행시킬 경우 다음과 같이 내용이 출력되었다.
이로써 Job Class를 작성한후 매번 Main에서 Job을 등록하지 않아도 Properties파일을 사용하여 작업스케쥴러를
등록하여 편리하게 사용할 수 있다.
[2010:06:15 11:06:58][INFO][org.quartz.simpl.SimpleThreadPool][0(ms)][Tahoe]-Job execution threads will use class loader of thread: main
[2010:06:15 11:06:58][INFO][org.quartz.core.SchedulerSignalerImpl][0(ms)][Tahoe]-Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
[2010:06:15 11:06:58][INFO][org.quartz.core.QuartzScheduler][0(ms)][Tahoe]-Quartz Scheduler v.1.7.3 created.
[2010:06:15 11:06:58][DEBUG][org.quartz.utils.UpdateChecker][0(ms)][Tahoe]-Checking for update...
[2010:06:15 11:06:58][INFO][org.quartz.simpl.RAMJobStore][0(ms)][Tahoe]-RAMJobStore initialized.
[2010:06:15 11:06:58][INFO][org.quartz.impl.StdSchedulerFactory][0(ms)][Tahoe]-Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
[2010:06:15 11:06:58][INFO][org.quartz.impl.StdSchedulerFactory][0(ms)][Tahoe]-Quartz scheduler version: 1.7.3
[2010:06:15 11:06:58][INFO][org.quartz.core.QuartzScheduler][0(ms)][Tahoe]-Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
[2010:07:15 11:07:00][DEBUG][org.quartz.simpl.SimpleJobFactory][0(ms)][Tahoe]-Producing instance of Job 'THJobTest1.THJobTest1', class=tahoe.core.job.THJobTest1
[2010:07:15 11:07:00][DEBUG][org.quartz.core.JobRunShell][0(ms)][Tahoe]-Calling execute on job THJobTest1.THJobTest1
[2010:07:15 11:07:00][DEBUG][org.quartz.simpl.SimpleJobFactory][0(ms)][Tahoe]-Producing instance of Job 'THJobTest2.THJobTest2', class=tahoe.core.job.THJobTest2
[2010:07:15 11:07:00][DEBUG][org.quartz.core.JobRunShell][0(ms)][Tahoe]-Calling execute on job THJobTest2.THJobTest2
[2010:07:15 11:07:00][DEBUG][org.quartz.simpl.SimpleJobFactory][0(ms)][Tahoe]-Producing instance of Job 'THJobTest3.THJobTest3', class=tahoe.core.job.THJobTest3
[2010:07:15 11:07:00][DEBUG][org.quartz.core.JobRunShell][0(ms)][Tahoe]-Calling execute on job THJobTest3.THJobTest3
Test Job3 = Mon Mar 15 11:07:00 KST 2010
Test Job1 = Mon Mar 15 11:07:00 KST 2010
Test Job2 = Mon Mar 15 11:07:00 KST 2010
[2010:07:15 11:07:01][DEBUG][org.quartz.utils.UpdateChecker][0(ms)][Tahoe]-No update found.
[2010:07:15 11:07:05][DEBUG][org.quartz.simpl.SimpleJobFactory][0(ms)][Tahoe]-Producing instance of Job 'THJobTest1.THJobTest1', class=tahoe.core.job.THJobTest1
[2010:07:15 11:07:05][DEBUG][org.quartz.core.JobRunShell][0(ms)][Tahoe]-Calling execute on job THJobTest1.THJobTest1
Test Job1 = Mon Mar 15 11:07:05 KST 2010
[2010:07:15 11:07:05][DEBUG][org.quartz.simpl.SimpleJobFactory][0(ms)][Tahoe]-Producing instance of Job 'THJobTest2.THJobTest2', class=tahoe.core.job.THJobTest2
[2010:07:15 11:07:05][DEBUG][org.quartz.core.JobRunShell][0(ms)][Tahoe]-Calling execute on job THJobTest2.THJobTest2
Test Job2 = Mon Mar 15 11:07:05 KST 2010
[2010:07:15 11:07:05][DEBUG][org.quartz.simpl.SimpleJobFactory][0(ms)][Tahoe]-Producing instance of Job 'THJobTest3.THJobTest3', class=tahoe.core.job.THJobTest3
[2010:07:15 11:07:05][DEBUG][org.quartz.core.JobRunShell][0(ms)][Tahoe]-Calling execute on job THJobTest3.THJobTest3
Test Job3 = Mon Mar 15 11:07:05 KST 2010

java Framework/java] PDF 작업 관련 url





  •   iText 에서 장평 처리 
    • iText의 예제 소스 중 part/chapter14/TextStateOperateors.java 의 59-62 줄 사이의 canvas.setHorizontalScaling(50) 으로 조정 가능(이미지로 처리하는 듯 함) 
  • 거니네(iText관련 문서/강좌??) http://guni.loveyust.net/tag/itext


      iText.jar :    iText-5.0.5.jar



pdfContentByte 에서 bold 를 사용할 수 있는 방법??
.
// first define a standard font for our text
Font helvetica8BoldBlue = FontFactory.getFont(FontFactory.HELVETICA, 8, Font.BOLD, Color.blue);

// create a column object
ColumnText ct = new ColumnText(cb);

// define the text to print in the column
Phrase myText = new Phrase("Lorem ipsum dolor sit amet, ...", helvetica8BoldBlue);
ct.setSimpleColumn(myText, 72, 600, 355, 317, 10, Element.ALIGN_LEFT);
ct.go();

java Framework/java] Object와 JSONObject


[다운]
Java에서 Json 객체로 변환할 때, json-lib라는 오픈 소스를 이용한다.
http://json-lib.sourceforge.net

json-lib에서 array를 변환할 때는 EZMorph 라이브러리가 필요하다.
http://ezmorph.sourceforge.net

자바스크리브에서 객체를 json 객체로 변환시에는 json.js를 이용한다.
http://json.org

[사용법]
Java에서 Json-lib를 사용하기 위해서 필요한 라이브러리는 다음과 같고, eclipse 사용시 Build Path -> Add Exeternal Archives 에 추가한다.
json-lib-2.1-jdk15.jar
jakarta commons-lang 2.3
 
jakarta commons-beanutils 1.7.0  

jakarta commons-collections 3.2  

jakarta commons-logging 1.1

ezmorph 1.0.4

[예제]
   1. 자바스크립트에서
      object.toJSONString();

   2. 자바에서
      JSONObject oJSONObject = JSONObject.fromObject( object );
      JSONArray = JSONArray.fromObject( retlist );

json형식 ==>{"jsontest":[{"name":"Mr.Cho","location":"Seoul"}]}

import java.util.Iterator;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JSONParse {
   public static void main(String[] ar) {
      String s = "{\"jsontest\":[{\"name\":\"Mr.Cho\",\"location\":\"Seoul\"}]}";
      JSONObject jo = JSONObject.fromObject(s);
      JSONArray ja = jo.getJSONArray("jsontest");
      for (Iterator i = ja.iterator(); i.hasNext();) {
          JSONObject ob = (JSONObject) i.next();
          String a = ob.getString("name");
          String b = ob.getString("location");
          System.out.println(a);
          System.out.println(b);
      }
   }
}



아래 fromObject를 사용할 수 있어서 json.jar (org.json.JSONObject) 보다는 json-lib.jar (net.sf.json.JSONObject) 이 더 편한 것 같다.
JSONObject.fromObject( obj )
obj에 문자열도 가능하며, 이것이 JSONText 규칙에 맞을 경우 적절한 JSON 객체를 만들어준다.
이때, obj에 있는 문자열은 작은따옴표(')도 문자열로 간주한다.

   Map states = JSONObject.fromObject("{'':'선택안함','1':'신청','2':'완료','3':'보류'}")

위와 같이 하면 꽤 깔쌈하게 Map 객체를 만들 수 있으며, 이를 Velocity에서도 #set 구문을 이용해서 똑같이 쓸 수도 있다.

java] jsp jdbc 연결 예제




출처  : http://allinfo.tistory.com/14


파일명 : jdbctest.jsp

<%@ page contentType="text/html;charset=euc-kr" import="java.sql.*" %>
<% request.setCharacterEncoding("euc-kr"); %>
<%
 // 데이터베이스 연결관련 변수 선언
 Connection conn = null;
 Statement stmt = null;
 // 데이터베이스 연결관련정보를 문자열로 선언
 String jdbc_driver = "oracle.jdbc.driver.OracleDriver";
 String jdbc_url = "jdbc:oracle:thin:@localhost:1521:ORCL";

 try{
  // JDBC 드라이버 로드
  Class.forName(jdbc_driver);
  // 데이터베이스 연결정보를 이용해 Connection 인스턴스 확보
  conn = DriverManager.getConnection(jdbc_url,"scott","tiger");
  // Connection 클래스의 인스턴스로 부터 SQL  문 작성을 위한 Statement 준비
  stmt = conn.createStatement();
  // username 값을 입력한 경우 sql 문장을 수행.
if(request.getParameter("username") != null) {
   String sql = "insert into jdbc_test values('"+request.getParameter("username")+"','"+request.getParameter("email")+"')";
   stmt.executeUpdate(sql);
  }
 }
 catch(Exception e) {
  System.out.println(e);
 }
%>
<HTML>
<HEAD><TITLE>JDBC 테스트 </TITLE></HEAD>
<BODY>
<center>
<H2>이벤트 등록</H2>
<HR>
<form name=form1 method=post action=jdbctest.jsp>
등록이름 : <input type=text name=username>
email주소 : <input type=text name=email size=20>
<input type=submit value="등록">
</form>
<HR>
</center>
# 등록 목록<P>
<%
 try{
  // select 문장을 문자열 형태로 구성한다.  String sql = "select username, email from jdbc_test";
  // select 를 수행하면 데이터정보가 ResultSet 클래스의 인스턴스로 리턴됨.  ResultSet rs = stmt.executeQuery(sql);
  int i=1;
  // 마지막 데이터까지 반복함.  while(rs.next()) {
   out.println(i+" : "+rs.getString(1)+" , "+rs.getString("email")+"<BR>");
   i++;
  }
  // 사용한 자원의 반납.
  rs.close();
  stmt.close();
  conn.close();
 }
 catch(Exception e) {
  System.out.println(e);
 }
%>
</BODY>
</HTML>

Java] InputStream 을 String으로 변환하기


 InputStream 을  String으로 변환하는 방법


 춮처 : http://www.kodejava.org/examples/266.html

package org.kodejava.example.io;

import java.io.InputStream;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class StreamToString {

    public static void main(String[] args) throws Exception {
        StreamToString sts = new StreamToString();

        /*
         * Get input stream of our data file. This file can be in the root of
         * you application folder or inside a jar file if the program is packed
         * as a jar.
         */
        InputStream is = sts.getClass().getResourceAsStream("/data.txt");

        /*
         * Call the method to convert the stream to string
         */
        System.out.println(sts.convertStreamToString(is));
    }

    public String convertStreamToString(InputStream is) throws IOException {
        /*
         * To convert the InputStream to String we use the BufferedReader.readLine()
         * method. We iterate until the BufferedReader return null which means
         * there's no more data to read. Each line will appended to a StringBuilder
         * and returned as String.
         */
        if (is != null) {
            StringBuilder sb = new StringBuilder();
            String line;

            try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                while ((line = reader.readLine()) != null) {
                    sb.append(line).append("\n");
                }
            } finally {
                is.close();
            }
            return sb.toString();
        } else {      
            return "";
        }
    }
}

Java] Ibatis 다중링크 사용



출처 : http://mimul.com/pebble/default/2008/02/24/1203779580000.html



웹 어플리케이션에서 하나 이상의 데이터 베이스에 접근하여 어플리케이션이 실행되는 환경들이 많을 것입니다.
iBatis에서 어떻게 활용되는 지 사용방법을 공유합니다.
사용환경은 iBatis와 DBCP입니다.
  1. database.properties

    driver=oracle.jdbc.driver.OracleDriver
    jdbc.url1=jdbc:oracle:thin:@mimuluserdb:1521:mimuluser
    username1=mimuluser
    password1=mimuluser

    jdbc.url2=jdbc:oracle:thin:@pepsiuserdb:1521:pepsiuser
    username2=pepsiuser
    password2=pepsiuser
  2. sqlmap1.xml 
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMapConfig
            PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
            "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
    <sqlMapConfig>
        <properties resource="com/mimul/dwr/app/
                   resource/database.properties"/>
        <settings
                cacheModelsEnabled="true"
                enhancementEnabled="true"
                lazyLoadingEnabled="true"
                maxRequests="40"
                maxSessions="20"
                maxTransactions="5"
                useStatementNamespaces="false"
                />
        <transactionManager type="JDBC">
            <dataSource type="DBCP">
                <property name="driverClassName" value="${driver}"/>
                <property name="url" value="${jdbc.url1}"/>
                <property name="username" value="${username1}"/>
                <property name="password" value="${password1}"/>

                <!-- OPTIONAL PROPERTIES BELOW -->
                <property name="initialSize" value="5"/>
                <property name="maxActive" value="30"/>
                <property name="maxIdle" value="20"/>
                <property name="maxWait" value="60000"/>
                <property name="poolPreparedStatements" value="true"/>
                <property name="validationQuery" value="select 0 from dual"/>
                <property name="testOnBorrow" value="true"/>
                <property name="maximumActiveConnections" value="10"/>
                <property name="maximumIdleConnections" value="5"/>
                <property name="maximumWait" value="60000"/>
                <property name="logAbandoned" value="false"/>
                <property name="removeAbandoned" value="false"/>
                <property name="removeAbandonedTimeout" value="50000"/>
            </dataSource>
        </transactionManager>
        <sqlMap resource="com/mimul/dwr/app/sql/Mimul.xml"/>
    </sqlMapConfig>
  3. sqlmap2.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMapConfig
            PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
            "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
    <sqlMapConfig>
        <properties resource="com/mimul/dwr/app/resource/database.properties"/>
        <settings
                cacheModelsEnabled="true"
                enhancementEnabled="true"
                lazyLoadingEnabled="true"
                maxRequests="40"
                maxSessions="20"
                maxTransactions="5"
                useStatementNamespaces="false"
                />
        <transactionManager type="JDBC">
            <dataSource type="DBCP">
                <property name="driverClassName" value="${driver}"/>
                <property name="url" value="${jdbc.url2}"/>
                <property name="username" value="${username2}"/>
                <property name="password" value="${password2}"/>

                <!-- OPTIONAL PROPERTIES BELOW -->
                <property name="initialSize" value="5"/>
                <property name="maxActive" value="30"/>
                <property name="maxIdle" value="20"/>
                <property name="maxWait" value="60000"/>
                <property name="poolPreparedStatements" value="true"/>
                <property name="validationQuery" value="select 0 from dual"/>
                <property name="testOnBorrow" value="true"/>
                <property name="maximumActiveConnections" value="10"/>
                <property name="maximumIdleConnections" value="5"/>
                <property name="maximumWait" value="60000"/>
                <property name="logAbandoned" value="false"/>
                <property name="removeAbandoned" value="false"/>
                <property name="removeAbandonedTimeout" value="50000"/>
            </dataSource>
        </transactionManager>
        <sqlMap resource="com/mimul/dwr/app/sql/Pepsi.xml"/>
    </sqlMapConfig>
  4. SqlConfig.java
    import java.io.File;
    import java.io.Reader;

    import com.ibatis.common.resources.Resources;
    import com.ibatis.sqlmap.client.SqlMapClient;
    import com.ibatis.sqlmap.client.SqlMapClientBuilder;
    import com.jaeminara.common.log.LogPool;

    public class SqlConfig {
        private static SqlMapClient sqlMap1 = null;
        private static SqlMapClient sqlMap2 = null;
        private static SqlConfig instance_ = null;
      
        private SqlConfig() throws Exception
        {
            Reader reader = null;
            String resource = null;
            try {
                if (sqlMap == null) {
                    resource = "sqlmap1.xml";
                     reader = Resources.getResourceAsReader(resource);
                     sqlMap1 = SqlMapClientBuilder.buildSqlMapClient(reader);
                    resource = "sqlmap2.xml";
                     reader = Resources.getResourceAsReader(resource);
                     sqlMap2 = SqlMapClientBuilder.buildSqlMapClient(reader);
                     reader.close();
                }
            } catch (Exception e) {
                System.out.println(e);
                throw e;
            } finally {
                if (reader != null)
                    reader.close();
                reader = null;
                rsc = null;
            }
        }
      
        public static SqlConfig instance()
        {
            try {
                if (instance_ == null) {
                    synchronized (SqlConfig.class) {
                        if (instance_ == null)
                            instance_ = new SqlConfig();
                    }
                }
            } catch (Exception e) {
                System.out.println(e);
            }
            return instance_;
        }

        /**
         * Return SqlMapClient for SDP schema
         *
         * @return
         */
        public static SqlMapClient getSqlMap1Instance()
        {
            return sqlMap1;
        }

        /**
         * Return SqlMapClient for SDP schema
         *
         * @return
         */
        public static SqlMapClient getSqlMap2Instance()
        {
            return sqlMap2;
        }
    }

2012-09-19

javascript] 숫자만 입력받는 함수


회원으로 가입하거나 할때 유용하게 쓰일수 있는 팁이라서 올린다.[초기값 한글/영문으로 지정하기]<input type="text" name="m_name" style="ime-mode:active;"> //초기값이 한글자판
<input type="text" name="m_id" style="ime-mode:inactive;"> //초기값이 영문자판



[숫자 및 특수문자 허용]
// 숫자만 입력받는다. 특수문자('-','.',...)도 허용한다.
function onlyNumber() {
if((event.keyCode > 31) && (event.keyCode < 45) || (event.keyCode > 57)) {
event.returnValue = false;
}
}

// 숫자만 입력받는다. "-"도 받지않는다.
function onlyNumber2(loc) {
if(/[^0123456789]/g.test(loc.value)) {
alert("숫자가 아닙니다.\n\n0-9의 정수만 허용합니다.");
loc.value = "";
loc.focus();
}
}

사용예제) - 주민번호나 전화번호 경우<input name="jumin2" value="" type="text" size="7" maxlength="7" onKeyPress=onlyNumber() onBlur=onlyNumber2(this);>