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(); }
'JAVA'에 해당되는 글 27건
- 2012.10.18 [JAVA] Hashmap for loop
- 2012.09.27 [Android] SDK Ver Android Ver
- 2012.07.03 [Java] Number Format, DecimalFormat
- 2012.07.02 [Java] Runtime Memory
- 2012.06.06 [Java] mybatis(ibatis) 적용시 NoClassDefFoundError에러
- 2012.05.31 [Java] MyBatis 사용하기
- 2012.05.29 [Java] CustomTag.2 속성이 있는 커스텀태그.
- 2012.05.29 [Java] Custom Tag.1 커스텀태그 만들기
- 2010.10.22 [JAVA] 문자 깨짐(일본어)
- 2010.10.20 [JAVA][Struts 2] 개요, 관련 포스팅 링크
- 2010.10.20 [JAVA] 메일
- 2010.10.20 [JAVA] ClassPath
- 2010.10.18 [Java] 자바로 메일 보내기
- 2010.09.13 [JAVA] File관련
- 2008.06.27 [JSP Tag][Example] logic:equal
- 2008.06.25 [Java][Tip] NullPointException을 피하는 코딩습관
- 2008.06.17 [JSP Tag][Example] logic:iterate
- 2008.06.17 [JSP Tag][Example] bean:define
- 2008.06.12 [Java][Tip] Date 인스턴트 생성시 년도날짜시간 지정
- 2008.06.12 [JSP][스크랩] JSP 내에서 너무 큰내용을 보여줄경우
- 2008.06.12 [Tomcat][Tip] JSP가Servlet file을 생성하는 조건.
- 2008.06.12 [Java][Tip] Date 출력형식 결정
- 2008.06.12 [Java][Tip] long 변수 초기화
- 2008.06.05 [Java][Tip] 날짜 다루기 1
- 2008.06.04 [JSP Tag][Tip] 숫자를 콤마 표시 ( 1000 -> 1,000 )
- 2008.05.29 [EL][Tip] EL식에서 request의 parameter 참조
- 2008.05.20 [용어] JavaEE, J2EE, Java Platform Enterprise Edition
천단위 소숫점
long a = Runtime.getRuntime().freeMemory();
DecimalFormat df = new DecimalFormat("#,##0");
System.out.println(df.format(a));
Runtime.getRuntime().totalMemory();
Runtime.getRuntime().maxMemory(); //가상머신이 사용하려고 한 가장 큰 메모리
Runtime.getRuntime().freeMemory();
mybatis 적용하면서
유닛테스트에서는 문제가 없는데,
톰캣 기동후에 웹환경에서 실행시키면
자꾸 에러가 발생.
path문제인지 알았으나.
결국 임포트문제.
해결은
이클립스에서
Window > Preperence
> Tomcat > JVM 설정
> 클래스 패스 / 마이바티스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();
}
}
커스텀 태그 만들기
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"/>
커스텀 태그 만들기
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 />
JIS와 SHIFT_JIS는 다른 코드. 文字化け발생
euc-jp, euc_jp 둘다 사용가능
***파일로부터 인코딩 해서 파일을 읽고 싶을 때는
InputStreamReader isr =
new InputStreamReader(new FileInputStream(path+fileName), "shift_jis");
BufferedReader in = new BufferedReader(isr);
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 참고블로그 -
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
***기본 라이브러리 못잡고 버벅대고 있으면
이클립스에서 잡고 싶은 라이브러리 오른 클릭해서
BuildPath > Add to Build Path
***파일 읽기 (+인코딩)
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();
<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 <
String이 null일 때, NullPointerException을 발생시킨다.
String a = null;
a.equals(""); <- NullPointerException
null체크를 추가하여 if문으로 만들어도 되지만.
귀찮은 사람은 아래의 방법도 있다.
방법 1 >
"".equals(a); <- 알다시피 ""는 String타잎이다.
방법 2 >
StringUtils.equals(a, ""); <- 스트링 유틸 패키지의 equals
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>
<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" />
출처 : 까먹음 (일본사이트)
주의 :
년은 1900년 부터 시작.
year = 0이면 1900년이된다.
달은 0가 1월. 1이 2월. ... 11이 12월.
작성자 : eclipse4j
간혹 response가 이미 커밋되었다는 메세지와 함께 exception이 떨어집니다.
c:import를 써서 뭐좀 가져오려 하다보니 그런메세지가 뜨더군요.
그럴때는
<%@ page autoFlush="false" buffer="128kb" %>
위의 문구를 상단에 써주시면 됩니다. 뭐 아시는 분들이야 벌써아셨겠죠..
jsp 의 page 구문에 관련된 구문들은 모두 외워두셔야 합니다.
서블릿 파일이 생성되더라.
jsp가 불리워 졌을 때.
jsp파일과 work디렉토리에 있는 servlet 파일의 갱신시간을 비교하고,
jsp파일이 더 새것이면 servlet 파일 생성.
servlet 파일이 더 새것이면 현재의 class파일을 사용.
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(d);
쓰려고 하면 맨날 까먹는.
자바에서 표현되는 정수 리터럴은 int이므로
무리하게
long tmp = 1180925134937;
는 에러.
long tmp = Long.parseLong("1180925134937");
하면 잘 됩니다.
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);
<bean:write name="bean1" property="member1" format="#.###" />
안 되던데.
찾았다.
그냥... param
한마디로, URL?xxx=1의 표현
${param.xxx}
관련링크
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자체는 사양이기 때문에, 각사가 라이센스를 따서 구현하여 판매하고 있다.