[JAVA] Hashmap for loop

JAVA 2012. 10. 18. 11:22


for (Iterator iter = noteIDs.entrySet().iterator(); iter.hasNext();) { Map.Entry entry = (Map.Entry) iter.next(); String key = (String)entry.getKey(); String value = (String)entry.getValue(); }

Posted by tenn
,

[Android] SDK Ver Android Ver

JAVA 2012. 9. 27. 14:00


Platform VersionAPI LevelVERSION_CODENotes
Android 4.1, 4.1.116JELLY_BEANPlatform Highlights
Android 4.0.3, 4.0.415ICE_CREAM_SANDWICH_MR1Platform Highlights
Android 4.0, 4.0.1, 4.0.214ICE_CREAM_SANDWICH
Android 3.213HONEYCOMB_MR2
Android 3.1.x12HONEYCOMB_MR1Platform Highlights
Android 3.0.x11HONEYCOMBPlatform Highlights
Android 2.3.4
Android 2.3.3
10GINGERBREAD_MR1Platform Highlights
Android 2.3.2
Android 2.3.1
Android 2.3
9GINGERBREAD
Android 2.2.x8FROYOPlatform Highlights
Android 2.1.x7ECLAIR_MR1Platform Highlights
Android 2.0.16ECLAIR_0_1
Android 2.05ECLAIR
Android 1.64DONUTPlatform Highlights
Android 1.53CUPCAKEPlatform Highlights
Android 1.12BASE_1_1
Android 1.01BASE



SDK API Ver

Posted by tenn
,

천단위 소숫점


long a = Runtime.getRuntime().freeMemory();

DecimalFormat df = new DecimalFormat("#,##0");

System.out.println(df.format(a));



Posted by tenn
,

[Java] Runtime Memory

JAVA 2012. 7. 2. 13:23


Runtime.getRuntime().totalMemory();   

Runtime.getRuntime().maxMemory();    //가상머신이 사용하려고 한 가장 큰 메모리

Runtime.getRuntime().freeMemory();




Posted by tenn
,

mybatis 적용하면서

유닛테스트에서는 문제가 없는데,

톰캣 기동후에 웹환경에서 실행시키면

자꾸 에러가 발생.

path문제인지 알았으나.

결국 임포트문제.


해결은

이클립스에서

Window > Preperence 

> Tomcat > JVM 설정

 > 클래스 패스 / 마이바티스jar 설정



Posted by tenn
,

[Java] MyBatis 사용하기

JAVA 2012. 5. 31. 15:39

1. 라이브러리 배치


http://mybatis.org/


jar 파일들을 /WEB-INF/lib에 배치

jar파일 임포트


2. 프로퍼티 파일 작성


db.properties 

 driver=org.postgresql.Driver
 url=jdbc:postgresql://ip/dbname
 username=user

 password=pw



3. 설정파일


! > 공백, 공라인이 있으면 에러 발생


MyBatisConfig.xml 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

    <properties resource="mybatis/db.properties" />

    <environments default="development">

        <environment id="development">

            <transactionManager type="JDBC" />

            <dataSource type="POOLED">

                <property name="driver" value="${driver}" />

                <property name="url" value="${url}" />

                <property name="username" value="${username}" />

                <property name="password" value="${password}" />

            </dataSource>

        </environment>

    </environments>

    <mappers>

        <mapper resource="mybatis/employee.xml" />

    </mappers>

 </configuration>


4. sql 작성


employee.xml

<?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

 <mapper namespace="Test">
     <select id="getEmployee" resultType="app.data.model.Employee">
             SELECT * FROM Employee WHERE id = #{id}  
     </select>

     <select id="getAllEmployees" resultType="app.data.model.Employee">

             SELECT * FROM "Employee"  

     </select>

 </mapper>



5. bean 클래스 생성


Employee.java

package app.data.model;


public class Employee{

private String no;

private String userId;

private String name;



public String getUserId() {

return userId;

}

public void setUserId(String userId) {

this.userId = userId;

}

public String getNo() {

return no;

}

public void setNo(String no) {

this.no = no;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}





5. 실행


package test; 




import java.util.List;


import org.apache.ibatis.session.SqlSession;

import db.SqlMapClient;

import app.data.model.*;


public class Test{


public static void main(String[] args){

SqlSession session = SqlMapClient.getSqlSession();

        

        Employee employee = session.selectOne("Test.getEmployee", "1112");

        System.out.println("name : " + employee.getName());

        

        List<Employee> list = session.selectList("Test.getAllEmployees");

        

        for(int i=0; i<list.size(); i++){

        System.out.println(list.get(i).getName());

        }

        

        session.close();

}


}


Posted by tenn
,

커스텀 태그 만들기


1. 라이브러리 임포트



jsp-api.jar



2. Tag Servlet 작성


package tags;


import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class helloTagServlet implements Tag {
  private PageContext pageContext;
  private Tag parentTag;
  private String name;

  public void setPageContext(PageContext pageContext) {
    this.pageContext = pageContext;
  }

  public void setParent(Tag parentTag) {
    this.parentTag = parentTag;
  }

  public Tag getParent() {
    return this.parentTag;
  }

public void setName(String name){

this.name = name;

} public int doStartTag() throws JspException { try { JspWriter out = pageContext.getOut();


      out.print("Hello World!");
      out.println("name : "+this.name);

    } catch(Exception e) {
      throw new JspException(e.getMessage());
    }
      return SKIP_BODY;
    }

    public int doEndTag() throws JspException {
      return EVAL_PAGE;
    }

  public void release() {}
}


3. tld 작성


<?xml version="1.0" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
            web-jsptaglibrary_2_0.xsd"
        version="2.0">

  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>helloTag</short-name>
  <tag>
    <name>helloTag</name>
    <tag-class>tags.helloTagServlet</tag-class>
    <body-content>empty</body-content>

<attribute>

<name>name</name>

<type>java.lang.String</type>

<rtexprvalue>true</rtexprvalue> <- EL식, servlet식을 사용해서 값 설정 가능.

</attribute>

</tag> </taglib>


4. web.xml에 추가


<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd" version="2.4"> <jsp-config> <taglib> <taglib-uri>tags/hello</taglib-uri> <taglib-location>/WEB-INF/lib/hello.tld</taglib-location> </taglib> </jsp-config> </web-app>


5. jsp에 사용


//uri web.xml에서 설정한 <taglib-uri>의 값을 설정



<%@ page contentType="text/html; charset=windows-31j"

         import="tags.*" %>


<%@ taglib uri=" tags/hello "

    prefix="hello" %>


<HTML>

<BODY>


<hello:helloTag name="hello"/>






Posted by tenn
,

커스텀 태그 만들기


1. 라이브러리 임포트



jsp-api.jar



2. Tag Servlet 작성


package tags;


import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class helloTagServlet implements Tag {
  private PageContext pageContext;
  private Tag parentTag;

  public void setPageContext(PageContext pageContext) {
    this.pageContext = pageContext;
  }

  public void setParent(Tag parentTag) {
    this.parentTag = parentTag;
  }

  public Tag getParent() {
    return this.parentTag;
  }


  public int doStartTag() throws JspException {
    try {
      JspWriter out = pageContext.getOut();

      out.print("Hello World!");

    } catch(Exception e) {
      throw new JspException(e.getMessage());
    }
      return SKIP_BODY;
    }

    public int doEndTag() throws JspException {
      return EVAL_PAGE;
    }

  public void release() {}
}


3. tld 작성


<?xml version="1.0" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
            web-jsptaglibrary_2_0.xsd"
        version="2.0">

  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>helloTag</short-name>
  <tag>
    <name>helloTag</name>
    <tag-class>tags.helloTagServlet</tag-class>
    <body-content>empty</body-content>
  </tag>
</taglib>

4. web.xml에 추가


<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd" version="2.4"> <jsp-config> <taglib> <taglib-uri>tags/hello</taglib-uri> <taglib-location>/WEB-INF/lib/hello.tld</taglib-location> </taglib> </jsp-config> </web-app>


5. jsp에 사용


uri web.xml에서 설정한 <taglib-uri>의 값을 설정



<%@ page contentType="text/html; charset=windows-31j"

         import="tags.*" %>


<%@ taglib uri=" tags/hello "

    prefix="hello" %>


<HTML>

<BODY>


<hello:helloTag />

















Posted by tenn
,
***인코딩 코드
JIS와 SHIFT_JIS는 다른 코드. 文字化け발생
euc-jp, euc_jp 둘다 사용가능


***파일로부터 인코딩 해서 파일을 읽고 싶을 때는
InputStreamReader isr =
            new InputStreamReader(new FileInputStream(path+fileName), "shift_jis");
BufferedReader in = new BufferedReader(isr);
Posted by tenn
,
개요
http://mediafactory.tistory.com/entry/Struts2-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC-2

스트럿츠2의 탄생배경
http://nockarm.egloos.com/1125359

스트럿츠2정리
http://www.rtong.net/664




[Struts2] 1. 스트럿츠2 Start Up

[Struts2] 2. 스트럿츠2(Struts2) 어떻게 변했나?

[Struts2] 3. 스트럿츠2(Struts2) 어떻게 변했나?



스트럿츠2 참고블로그 -

Posted by tenn
,

[JAVA] 메일

JAVA 2010. 10. 20. 13:55

Simple Mail을 사용한 예
http://www.moyiza.com/bbs/view.php?bbid=study_webpro&no=530



commons-emails
http://commons.apache.org/email/download_email.cgi



http://harijan.egloos.com/1350188
Posted by tenn
,

[JAVA] ClassPath

JAVA 2010. 10. 20. 11:59

***기본 라이브러리 못잡고 버벅대고 있으면
이클립스에서 잡고 싶은 라이브러리 오른 클릭해서
BuildPath > Add to Build Path
Posted by tenn
,
http://javastudy.co.kr/docs/lec_java/javamail/javamail.html


Posted by tenn
,

[JAVA] File관련

JAVA 2010. 9. 13. 12:07


***파일 읽기 (+인코딩)
InputStreamReader isr =
new InputStreamReader(new FileInputStream(fileName), "EUC_JP");
BufferedReader in = new BufferedReader(isr);

int i;
String rstStr = "";
while((i = isr.read()) != -1){
            rstStr += (char)i;
}
       



*** 파일 쓰기
 String fileName = "fileWrite.txt";  //패스를 지정 안할시, current directory                 
 File file = new File(fileName);                    
 OutputStream out = new FileOutputStream(file);       
          
String content = "test test test";
     
out.write(content.getBytes());                       
out.close();                                           

Posted by tenn
,
*간단한 사용법
<logic:equal name="str" value="100" >
    <%= str %>= 100 <br><br>
</logic:equal>
    
   
*액션폼의 멤버체크
        <logic:equal name="book_system_book_form_TestCheckBoxForm"
                           property="cb3" value="true">
            체크박스3가 선택되었습니다.
        </logic:equal><br/>


*request의 boolean 데이터타잎의 xxx를 체크
        <logic:equal name="xxx" value="true" scope="request">    
        </logic:equal>
        
 -> JSTL로 같은 표현 : <c:if test="${requestScope.xxx eq true}"></c:if>
   

*판정태그의 종류
        equal    =
        notEquals    !=
        greaterEqual    >=
        greaterThan    >
        lessEqual    <=
        lessThan    <
Posted by tenn
,
문자열을 비교하는 String.equals는
String이 null일 때, NullPointerException을 발생시킨다.

String a = null;
a.equals("");   <- NullPointerException

null체크를 추가하여 if문으로 만들어도 되지만.
귀찮은 사람은 아래의 방법도 있다.

방법 1 >
"".equals(a);  <- 알다시피 ""는 String타잎이다.

방법 2 >
StringUtils.equals(a, "");   <- 스트링 유틸 패키지의 equals
Posted by tenn
,

Bean내의 스트링형의 배열을 표시한다.

        <logic:iterate id="data" name="IterateForm" property="stringForm" >
            <bean:write name="data" /> <br>
        </logic:iterate>

Bean내의 List형의 배열을 표시한다.

        <logic:iterate id="data" name="IterateForm" property="listForm" >
            <bean:write name="data" /> <br>
        </logic:iterate>

Bean내의 Map형의 key로 value를 각각 표시한다.
        <logic:iterate id="data" name="IterateForm" property="mapForm" >
            <bean:write name="data" property="key" />
                :
            <bean:write name="data" property="value" /> <br>
        </logic:iterate>
  

결과자르기 : iterate에서 offset으로 부터 length까지를 루프.
    
    <logic:iterate id="data" name="listData" offset="1" length="2">
        <bean:write name="data" /> <br>
    </logic:iterate>

Posted by tenn
,
문자열 "안녕"을 변수 "stringMessage"로 정의
 
<bean:define id="stringMessage" value="こんばんは" />



세션키 "userdate"의UserData오브젝트를 변수 "udata"로 정의

<bean:define id="udata" name="usrdata" type="sample.bean.UserData" />



세션키 "userdata"의 UserData오브젝트의 프로퍼티 "userId"를 변수 "uid"로 정의

<bean:define id="uid" name="usrdata" type="java.lang.String" property="userId" />



출처 : 까먹음 (일본사이트)
Posted by tenn
,
Date d = new Date(year, month, day, hour, minute, second);

주의 :

년은 1900년 부터 시작.
year = 0이면 1900년이된다.

달은 0가 1월. 1이 2월. ... 11이 12월.
Posted by tenn
,
출처 : 자바지기 (http://www.javajigi.net/)
작성자 : eclipse4j
간혹 response가 이미 커밋되었다는 메세지와 함께 exception이 떨어집니다.

c:import를 써서 뭐좀 가져오려 하다보니 그런메세지가 뜨더군요.

그럴때는

<%@ page autoFlush="false" buffer="128kb" %>

위의 문구를 상단에 써주시면 됩니다. 뭐 아시는 분들이야 벌써아셨겠죠..
jsp 의 page 구문에 관련된 구문들은 모두 외워두셔야 합니다.
Posted by tenn
,
테스트 해보니까, jsp파일이 서블릿 파일보다 늦을 때,
서블릿 파일이 생성되더라.

jsp가 불리워 졌을 때.

jsp파일과 work디렉토리에 있는 servlet 파일의 갱신시간을 비교하고,
jsp파일이 더 새것이면 servlet 파일 생성.
servlet 파일이 더 새것이면 현재의 class파일을 사용.
Posted by tenn
,
Date d = new Date();
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(d);


쓰려고 하면 맨날 까먹는.
Posted by tenn
,

자바에서 표현되는 정수 리터럴은 int이므로
무리하게

long tmp = 1180925134937;

는 에러.



long tmp = Long.parseLong("1180925134937");

하면 잘 됩니다.




Posted by tenn
,
현재 날짜 시각
Calendar now = Calendar.getInstance();
Date date = new Date();


날짜의 세팅

ex > 2008년 1월 1일로 세팅 - Calendar
cal.set(Calendar.YEAR, 2008); 
cal.set(Calendar.MONTH, 0); 
cal.set(Calendar.DATE, 1); 
/*cal은 Calendar의 인스턴스*/

주의> 월의 경우, 0부터 시작
주의> 시간의 경우 HOUR는 12시간제
         24시간은 HOUR_OF_DAY


ex > 2000년 1월 1일로 세팅 - Timestamp
Timestamp timestamp = Timestamp.valueOf("2000-01-01 00:00:00.000000000");



간 클래스 간의 캐스팅

Date date = cal.getTime();
/*cal은 Calendar의 인스턴스*/

cal.setTime(date )
/*date은 java.util.Date의 인스턴스*/

시간 연산

ex > cal에서 1년뒤 (365일을 더함) - Calendar
cal.add(Calendar.YEAR, 1);

getYear대신?
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
지정달의 마지막 날짜

int getLastDay(int year, int month){
month--;
int[] monthEnd = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
   if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
    monthEnd[1] = 29;
   }
    return monthEnd[month];
}
요일구하기

String[] kanjiWeek = new String[]{"日","月","火","水","木","金","土"};
int year = 2012;
int month = 1;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1); //Calendar의 1월 = 0. 
cal.set(Calendar.DATE, 1);
int intWeek = cal.get(Calendar.DAY_OF_WEEK);

System.out.println(kanjiWeek[(intWeek-1)%7]);
//Candendar.DAY_OF_WEEK의 반환값은 SUN :1 - SAT:7
//배열의 0-6으로 맵핑
  







Posted by tenn
,
1000을 1,000과 같이 표시하고 싶을 때,

<bean:write name="bean1" property="member1" format="#.###" />


Posted by tenn
,
requestScope.parameter, requestScope[param]이라고 별 쇼를 다 해 봤으나...
안 되던데.
찾았다.

그냥... param

한마디로, URL?xxx=1의 표현
 ${param.xxx}

관련링크
Posted by tenn
,

Java Platform, Enterprise Edition(Java EE)는 Java의 기업용기능세트. Java Platform, Standard Edition(Java SE)의 확장기능의 형태로 제공된다.

1998년 발표되어, 주로 대규모 시스템(서버용도)용으로 자바 서블릿, JSP, EJB(Enterprise Java Beans), JINI(Java Naming and Directory Interface), JTA(Java Transction API), JMS(Java Message Service), JavaMail, J2CA(J2EE Connector Architecture), XML관련API(JAXP등)의 기능을 제공한다. 다층 시스템의 구축이 가능하여, EJB에 의해 트렌젝션관리/리모트접속등을 자동화할 수 있다.

또한 현재의 버젼은 Java Platform, Enterprise Edition 5(Java EE 5)라고 명명되어, 과거의 버전은 Java 2 Platform, Enterprise Edition(J2EE)라고 명명되어 있다

Java EE자체는 사양이기 때문에, 각사가 라이센스를 따서 구현하여 판매하고 있다.


위키(일본어)

Posted by tenn
,