Posted
Filed under JSP, JAVA
input type="test"
 --> ${param.identifier} OR ${param["identifier"]}

=================================
input type="checkbox" 다중
${paramValues.identifier[0]}
${paramValues.identifier[1]}


${paramValues.identifier[2]}

2011/03/22 19:58 2011/03/22 19:58
Posted
Filed under JSP, JAVA


 JSTL예제(c:forEach),(구구단)  수업  2006/09/28 12:42

 http://blog.naver.com/kabsa22/130009281235


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 포맷 라이브러리를 위한 taglib선언 -->
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!-- 엡 브라우저에서 전달한 메세지가 euc-kr로 인코딩되어 있다는 것을 알려준다. -->
<fmt:requestEncoding value="euc-kr"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
  <title>헤더 정보들</title>
 </head>
 <body>
  <h1>헤더 정보들</h1>
<!--헤더 정보들을 아이템으로 지정하고 아이템을 하나씩 추출해서forEach문으로 반복문 수행-->
  <c:forEach var="h" items="${ header }">
  <!-- 헤더이름을  key값으로 출력 -->
   <li><c:out value="${ h.key }"/> :
  <!-- 헤더값을 출력 -->
   <c:out value="${ h. value }"/>
  </c:forEach>
 </body>
</html>

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

구구단

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 포맷 라이브러리를 위한 taglib선언 -->
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!-- 엡 브라우저에서 전달한 메세지가 euc-kr로 인코딩되어 있다는 것을 알려준다. -->
<fmt:requestEncoding value="euc-kr"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
  <title>구구단</title>
 </head>
 <body>
  <h1 align=center>구구단</h1>
  <!-- t라는 이름으로 전달되는 파라미터의 값을 변수 t에저장한다. -->
  ,!--<c:set var="t" value="${ param.t }"/>-->
  <!-- 디폴터값을 5로 지정한다. -->
  <c:if test="${ empty t }">
   <c:set var="t" value="5"/>
  </c:if>
  <!-- forEach방목문을 돌려서1-9까지 값이 변화는 동안 계속 수행한다. -->
  <c:forEach var="a" begin="1" end="9" step="1">
   <c:out value="${t}"/> X <c:out value="${a}"/>=
   <c:out value="${ a*t }"/><br><!-- a*t값을 출력한다. -->
  </c:forEach>-->

<!--구구단2단에서9단까지바로 하면-->

<c:forEach var="a" begin="2" end="9" step="1">
   <c:forEach var="b" begin="1" end="9" step="1">
   <c:out value="${a}"/> X <c:out value="${b}"/>=
   <c:out value="${ a*b }"/><br><!-- a*b값을 출력한다. -->
   </c:forEach>
  </c:forEach>
 </body>
</html>
 태그저장  취소 구독하기
구독하기를 클릭해 보세요!이웃을 맺은 후 네이버me 메인에서
이웃의 새글을 보실수 있어요스크랩하기  덧글 1개  엮인글 쓰기
 

2011/03/21 22:09 2011/03/21 22:09
Posted
Filed under JSP, JAVA

public static String getSubStr(String _str, int _max){
 
  int int_byte        =        0;;
  String returnStr        =        "";
     
  for(int i=0 ; i<_max ; i++){
    String temp        =        "";
    temp        =        ""+_str.charAt(i);
    int_byte = int_byte+temp.getBytes().length;

    if(int_byte<=_max){
      returnStr        = returnStr+temp;       
    }else{
      break;
    }
 
  }
 
  return returnStr;
}

2011/03/11 13:07 2011/03/11 13:07
Posted
Filed under JSP, JAVA

빈을 생성한다. 인스턴스화 한다. param 태그를 사용해서 프로퍼티를 초기화 할 수 있다.


bean 태그의 속성

   - id : 빈을 참조하기 위한 ID

   - name : 초기화할 클래스명, 자바빈즈 스펙을 따라야 한다.


예제를 보자.

<s:bean id="user" name="com.User">

     <s:param name="name" value="'Stone'" />

     <s:param name="age" value="'27'" />

</s:bean>


<s:property value="#user.name" />

<s:property value="#user.age" />


출력 결과

Stone 27


User의 인스턴스를 생성하고 nam과 age를 초기화 한걸 볼 수 있다.

2010/09/16 09:15 2010/09/16 09:15
Posted
Filed under JSP, JAVA

최근 singleton 패턴 구현에 대한 질문을 받은 적이 있다. singleton 패턴은 인스턴스를 하나만 생성해서 그 객체를 공유해서 사용하는 패턴이다. 일반적으로 DB Pool과 같이 전체 시스템에서 하나의 자원을 공유해서 사용할 때 이 패턴을 활용할 수 있다.

이 패턴을 구현하는 방법은 synchronized getInstance(), double-checked getInstance(), static final instance 등 다양한데, 내 경우는 Singleton 클래스를 구현하기 위해 static initializer를 활용한 방법을 제안했다.

public class Singleton {
  private static Singleton _instance;

  static {
    _instance = new Singleton();
  }

  private Singleton() {}

  public static Singleton getInstance() {
    return _instance;
  }

}

이렇게 구현한 경우 클래스가 로딩되면서 객체가 생성되기 때문에 객체가 이중으로 생성될 수 없고, 가장 확실한 방법인 synchronized getInstance()에 비해서 매번 메소드 호출시에 동기화 작업을 안해줘도 되는 장점이 있다. (synchronized 키워드가 있는 경우 메소드 실행이 약 100배 정도 늦어진다고 한다.)

하지만 오늘 관련 정보를 찾아보니, 글 작성자는 명백히 이 방법보다는 synchronized getInstance()가 좋다고 한다.

getInstance()에서 객체를 생성할 때 장점은 lazy initialization(객체가 사용될 때까지 객체 생성을 연기)이 가능하다는 점과 내부 구현을 Pooling 등으로 변경할 때 쉽게 변경이 가능하다는 것이다. (이 부분은 static initializer도 가능하다.)

다만 Singleton 패턴을 사용해도 ClassLoader 마다 개별적으로 인스턴스가 생성되기 때문에 이 부분은 주의를 기울여야 한다. 특히 Servlet Container는 여러개의 ClassLoader를 사용할 수 있으니 이 점을 인지하고 있어야 한다.

This entry was posted in Java and tagged , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.
2010/09/06 14:22 2010/09/06 14:22
Posted
Filed under JSP, JAVA
utf-8로 개발 하게 되면 별도의 한글처리 필터를 사용 할 필요 없다.
문제는 get방식으로 파라메터를 전달 해야 할경우가 생기면 아래 와 같이 처리 한다.

jsp 에서는 get방식이든 post방식이든 한글로된 파라미터 값을 넘겨줄때 그냥 주면 한글이 깨진다.
ajax가 파라미터를 utf-8로 전송하기때문인데 해결방법은
파라미터를 보낼 자바스크립트에서

escape(encodeURIComponent('한글'));

이렇게 인코딩을 하고
요청처리될 액션 페이지에서

URLDecoder.decode(request.getParameter("searchText"), "UTF-8");
이렇게 받으면된다.

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

escape, encodeURIComponent 둘중에 하나만 사용하려하면 한글이 깨져서 사용할 수 가 없다.

영어만 기억하는 더러운 세상

response.setHeader("Content-Type", "application/octet-stream; charset=euc-kr");

response.setHeader ("Content-Disposition", "attachment; filename="+URLEncoder.encode(fname,"UTF-8")+";");

이렇게 하면 한글파일 다운로드시 안깨진 파일명을 볼 수 있다.
2010/09/01 16:06 2010/09/01 16:06
Posted
Filed under JSP, JAVA

원본 : http://bioportal.weizmann.ac.il/course/prog2/tutorial/java/javaOO/annotations.html

JDK 5.0
릴리즈에는 어노테이션(annotation)이라 불리는 메타데이터 기능이 도입되었다. 어노테이션은 코드 조각의 작성자 명이나 컴파일러가 특정 오류를 억제하도록 지시하는 것과 같이 프로그램의 일부가 아닌 프로그램에 관한 데이터를 제공해 준다. 어노테이션은 코드가 어떻게 수행되는 것에는 아무런 영향을 주지 않는다.

어노테이션은 @어노테이션 형태를 사용하고 클래스, 필드, 메소드 등과 같은 프로그램의 선언부에 적용할 있다. 어노테이션은 가장 처음으로 그리고 종종(관례상) 그 줄에 나타나며 임의의 인수를 포함할 있다:

        @Author("MyName")

        class myClass() { }

혹은

        @SuppressWarnings("unchecked")

        void MyMethod() { }


여러분만의
어노테이션을 정의하는 것은 여기에 기술되지 않을 고급기법에 속하지만, 모든 자바 프로그래머들이 알아야 하는 3개의 내장 어노테이션이 있다: @Deprecated, @Override, 그리고 @SuppressWarnings 그것이다. 다음 예제들은 메소드에 적용된 모든 가지 타입의 어노테이션을 보여준다:

import java.util.List;

 

class Food {}

class Hay extends Food {}

class Animal {

    Food getPreferredFood() {

        return null;

    }

    /**

     * @deprecated document why the method was deprecated

     */

    @Deprecated

    static void deprecatedMethod() { }

}

class Horse extends Animal {

    Horse() {

        return;

    }

    @Override

    Hay getPreferredFood() {

        return new Hay();

    }

    @SuppressWarnings("deprecation")

    void useDeprecatedMethod() {

        Animal.deprecateMethod(); //deprecation warning - suppressed

    }

}


@Deprecated

@Deprecated 어노테이션은 표시된 메소드가 이상 사용되지 말아야 함을 가리킨다. 컴파일러는 프로그램이 비추천(deprecated) 메소드나 클래스 혹은 변수를 사용할 때마다 경고를 발생시킨다. 요소가 비추천되면 그것은 앞의 예제에 나타나 있는 것처럼 해당되는 @deprecated 태그를 사용하여 문서화 되어야 한다. 태그는 소문자 ‘d’ 시작하며 어노테이션은 대문자 ‘D’ 시작함을 주의하라. 일반적으로 여러분은 비추천 메소드의 사용을 피해야 하며 그것 대신 무엇을 사용해야 하는지를 확인해야 한다.


@Override

@Override 어노테이션은 요소가 상위 클래스에서 선언된 요소를 오버라이드 것임을 컴파일러에게 알려준다. 앞의 예제에서는 오버라이드 어노테이션이 Horse 클래스의 getPreferredFood 메소드 Animal 클래스에 있는 동일한 메소드를 오버라이드하고 있음을 가리키는 사용되었다. @Override 표시된 메소드가 상위 클래스에 있는 메소드를 오버라이드하는 실패할 경우 컴파일러는 에러를 발생시킨다.


메소드를
오버라이드 어노테이션을 사용하도록 요구되는 것은 아니기 때문에 특히 메소드가 오버라이드된 메소드의 리턴 타입의 하위 타입을 리턴할 명시적으로 그것을 드러내도록 요구하는 것이 유용할 있다. 이러한 관례는 공변 리턴 타입(covariant return type)이라 불리는데, 이전의 Food 인스턴스를 리턴하는 Animal.getPreferredFood 예제에서 사용되었다. Horse.getPreferredFood (Horse Animal 하위클래스) Hay 인스턴스를 리턴한다. 자세한 정보를 위해서는 Overriding and Hiding Methods 참조하라.


@SuppressWarnings

@SuppressWarnings 어노테이션은 컴파일러가 다르게 발생될 특정 경고를 억제하도록 해준다. 이전의 예제에서 useDeprecatedMethod Animal 비추천 메소드를 호출한다. 보통 컴파일러는 경고를 발생시킬테지만, 경우에는 그것이 억제된다.

모든 컴파일러 경고는 종류에 속한다. 자바 언어 명세(Java Language Specification) 비추천(deprecation)” 비확인(unchecked)” 가지 종류를 나열한다. “비확인경고는 제네릭이 나오기 전에 작성된 레거시 코드와 인터페이싱할 경우에 발생할 있다. 하나 이상의 경고 종류를 억제하려면 다음의 문법을 사용하라.

@SuppressWarnings({"unchecked", "deprecation"})

지원되는 경고 종류들의 목록을 보려면 컴파일러 문서를 확인하라.


어노테이션을
고급스럽게 사용하는 것에는 자바 프로그램을 읽어 그것의 어노테이션을 처리할 있는 프로그램을 작성하는 것이 포함되어 있다. 작업을 돕기 위해, JDK 5.0 릴리즈에는 apt 불리는 어노테이션 처리도구(annotation processing tool) 포함되어 있다. 다음의 JDK 릴리즈(코드네임 머스탱)에는 apt 기능이 자바 컴파일러의 표준 요소가 것이다. 자세한 정보를 보려면 Getting Started with the Annotation Processing Tool 참조하라. 머스탱의 진척사항에 관한 자세한 정보를 원한다면 Language Model API JSR 269: Pluggable Annotation Processing API 참고하라.

2010/06/14 17:58 2010/06/14 17:58
Posted
Filed under JSP, JAVA
[원문] - http://okjsp.tistory.com/1165643255

자바 설치한 디렉토리를 기억합니다. 복사하면 좋구요.
예를 들면
C:\java\jdk1.6.0_04

내 컴퓨터 클릭하고 alt+Enter를 누르면 속성창이 뜹니다.
거기서 "고급" 탭을 클릭하고 하단의 "환경 변수" 버튼을 클릭 합니다.

사용자와 시스템이 상하로 나오는데,
시스템 쪽에 하는 것이 좋습니다.
새로 만드는 환경변수는 "JAVA_HOME" 입니다.
아까 복사한 자바 디렉토리를 아래 붙여 놓습니다.
사용자 삽입 이미지

그리고 하나 더 손 봐야 됩니다.
시스템 쪽에 Path 환경변수가 보입니다.

이것 열고 Home 키를 눌러서 맨 앞으로 가서
%JAVA_HOME%\bin;
을 추가합니다.

확인은 말이죠.
cmd 창 띄우고, 까만 화면에서
echo %Path%
하면 됩니다.

그리고
java -version
하면 버전도 보이죠.
2010/03/22 15:47 2010/03/22 15:47
Posted
Filed under JSP, JAVA
[원문] - http://mwultong.blogspot.com/2006/11/java-mathrandom-int.html
Random 클래스 없이, 간단히 정수 난수 구하기 예제
public class Foo {
  public static void main(String[] args) {


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

/* 출력 결과:
0.8835488755737285
0.7442235907969202
0.04143887519495115
0.7752670113987891
0.525644276817284
0.9810655979902362
0.9857864655525691
0.5176456441171947
0.9534154184106848
0.5711598917262706
0.9167881479510426
0.9683895991289863
0.5570482364156645
0.640266931881892
0.7521635329694171
0.37944742406283405
0.1930044225804538
0.6713601888567906
0.28656122448550325
0.9697966362643208
*/




    // 1 ~ 10 까지의 정수 난수 구하기
    for (int i = 1; i <= 20; i++) {
      int n = (int) (Math.random() * 10) + 1;
      System.out.println(n);
    }

/* 출력 결과:
8
4
2
2
7
1
3
7
10
3
7
2
10
8
3
5
4
10
4
1
*/


  }
}
2010/03/11 19:08 2010/03/11 19:08