'JAVA & Open Framework'에 해당되는 글 55건

  1. 2011.04.19 MessageResources.properties에 한글 입력하기.(eclipse)
  2. 2011.04.19 Java Beans??
  3. 2011.04.19 struts-config.xml 구조
  4. 2011.04.19 web.xml 이란?
  5. 2011.04.19 커스텀 태그(custom tag)란?
JAVA & Open Framework2011. 4. 19. 13:30

기본적으로 한글을 입력 할 수가 없다. 한글을 출력하기 위해서는 유니코드로 입력을 해야된다.

eclipse에는 한글을 유니코드로 바꿔주는 플러그인을 제공하고 있다.

 

 

플러그인 설치 방법

 

help->Software Updates -> Find and Install... -> Search for new features to install 선택

후 next ->  New Remote Site.. ->Name:프로퍼티,

URL:http://propedit.sourceforge.jp/eclipse/updates을 입력 ->프로퍼티를 선택하고 실행한다.

->Search Results창이 나오면, 가장위의 한곳만 클릭후 실행한다.

 

설치가 완료되면 MessageResources.properties파일의 아이콘이 P 모양이 된다.

 

사용예> 다음 4개의 파일을 다음과 같이 작성한다.

 

MessageResources.properties

id.error=Empty ID!
pwd.error=입력하란 말이야~ !
number.error=숫자는 넣지 말아줄래??

 

ActionForm을 상속한 클래스에

public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
  // TODO Auto-generated method stub
  ActionErrors actionErrors = new ActionErrors();
  
   Pattern pnum=Pattern.compile("[\\d]+[a-zA-Z]*"); 

  if(id.equals(""))
  {   
   ActionMessage msg = new ActionMessage("id.error");
   actionErrors.add("msg1", msg);
  }
  if(pwd.equals(""))
  {
   ActionMessage msg2 = new ActionMessage("pwd.error");
   actionErrors.add("msg2", msg2);
  }
  if(pnum.matcher(id).matches())
  {

   ActionMessage msg3 = new ActionMessage("number.error");
   actionErrors.add("msg3", msg3);
  }
     return actionErrors;
 }

 

struts-config.xml

 <action-mappings>

        .................
        <action path="/member/register" type="code.struts.member.MemberAction"

                 name="memberForm"  input="/member/member.jsp">
        <forward name="success" path="/member/result.jsp"></forward>  

        </action>

        .................

</action-mappings>

 

member.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib prefix="html" uri="/WEB-INF/struts-html.tld" %><html>
<head>

<title>Member Regist</title>
</head>
<body>
 <html:errors/>

 <form action="register.do" method="post" name="info">
  ID:<input type="text" name="id"/><html:errors property="msg1"/><br>
  PWD:<input type="password" name="pwd"/><html:errors property="msg2"/><br>  
 </form>

</body>
</html>

'JAVA & Open Framework' 카테고리의 다른 글

PreparedStatement Query  (0) 2011.05.27
Java Collection  (0) 2011.05.25
Java Beans??  (0) 2011.04.19
struts-config.xml 구조  (0) 2011.04.19
web.xml 이란?  (0) 2011.04.19
Posted by 아로나
JAVA & Open Framework2011. 4. 19. 11:14


자바빈즈

위키백과, 우리 모두의 백과사전.

자바빈즈(JavaBeans)는 자바로 작성된 소프트웨어 컴포넌트이다.

자바빈즈의 사양은 썬 마이크로시스템즈에서 다음과 같이 정의되었다. "빌더형식의 개발도구에서 가시적으로 조작이 가능하고 또한 재사용이 가능한 소프트웨어 컴포넌트입니다.'

많은 측면에서 유사성을 보임에도 불구하고 자바빈즈는 엔터프라이즈 자바빈즈(EJB)와 혼동하지 말아야 한다. EJB는 자바 플랫폼, 엔터프라이즈 에디션(Java EE)의 일부로서 서버 계열의 컴포넌트이다.

[편집] 자바빈즈의 관례

자바빈즈 클래스로서 작동하기 위해서, 객체 클래스는 명명법, 생성법 그리고 행동에 관련된 일련의 관례를 따라야만한다. 이러한 관례는 (빌더 형식의) 개발 도구에서 자바빈즈와의 연결을 통해 클래스의 사용과 재사용 그리고 클래스의 재배치를 가능하게 한다.

지켜야할 관례에는 다음과 같은 것이 있다.

  • 클래스는 직렬화되어야 한다.(클래스의 상태를 지속적으로 저장 혹은 복원 시키기위해)
  • 클래스는 기본생성자를 가지고 있어야한다.
  • 클래스의 속성들은 get, set 혹은 표준 명명법을 따르는 메서드들을 사용해 접근할 수 있어야 한다.
  • 클래스는 필요한 이벤트처리 메서드들을 포함하고 있어야 한다.

오히려 인터페이스의 구현보다 다양한 관례로서 표현된 요구사항들로 인해, 일부 개발자들은 자바빈즈를 확실한 명명법을 따르는 예전의 자바 객체로 보기도 한다. 그렇지만 그러한 관점은 이벤트 처리 지원하는 자바빈즈에 대한 오해를 낳을 수도 있다. 왜냐하면 메서드 관례와 이벤트 처리를 지원하는 클래스는 상당히 복잡하기 때문이다. 그리고 특정 기반틀래스와 인터페이스를 요구하기 때문이다.

[편집] 자바빈즈에 관련된 예제들

/***********************************
* * 
* PersonBean.java *
* *
************************************/
public class PersonBean implements java.io.Serializable 
{
    private String name;
    private boolean coding;
 
    // 기본 생성자 (인자가 없는).
    public PersonBean() 
    {
 
    }
 
    public String getName() 
    {
        return this.name;
    }
    public void setName(String name) 
    {
        this.name = name;
    }
 
    // Different semantics for a boolean field (is vs. get)
 
    public boolean isCoding() 
    {
        return this.coding;
    }
 
    public void setCoding(boolean coding) 
    {
        this.coding = coding;
    }
}
/***********************************
* * 
* TestPersonBean.java *
* *
************************************/
 
public class TestPersonBean 
{
    public static void main(String[] args) 
    {
 
        PersonBean person = new PersonBean();
        person.setName("Bob");
        person.setCoding(true);
 
        // Output: "Bob [coding]"
        System.out.print(person.getName());
        System.out.println(person.isCoding() ? " [coding]" : "");
    }
}

[편집] 실제 적용 사례

AWT, Swing 그리고 SWT와 같은 자바 GUI 툴킷의 컴포넌트에 자바빈즈 관례들을 사용하고 있다. 그리고 위에 언급된 툴킷의 컴포넌트들은 이클립스의 Visual Editor와 같은 GUI 편집기에서 컴포넌트간 계층을 유지하고 'getter'와 'setter' 메서드들을 통해 컴포넌트에 접근하게 한다.

- 출처 : 위키피디아 코리아 -

'JAVA & Open Framework' 카테고리의 다른 글

Java Collection  (0) 2011.05.25
MessageResources.properties에 한글 입력하기.(eclipse)  (0) 2011.04.19
struts-config.xml 구조  (0) 2011.04.19
web.xml 이란?  (0) 2011.04.19
커스텀 태그(custom tag)란?  (0) 2011.04.19
Posted by 아로나
JAVA & Open Framework2011. 4. 19. 10:50


<?xml version="1.0" encoding="EUC-KR"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

 

<struts-config>

  <form-beans>
  <!-- ========== Form Bean Definitions =================================== -->
    <form-bean name="loginForm" type="com.ean.base.BaseDynaForm">     //사용자가 loginForm에 입력한 파라미터들을
     <form-property name="userId" type="java.lang.String"/>                       해당 클래스에 맵핑시켜 처리
     <form-property name="password" type="java.lang.String"/>
    </form-bean> 
  </form-beans>

 

 <global-forwards>          //forward또는 redirect 할 수 있는 URI를 맵핑
    <forward name="NOTLOGIN" path="/notLogin.jsp" contextRelative="true"/>
    <forward name="NOTLOGINPOP" path="/notLoginPopup.jsp" contextRelative="true"/>
   </global-forwards>

 

 <action-mappings>        //컨트롤러가 요청받았을때 어떤 action을 실행할것인지 설정
   <action path="/switch" type="org.apache.struts.actions.SwitchAction"/>        //submit된 request된 path를

             path : submit된 request의 상대경로                                                      type의 클래스로 수행

             parameter : action객체에 값을 넘겨주기 위한 설정
  <action path="/index" parameter="/index.jsp" type="org.apache.struts.actions.ForwardAction"/>    
   <action path="/top" parameter="/top.jsp" type="org.apache.struts.actions.ForwardAction"/>
    <action path="/leftmenu" parameter="/leftmenu.jsp" type="org.apache.struts.actions.ForwardAction"/>

   <!-- 로그인  -->
   <action
      path="/login"                                       //loginform.jsp에서 action으로 보내주는 페이지명과 맵핑.(.do는생략)
      type="com.ean.auth.LoginAction"           //수행할 클래스
      name="loginForm"                                //form-bean이름
      attribute="loginForm"                          //
      scope="request"                                 //form-bean이 저장되어있는 context의 scope. default는 session
      input="/index.html"                             //validation에러가 나타났을때 경로
      unknown="false"                                //default로 정의된 action인지 판단. default는 false
      validate="false"                                 //validation을 수행할지 여부. default는 true
    >
      <forward                                           //request를 수행할 페이지 경로
        name="SUCCESS"                              //클래스에서 리턴받은 값이 SUCCESS일경우
        path="/main.do"
        redirect="true"
      />      
      <forward
        name="FAILURE"
        path="/loginForm.jsp"
        redirect="false"
      />
    </action>

 

 

 <controller contentType="text/html;charset=EUC-KR" locale="true" nocache="true"/      >//request결과를

                                                                                                                  보낼때 사용하는 컨텐트타입
  <message-resources parameter="com.ean.message.ApplicationResources"/>     //메시지리소스번들이

                                                                                                          저장될 서블릿 켄텍스트 속성

 <plug-in className="com.ean.ibatis.plugin.IbatisPlugin">
  <set-property property="resource"
   value="com/ean/ibatis/config/SqlMapConfig.xml" />
 </plug-in>


</struts-config>

'JAVA & Open Framework' 카테고리의 다른 글

Java Collection  (0) 2011.05.25
MessageResources.properties에 한글 입력하기.(eclipse)  (0) 2011.04.19
Java Beans??  (0) 2011.04.19
web.xml 이란?  (0) 2011.04.19
커스텀 태그(custom tag)란?  (0) 2011.04.19
Posted by 아로나
JAVA & Open Framework2011. 4. 19. 10:37

Web.xml이란?

Web Application의 Deployment Descriptor(환경 파일)로서 XML 형식의 파일

 

 

Web.xml에 작성되는 내용

-ServletContext의 초기 파라미터

-Session의 유효시간 설정

-Servlet/JSP에 대한 정의

-Servlet/JSP 매핑

-Mime Type 매핑

-Welcome File list

-Error Pages 처리

-리스너/필터 설정

-보안

 

Web Application은 임의의 디렉토리로 구성되며 JSP, HTML 기타 이미지 파일 등이 존재하게 되는 디렉토리와 Deployment Desciptor(DD파일, 환경 파일)가 존재하는 디렉토리 그리고 Servlet과 같은 서버상에서 수행되는 클래스 파일들이 존재하게 되는 디렉토리가 이미 정해져 있다. 최상위 디렉토리(docbase)를 edu 디렉토리라고 한다면 다음과 같은 구조가 된다.

 

 

 

 

 

web.xml은 <web-app>태그로 시작하고 종료하는 문서로서 web.xml이 정의된 Web Application의 동작과 관련된 다양한 환경 정보를 태그기반으로 설정하는 파일입니다.

web.xml의 작성 규칙은 XML Schema로 정의되어 있습니다. 그러므로 XML Schema에 대한 사전 지식이 없는 경우에는 작성 규칙을 보면서 이해한다는 것이 좀 어려윤 것은 사실입니다. web.xml을 구성하는 모든 태그들에 대하여 모두 학습하는 것은 의미 없습니다. web.xml의 태그들과 관련된 Servlet 기술을 학습할 때 같이 학습하는 것이 좋은 방법입니다.

 

작성 규칙1 :

-Servlet 2.3 까지의 web.xml의 작성 규칙은 DTD 파일이었고, 2.4부터 XML Schema 파일로 바뀜

-다음과 같이 web.xml의 루트 엘리먼트인 <web-app> 태그에 사용될 XML Schema를 선언해 주어야 함

  

  -web.xml에는 목적과 용도에 따라 필요한 태그만을 작성하면 되지만 태그의 작성 위치가 중요

-XML 문서이니만큼 대소문자 구분, 속성에 값을 할당할 때 인용 부호 지정, 시작 태그와 종료 태그의 매핑에 대하여 주의 깊게 작성하여야 함

 

 

 

 다음은 <web-app> 태그에 정의 가능한 주요 서브 태그들에 대한 리스트입니다. 서브 태그는 XML Schema에 정의된 순서대로 작성해 주어야 합니다.

 

 

 

web.xml은 주로 다음고 ㅏ같은 형식의 내용으로 작성 됩니다.

 

 

 

다음은 web.xml에 정의될 수 있는 주요 태그에 대한 설명입니다. 다음에 소개 하는 태그들은 모두 <web-app>의 바로 아래 레벨의 태그들입니다.

 

 

 

 - 출처 : http://blog.naver.com/b1ack7circ1e?Redirect=Log&logNo=10052647428 -

 

 

'JAVA & Open Framework' 카테고리의 다른 글

Java Collection  (0) 2011.05.25
MessageResources.properties에 한글 입력하기.(eclipse)  (0) 2011.04.19
Java Beans??  (0) 2011.04.19
struts-config.xml 구조  (0) 2011.04.19
커스텀 태그(custom tag)란?  (0) 2011.04.19
Posted by 아로나
JAVA & Open Framework2011. 4. 19. 10:36

커스텀 태그란?

1. JSP 페이지에 재사용 가능한 코드를 조립하는 방법
2. 자바처리에 접근하는 것으로 끝나는 XML 형태
3. 확장된 자바빈즈, 이것은 JSP 페이지 안에서 그것을 사용하기 위해 간단한 인터페이스를 가진다.
4. 자바 프로그래머와 웹 디자이너가 서로 비즈니스를 행하기 위해 만나는 교차점

커스텀 태그의 장점

1. JSP사이트를 유지보수하기 쉽게 한다.
2. 이식성이 있다.
3. JSP를 확장한다.
4. 웹개발속도를 높인다.

커스텀 태그의 단점

1. 태그 라이브러리에서 재사용성을 달성하려면 웹 애플리케이션에 여분의 계층이 추가되어야 한다.
웹 애플리케이션 설계시 성능저하를 고려해야 한다.
2. 오직 JSP만을 위한것이다.
서블릿이나 다른 자바 기반솔루션으로 이동하지 못한다.
3. 과다사용의 우려
JSP프로젝트의 80%는 커스텀 태그에 기초, 20% 스크립틀릿에 기초

커스텀 태그 사용하기

1. 태그 라이브러리 가져오기

URI : 태그라이브러리를 식별하는 유일한 이름이다. 종종 URL형태이다.
      이 이름은 JSP 컨테이너 초기파일(web.xml)에서 미리 정의된다.
PREFIX : JSP 컨테이너가 이 태그 라이브러리로부터 얻어지는 페이지에서 접두어 태그가 무엇인지 알려준다.
         이름에 할당되는 규칙은 없다.

2. 태그라이브러리로부터 커스텀 태그 호출하기

<JAXP:trans>

커스텀 태그 만들기

1. 자바 객체를 생성한다.

페이지에 보낼 자바빈즈를 만드는 과정이다.

package com.jspinsider.jspkit.javascript;

public class JavaScriptExample extends java.lang.Object implements java.io.Serializable
{
  
    public JavaScriptExample()
    {
    }
  
    private String  start_script   ="<script language=\"JavaScript\">";
    private String  end_script     ="</script>";

    public String alert(Object aobj_data)
    { 
        return( start_script + " alert(\""  + aobj_data.toString() + "\");" + end_script);
    }
}

2. 태그 핸들러를 만든다.

태그가 실행하는 코드를 갖는다. 모든 실용적인 목적을 위해 실제 커스텀 태스를 생성하는 단계이다.
태그 핸들러가 되기 위해서는, 객체는 Tag, IterrationTag, BodyTag를 구현할 필요가 있다.
논리적인 관점에서 태그 핸들러를 만드는 것은 자바빈을 만드는 것과는 조금 다르다.
자바빈을 만들때는 공통적인 기능을 전부 모아서 만든다. 그러나 태그핸들러는 자바빈보다는 좀더 초점이 모아져 있고, 하나의 태그를 지원한다는 단일한 목적은 가진다.

package com.jspinsider.jspkit.javascript;

import java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class JavaScriptExampleTag extends BodyTagSupport            //태그에 몸체에 포함된 데이터를 읽기 위해 BodyTagSupport 사용
{
    public int doEndTag() throws JspTagException
    { 
        String ls_alert   = "";
    
        try
        {   
            BodyContent lbc_bodycurrent = getBodyContent();

            if(lbc_bodycurrent != null)
            { 
                String ls_message = lbc_bodycurrent.getString();
                JavaScriptExample  JS = new JavaScriptExample();
                ls_alert = JS.alert(ls_message.trim());
            }
            pageContext.getOut().write(ls_alert);                 //JSP 페이지의 출력 스트림 조작을 위해 사용
        }

        catch (IOException e)
        { 
            throw new JspTagException("Error" + e.toString());
        } 
    return EVAL_PAGE;
    }
}

3. 태그 엑스트라인포클래스 만든다(선택사항)

TEI 클래스 또한 태그 핸들러로서 헬퍼 클래스를참조한다.

4. 태그 라이브러리 기술자 만든다

태그 라이브러리 기술자(TLD)는 커스텀 태그를 기술하고 정의하는 XML기반의 파일이다.
JSP컨테이너에게 각 태그 핸들러를 찾고 사용할 수 있는 곳을 알려주는 인덱스 파일이다.
파일명은 반드시 .tld 확장자로 저장되어야 한다.

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
               "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

<taglib>
  <tlibversion>1.0</tlibversion>
  <jspversion>1.1</jspversion>
  <shortname>JavaScriptExampleTag</shortname>
  <uri> http://www.jspinsider.com/jspkit/javascript </uri>
  <info>A simple tag library for making a JavaScript alert   </info>

  <tag>                                                                         //커스텀 태그가 필요한 만큼 <tag> 생성해준다.
    <name>message</name>
    <tagclass>com.jspinsider.jspkit.javascript.JavaScriptExampleTag</tagclass>
    <info> Display Alert Box</info>
  </tag>   
</taglib>

5. JSP 컨테이너에 태그 라이브러리의 위치 알려주기

1) taglib선언이 JSP 페이지에 사용될때 TLD 파일 고유의 경로를 제공

<%@ taglib uri="/my_tag.tld" prefix="JavaScript"%>

2) 태그 라이브러리를 JAR파일로 묶는다.

<%@ taglib uri="/my_tag.jar" prefix="JavaScript"%>

3) web.xml 파일을 편집

<taglib>
   <taglib-uri>
      http://www.jspinsider.com/jspkit/javascript
   </taglib-uri>
   <taglib-location>
      /WEB-INF/JavaScriptExampleTag.tld
   </taglib-location>
</taglib>

6. JSP 페이지 만들기

<%@ taglib uri="http://www.jspinsider.com/jspkit/javascript" prefix="JavaScript"%>
<html>
<head>
</head>
  <body>

  <p>This is a simple test page</p>

  <JavaScript:message >
      This is a simple java alert message
  </JavaScript:message>
  
  </body>
</html>

태그 인터페이스

필드 설명
EVAL_BODY_INCLUDE 서버에게 몸체 내용을 평가하고 그것을 출력스트림에 넣으라는 태그
SKIP_BODY 서버에게 명확하게 몸체 내용을 하나도 처리하지 말라고 알린다. doStringTag()에 의해 반환
EVAL_PAGE 서버에게 페이지의 평가를 계속한다.
SKIP_PAGE 서버에게 페이지 나머지 부분을 처리하지 말라고 알린다.
메소드 설명
doStartTag 태그 핸들러가 이 핸들러 인스턴스에 대한 시작 태그를 만날 때, 서버는 모든 태그 핸들어에 대해서 이 메소드 호출
doEndTag 태그 핸들러가 이 핸들러 인스턴스에 대한 닫기 태그를 만날 때, 서버는 모든 태그 핸들러에 대해서 이 메소드를 호출

문서에 대하여

'JAVA & Open Framework' 카테고리의 다른 글

Java Collection  (0) 2011.05.25
MessageResources.properties에 한글 입력하기.(eclipse)  (0) 2011.04.19
Java Beans??  (0) 2011.04.19
struts-config.xml 구조  (0) 2011.04.19
web.xml 이란?  (0) 2011.04.19
Posted by 아로나