[스크랩] Spring's Form Tag

Posted by yvette.theomom's blog
2011. 10. 26. 11:18 개발/027__HTML_CSS
출처: http://dev.anyframejava.org/anyframe/doc/web/3.1.0/webfw/springmvc/basic/tag.html

Spring의 폼 태그는 다른 폼 태그 라이브러리와는 다르게 Spring Web MVC와 연동 될 수 있다. 이는 태그에서 command 객체, controller 참조 데이터로의 접근이 가능하다는 것이다. Spring Form tag의 사용방법은 매우 간단하며 예제를 중심으로 각 tag에 대한 내용을 살펴본다.

configuration

spring 폼 태그를 사용하기 위해서는 spring-form.tld파일이 필요하고 이는 spring-webmvc-2.5.2.jar 파일에 포함되어 있다. 이 폼 태그를 사용하기 위해서는 JSP 페이지에 taglib을 추가해줘야한다.
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

form tag

'form'태그는 데이터 바인딩을 위해 태그 안에 바인딩 path를 지정해 줄 수 있다. path에 해당되는 값은 도메인 모델의 Bean 객체를 의미한다. 사용예는 다음과 같다.
<form:form commandName="user">
userId : <form:input path="userId" />
</form:form>
또한 spring form 태그를 이용하기 위해서는 각각의 입력 path값에 매칭될 도메인 객체를 지정해 줘야 하는데 form태그 안에 commandName 속성으로 다음과 같이 지정해 줄 수 있다.
<% request.setAttribute("user", sample.services.UserVO())%>
이러한 commandName의 기본값은 "command"이며 input값들과 매칭될 도메인 객체를 request값으로 세팅해 줘야한다. 이 값은 SimpleFormController를 사용할 경우 FormBackingObject()메소드에서 지정해 줄 수도있다.
protected Object formBackingObject(HttpServletRequest request)
	throws Exception {
	UserVO vo=new UserVO();
	request.setAttribute("user",vo);
	return new UserVO();
}

input tag

HTML의 input태그의 value가 text인 것을 기본 value로 갖는다. 이 태그의 예는 위의 form태그 예에서 볼수있다. 또한 다음과 같은 화면을 출력하게 된다.

checkbox tag

다음은 checkbox tag의 예이다. 마찬가지로 path에 도메인 객체의 bean name을 매핑시켜주고 label속성을 이용하면 jsp페이지로 보여질 이름을 설정할 수 있다.
<form:checkbox path="hobby" value="listeningMusic" label="음악감상"/>
<form:checkbox path="hobby" value="study" label="공부"/>

checkboxes tag

위의 checkbox tag는 각각의 항목에 대해 작성해줘야 하지만 checkboxes tag를 사용하면 items속성을 이용해서 한줄로 나타내줄 수 있다. 이러한 items에 들어갈 값은 컨트롤러의 formBackingObject()메소드에서 Array, List, Map형태의 것들로 넘겨 줄 수 있다. Map의 key와 value쌍으로 넘겨줄 경우 key는 태그의 value값이 되고 value는 label명이 된다. (단, Array나 List로 넘길 경우 label은 value와 같은 값을 가지게 된다.) 다음은 그 예이다.
protected Object formBackingObject(HttpServletRequest request)
 	throws Exception {
	UserVO vo=new UserVO();
	Map interest =new HashMap();
	interest.put("reading", "독서");
	interest.put("listeningMusic", "음악감상");
	interest.put("study", "공부");
	request.setAttribute("interest",interest);
 	request.setAttribute("user",vo);
return new UserVO();
}
<tr>
	<td>hobby :</td>
	<td><form:checkboxes path="hobby" items="${interest}" /></td>
</tr>

radiobutton tag

다음은 radiobutton tag의 예이다. radiobutton tag 또한 label 속성을 이용하여 label명을 설정해 줄 수 있다.
<tr>
    <td>Sex:</td>
    <td>Male: <form:radiobutton path="sex" value="M" label="남자"/> <br/>
        Female: <form:radiobutton path="sex" value="F" label="여자"/> </td>
</tr>

radiobuttons tag

다음은 radiobuttons tag의 예이다. items 속성의 사용방법은 위의 checkboxes tag와 동일하다.
<tr>
    <td>Sex:</td>
    <td><form:radiobuttons path="sex" items="${sexOptions}"/></td>
</tr>

password tag

다음은 password tag의 예이다.
<tr>
	<td>password :</td>
	<td><form:password path="password" /></td>
</tr>

select tag

select tag도 위의 checkboxes tag나 radiobuttons tag 처럼 items 속성을 이용하여 formBackingObject에서 넘겨주는 값으로 자동 매핑 시켜줄 수 있다.
protected Object formBackingObject(HttpServletRequest request)
 	throws Exception {
	UserVO vo=new UserVO();
	Map address =new HashMap();
	address.put("seoul","서울");
	address.put("daegu","대구");
	address.put("busan","부산");
	request.setAttribute("address",address);
 	request.setAttribute("user",vo);
return new UserVO();
}
<tr>
	<td>주소</td>
	<td><form:select path="address" items="${address}" /></td>
</tr>
일반적인 option tag와 함께 아래와 같이 사용할 수도 있다.

option tag

다음은 option tag의 사용 예이다.
<tr>
	<td>주소</td>
	<td><form:select path="address">
		<form:option value="seoul" label="서울" />
		<form:option value="daegu" label="대구" />
		<form:option value="busan" label="부산" />
	</form:select></td>
</tr>

options tag

다음은 options 태그의 사용예이다.
<tr>
	<td>주소</td>
	<td><form:select path="address">
		<form:options items="${address}" />
	</form:select></td>
</tr>

textarea tag

다음은 textarea tag의 사용 예이다.
<td>Note :</td>
<td><form:textarea path="comment" rows="3" cols="20"></form:textarea></td>

hidden tag

다음은 hidden tag의 사용 예이다.
<form:hidden path="userId" />

errors tag

Spring은 validatior에서 얻어진 메시지를 JSP페이지에서 쉽게 출력할 수 있도록 spring form 태그의 form:errors태그를 제공한다. 이는 생성한 validator를 통해 입력값의 유효성 체크 후 에러 메시지를 출력해주는데 자세한 사항은 본 매뉴얼 Spring MVC validator - form:errors 태그 사용 방법을 참고한다.

sample

  • tag.jsp(입력화면)
  • <body>
    <form:form commandName="user">
      <table>
         <tr>
            <td>userId :</td>
            <td><form:input path="userId" /></td>
         </tr>
         <tr>
            <td>password :</td> 
            <td><form:password path="password" /></td>
         </tr>
         <tr>
            <td>sex :</td>
            <td><form:radiobutton path="sex" value="M" label="남자" /> 
                <form:radiobutton path="sex" value="F" label="여자" /></td>
         </tr>
         <tr>
            <td>주소</td>
            <td><form:select path="address" items="${address}">
                </form:select></td>
         </tr>
         <tr>
            <td>hobby :</td>
            <td><form:checkboxes path="hobby" items="${interest}" /></td>
         </tr>
         <tr>
            <td>Note :</td>
            <td><form:textarea path="comment" rows="3" cols="20"></form:textarea></td>
         </tr>
       </table>
       <input type="submit" value="submit"/>
    </form:form>
    </body>
  • FormTagTestController.java
  • public class FormTagTestController extends SimpleFormController {
    	private static Log log = LogFactory.getLog(FormTagTestController.class);
    	
    	public FormTagTestController() {
    		setCommandName("user");
    		setCommandClass(UserVO.class);
    		setFormView("tag");
    		setSuccessView("formtagafter");
    	}
    
    	protected ModelAndView onSubmit(HttpServletRequest request,
    			HttpServletResponse response, Object command,
    			BindException exception) throws Exception {
    
    		System.out.println(command.toString());
    		// TODO Auto-generated method stub
    		UserVO vo = (UserVO) command;
    		return new ModelAndView(getSuccessView(),"vo", vo);
    	}
    	 protected Object formBackingObject(HttpServletRequest request)
    	 throws Exception {
    		UserVO vo=new UserVO();
    
    		Map interest =new HashMap();
    		interest.put("reading", "독서");
    		interest.put("listeningMusic", "음악감상");
    		interest.put("study", "공부");
    		
    		Map address =new HashMap();
    		address.put("seoul","서울");
    		address.put("daegu","대구");
    		address.put("busan","부산");
    
    		request.setAttribute("address",address);
    		request.setAttribute("interest",interest);
    
    	 request.setAttribute("user",vo);
    	 
    	 return new UserVO();
    	 }
    }
  • formtagafter.jsp(출력화면)
  • <body>
    userId = ${vo.userId}<br/>
    password = ${vo.password}<br/>
    address = ${vo.address}<br/>
    sex = ${vo.sex}<br/>
    hobby= "${vo.hobby}"<br/>
    note= "${vo.comment}"<br/>
    </body>
    위의 JSP 코드처럼 Expression Language(JSP 2.0에서 지원)를 사용하면 간단하게 컨트롤러에서 넘겨준 객체의 빈 값을 출력할 수 있다.

Resources




'개발 > 027__HTML_CSS' 카테고리의 다른 글

form:input 태그의 readonly 주기  (0) 2011.10.26

[펌:시스템] 외장하드_데이텅오류 CRC

Posted by yvette.theomom's blog
2011. 9. 16. 00:44
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

JSP 에 FCK 에디터 적용하기

Posted by yvette.theomom's blog
2011. 9. 2. 18:16 개발/022_TIP

my GOAL
입력화면에 FCKEDITOR 넣기

참조블로그:☆ http://geenie1009.tistory.com/entry/jsp%EC%97%90%EC%84%9C-FCKeditor-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 ( 이 매뉴얼을 거의 참조.. 감사합니다.^^)

http://blog.naver.com/PostView.nhn?blogId=tjjoker&logNo=100103068276&redirect=Dlog&widgetTypeCall=true

1. 필요한 파일 다운로드
        0) URL: http://sourceforge.net/projects/fckeditor/files/
        1) FCKeditor_2.6.6.zip 파일을 먼저받고,
        2) 그아래  FCKeditor.Java/  로 가서 최신버전인 FCKeditor / 2.6.6 으로 가서 
           --> java 버전용 fckeditor
           FCKeditor_2.6.6.zip 얘를 다운받습니다.

2. 각각 압축을 풀고 파일을 갇다붙일곳에 먼저 쫘악...갖다 놓습니다.
        1) 위 1.1) 의 압축을 풀면 fckeditor/ 란 디렉토리안에 풀리는데, 얘를 통째로
            설치할 웹사이트 최상위 디렉토리에 FCKedit/ 폴더를 만들고 그 하위에 붙여넣습니다.

            TIP)
보통 Dynamic Web Project 로 프로젝트를 생성했을 경우엔,
                   WebContent/ 가 웹사이트 최상위 디렉토리이고요,
                   저의 경우엔 web_app/ 가 웹사이트 최상위 디렉토리였습니다.
                                            

                    

         2)  FCKeditor-2.3/ 압축을 풀면
                FCKeditor-2.3\src\com/ 이 보이는데, 이 com/ 폴더를 java 단(제가 말하는 java 단이란 웹
                말고 자바소스쪽) 에 붙여넣습니다.
               붙여넣을때는 저의 경우엔 그냥 com/ 하위에 탐색기에서 바로 이클립스로 붙여넣습니다.
               다음은 SVN_repository 에서 봤을때의 폴더구조이고,
               

                       다음은 Spring perspective 구조로 볼때 입니다.
                        

                        보통의 경우 웹에서 찾아보는 매뉴얼들을 보면 설명은 좋은데, 구체적으로 어디다 가져다
                        놓아야 하는지 저의 경우는 그게 가장 헷갈려서 삽질한 경우가 많았어서...^^ 이렇게 정리
                        해 봅니다.

             3) 그 다음, 압축을 푼
                 \FCKEDITOR\02_for java_FCKeditor-2.3\FCKeditor-2.3\web\WEB-INF\lib/
                 아래에 있는 commons-fileupload.jar 파일을 내 웹프로젝트
              /webapp/WEB-INF/lib/commons-fileupload.jar
              에 붙여넣습니다.
              저의 경우엔 WEB-INF/ 밑에 lib/ 폴더가 없어서 폴더생성으로 만들었습니다.

3. 드뎌 설정.(web.xml)
    \FCKEDITOR\02_for java_FCKeditor-2.3\FCKeditor-2.3\web\WEB-INF/
    의 web.xml 파일의 아래부분을 내 웹프로젝트 
    \webapp\WEB-INF\web.xml 파일 맨 아랫부분에 붙여넣습니다.

    - 붙여넣은 내용 -

  <servlet-mapping>
  <servlet-name>front MPKI Dispatcher Servlet</servlet-name>
  <url-pattern>*.do</url-pattern>
 </servlet-mapping>
 
 <display-name>FCKeditor Test Application</display-name>
 
 <servlet>
  <servlet-name>Connector</servlet-name>
  <servlet-class>com.fredck.FCKeditor.connector.ConnectorServlet</servlet-class>
  <init-param>
   <param-name>baseDir</param-name>
   <param-value>/UserFiles/</param-value>
  </init-param>
  <init-param>
   <param-name>debug</param-name>
   <param-value>true</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet>
  <servlet-name>SimpleUploader</servlet-name>
  <servlet-class>com.fredck.FCKeditor.uploader.SimpleUploaderServlet</servlet-class>
  <init-param>
   <param-name>baseDir</param-name>
   <param-value>/UserFiles/</param-value>
  </init-param>
  <init-param>
   <param-name>debug</param-name>
   <param-value>true</param-value>
  </init-param>
  <init-param>
   <param-name>enabled</param-name>
   <param-value>false</param-value>
  </init-param>
  <init-param>
   <param-name>AllowedExtensionsFile</param-name>
   <param-value></param-value>
  </init-param>
  <init-param>
   <param-name>DeniedExtensionsFile</param-name>
   <param-value>php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi</param-value>
  </init-param>
  <init-param>
   <param-name>AllowedExtensionsImage</param-name>
   <param-value>jpg|gif|jpeg|png|bmp</param-value>
  </init-param>
  <init-param>
   <param-name>DeniedExtensionsImage</param-name>
   <param-value></param-value>
  </init-param>
  <init-param>
   <param-name>AllowedExtensionsFlash</param-name>
   <param-value>swf|fla</param-value>
  </init-param>
  <init-param>
   <param-name>DeniedExtensionsFlash</param-name>
   <param-value></param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>

  <servlet-mapping>
    <servlet-name>Connector</servlet-name>
    <url-pattern>/editor/filemanager/browser/default/connectors/jsp/connector</url-pattern>
  </servlet-mapping>
 
  <servlet-mapping>
    <servlet-name>SimpleUploader</servlet-name>
    <url-pattern>/editor/filemanager/upload/simpleuploader</url-pattern>
  </servlet-mapping> 
-- 여기까지 --
</web-app>

입니다.

4. JSP 에 보여주기 
    jsp 에 코딩되어야 할 부분입니다.

 상단에....
<script type="text/javascript" src="/front_mpki/FCKedit/fckeditor/fckeditor.js"></script>

<script LANGUAGE="JavaScript">
       
    /**
     * doInit()
     * 개     요 : 화면 로딩시 실행, 일반 textarea를 editor가 포함된 형태로 변형
     * return값 : void
     */
        function doInit() {
       
                var sBasePath = "/front_mpki/FCKedit/fckeditor/"; // /front_mpki/ 이건 자신의 프로젝트 명입니다.
                oFCKeditor = new FCKeditor( 'FCKeditor' ) ;
                oFCKeditor.BasePath = sBasePath ;
                oFCKeditor.ReplaceTextarea();
        }
        
 
</script>
</head>

와...

body 부분엔..

     <tr>
       <th height="100%" bgcolor="#999999" scope="row">비고</th>
       <td height="100%">     
         <textarea  name='descr' rows="15" cols="40">  ==> 제가 적용한 부분입니다.
         </textarea>  
       </td> 
     </tr>



     여기까지 하면 맨 위의 캡쳐 화면까지 나오는 것. 성공!!!
----------------------------------------------------------------------------
다음문제

4. FCKeditor 내용 가져오기

위 소스의 스크립트 부분에서
oFCKeditor = new FCKeditor( 'descr' ) ;     //-->descr 이 이름 주목

여기서 참조한 블로그:
재선아빠: http://jasonpa.springnote.com/pages/2590

    http://www.dotnetkorea.com/website/Home/tabid/36/EntryId/61/-FCK.aspx

5. \webapp\FCKedit\fckeditor\fckeditor.js 파일 편집 연구...


4~5 번은 보충이 필요한 내용이며..
이상 여기까지 성공입니다. ^^

[TOMCAT6.0] 기동에러_WebappClassLoader.loadClass 로드 못하는 에러

Posted by yvette.theomom's blog
2011. 9. 2. 14:46 개발/021_에러노트

TOMCAT 서버를 기동시킬때 아래 에러 발생

Error configuring application listener of class org.springframework.web.context.ContextLoaderListener

==> 이유: 생성한 프로젝트에 spring.jar 파일이 없기 때문인듯함.

참고URL:
http://www.mkyong.com/spring/spring-error-classnotfoundexception-org-springframework-web-context-contextloaderlistener/
에서 요부분 참조
4. Include the Spring jar file here , it may also required common log jar due to Spring dependency.

===============================================================================
두번째 방법: 
updated.2014.01.09

기본적으로 전자정부프레임워크와 Maven 으로 환경설정 되어진 프로젝트에서
was로 tomcat 을 구동하려 할때, 
모든 설정을 정확히 한것 같은데도 tomcat 이 정상적으로 시작되지 못하는 에러 발생.

에러메시지:


심각: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)



는 이런류이다...

이 경우 java build 환경에서 maven dependency 를 잡아주면 해결된다.

참고 URL: http://dochi575.egloos.com/4691074
<발췌: http://dochi575.egloos.com/4691074>
프로젝트 >> properties >> Deployment Assembly를 선택한 후,
"Add" >> Java Build Path Entries >> Maven Dependencies 선택한 후, "Apply"를 해준다.

톰캣 재시작하면 서버가 정상적으로 실행된다.

메이븐 메뉴에서 "Update Project Configuration"를 실행하는 경우,
해당 정보가 삭제되므로 다시 등록해주면 된다.


[펌] 키보드레지스트리 초기화 혹은 설정

Posted by yvette.theomom's blog
2011. 9. 1. 10:45 개발/023_모든매뉴얼

[Eclipse-Tip]#. Ctrl+SPACE 자동완성기능

Posted by yvette.theomom's blog
2011. 8. 31. 14:58 개발/022_TIP

나의 경우 나의 시스템 키정보 매핑이 초기화 되어 있지 않은탓인지
Ctrl+SPACE 가 먹지 않았다....

그래서 키를 바꿔(Shift F1) 보는 것으로 설정하니 성공 !!
설정정보를 변경하는 곳은 이클립스에서 Window>Preference....
에서 Keys ==> Content Assist 부분을 편집하면 된다.

[JAVA]#3_이클립스에서 자바예제소스 테스트환경

Posted by yvette.theomom's blog
2011. 8. 10. 02:45 개발/025_JAVA

맛나겠졍? 포천 허브랜드안에서 먹었던 막걸리...^^

anyway...

1. JAVA PROJECT 생성 (not Dynamic Web Project)
2. project 에서 NEW > Class
3. 실행: project 에서 RunAs > Java Application
 
- y(e)vette

[JAVA]#2_이클립스 단축키 모음

Posted by yvette.theomom's blog
2011. 8. 10. 02:13 개발/025_JAVA
1.
출처 : http://blog.bagesoft.com/trackback/797


===== 실행 =====
1. Ctrl + F11 : 바로 전에 실행했던 클래스 실행
2. Alt + Shift + x 후에 j : 현재 소스코드 실행 (메인 메서드가 있는 곳에서)

===== 소스 네비게이션 =====
1. Ctrl + 마우스커서(혹은 F3) : 클래스나 메소드 혹은 멤버를 상세하게 검색하고자 할때
2. Alt + ->, Alt + <- : 이후, 이전
3. Ctrl + o : 해당 소스의 메소드 리스트를 확인하려 할때
4. F4 : 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다.

===== 문자열 찾기 =====
1. Ctrl + k : 찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다.
2. Ctrl + Shift + k : 역으로 찾고자 하는 문자열을 찾아감.
3. Ctrl + j : 입력하면서 찾을 수 있음.
4. Ctrl + Shift + j : 입력하면서 거꾸로 찾아갈 수 있음.
5. Ctrl + f : 기본적으로 찾기

===== 소스 편집 =====
1. Ctrl + Space : 입력 보조장치(Content Assistance) 강제 호출 => 입력하는 도중엔 언제라도 강제 호출 가능하다. (이게 진짜 유용한 것 같다. 거의 모든 소스 자동완성 기능을 담당한다. 예를들어 import되지 않은 패키지의 클래스를 사용할경우 그냥 클래스 이름 타이핑하고 Ctrl+Space하면 import구분을 자동 추가해준다)
2. F2 : 컴파일 에러의 빨간줄에 커서를 갖져다가 이 키를 누르면 에러의 원인에 대한 힌트를 제공한다.
3. Ctrl + l : 원하는 소스 라인으로 이동
로컬 히스토리 기능을 이용하면 이전에 편집했던 내용으로 변환이 가능하다.
4. Ctrl + Shift + Space : 메소드의 가로안에 커서를 놓고 이 키를 누르면 파라미터 타입 힌트를 볼 수 있다.
5. 메서드나 제어문 자동완성후 tab키로 이동하면서 각 인자들을 입력한다.
6. 줄단위 구간 선택후 Alt + Shift + 화살표 위, 아래 : 복사된다.

===== 템플릿 사용 =====
1. sysout 입력한 후 Ctrl + Space 하면 System.out.println(); 으로 바뀐다. (syso까지만 입력해도 됨)
2. try 입력한 후 Ctrl + Space 하면 try-catch 문이 완성된다.
3. for 입력한 후 Ctrl + Space 하면 여러가지 for 문을 완성할 수 있다.
4. 템플릿을 수정하거나 추가하려면 환경설정/자바/편집기/템플리트 에서 할 수 있다.

===== 메소드 쉽게 생성하기 =====
1. 클래스의 멤버를 일단 먼저 생성한다.
2. override 메소드를 구현하려면 : 소스->메소드대체/구현 에서 해당 메소드를 체크한다.
3. 기타 클래스의 멤버가 클래스의 오브젝트라면 : 소스->위임메소드 생성에서 메소드를 선택한다.

===== organize import =====
1. 자바파일을 여러개 선택한 후 소스 -> 가져오기 체계화 해주면 모두 적용된다.

===== 주석 처리 =====
2. Ctrl + / 해주면 여러줄이 한꺼번에 주석처리됨. 주석 해제하려면 반대로 하면 됨.

===== 소스 코드 형식 및 공통 주석 설정 =====
1. 환경설정 -> 자바 -> 코드 스타일 -> 코드 포멧터 -> 가져오기 -> JYJ프로파일.xml 을 불러다가 쓰면 된다.
2. 또한 다수의 자바파일에 프로파일을 적용하려면 패키지 탐색기에서 패키지를 선택한 후 소스 -> 형식화를 선택하면 된다.
3. 환경설정 -> 자바 -> 코드 스타일 -> 코드 템플리트 -> 가져오기 -> JYJ템플리트.xml 을 불러다가 쓰면 된다.

===== 에디터 변환 =====
1. 에디터가 여러 파일을 열어서 작업중일때 Ctrl + F6 키를 누르면 여러파일명이 나오고 F6키를 계속 누르면 아래로
2. Ctrl + Shift + F6 키를 누르면 위로 커서가 움직인다.
3. Ctrl + F7 : 뷰간 전환
4. Ctrl + F8 : 퍼스펙티브간 전환
5. F12 : 에디터로 포커스 위치

===== JAVA Doc 생성 =====
1. 프로젝트 -> Javadoc 생성

===== 내보내기 =====
2. 해당 프로젝트를 zip 행태로 압축해서 보관할 수 있다.

===== 자바 찾아보기 perspective =====
3. 해당 프로젝트를 보다 편리하게 한번 둘러보는데 좋다.

===== 스크랩북 =====
1. 스크랩북을 이용하면 자바파일을 만들어 테스트 해보지 않고도 간단하게 테스트 해 볼 수 있다.
2. 패키지 탐색기에서 신규 -> 기타 -> 자바 -> 자바 실행/디버그 -> 스크랩북 페이지 선택

===== 디버그 =====
1. F5(Step Into) : 현재의 명령문이 호출되는 메소드 속으로 진행하여, 그 첫 문장을 실행하기 전에 멈춘다.
하지만 자바 라이브러리 클래스 수준까지 들어가므로 단계필터 사용을 체크(Shift+F5)를 하면 필터를 설정한
클래스에 대하서는 Step Over 기능과 같은 기능을 수행한다.
2. F6(Step Over) : 현재의 명령문을 실행하고 다음 명령문 직전에 다시 멈춘다.
3. F7(Step Return) : 현재의 메소드에서 리턴한 직후에 다시 멈춘다.
4. F8(Resume) : 멈추어 있던 쓰레드를 다시 계속 실행한다.
5. Display view(표시) : 창 -> 보기표시 -> 표시 선택하여 소스상에서 필요한 부분을 선택해서 실행시켜 볼 수 있다.
한 순간의 값만 필요할 때 볼 수 있는 반면에 아래놈은 계속적으로 값이 변하는 것을 확인 할 수 있다.
6. Expression view(표현식) : 복잡한 식 혹은 객체를 디버깅 하면서 계속 볼 수있는 창이다.
마우스 오른버튼 -> 감시 표시식 추가 선택한 후 사용한다.
환경설정 -> 자바 -> 디버그 -> 세부사항 포멧터 선택 후 보기 편한 식으로 편집하면 Expression View 에서 결과를
실시간으로 확인 할 수 있다.
7. 디버깅 하면서 소스를 수정하고 프로그램을 다시 시작할 필요 없이 계속 디버깅을 진행 할 수 있다.
다만 메소드를 추가하거나 필드를 추가하면 프로그램을 다시 시작해야 한다.
8. Drop to Frame(프레임에 놓기) 는 정말 모르겠다.
9. 디버깅 작업을 할때 해당 라이브러리의 소스코드를 첨부하지 않으면 진행상황을 볼 수 없을 경우
해당 라이브러리에 소스코드를 첨부할 수 있다. 해당 프로젝트 -> 특성 -> Java 빌드경로 -> 라이브러리 -> 소스참조
편집 버튼을 눌러서 첨부 한다.

===== 도움말 =====
"JDT 팁과 요령"이라고 치면 여러가지 흥미로운 팁이 나온다.

===== JUnit =====
별로 추천하고 싶지 않은 툴임.

===== Refactoring =====
1. Pull Down : 수퍼클래스의 멤버나 메소드를 하위 클래스로 내리는 행위
2. Push Up : 하위 클래스의 멤버나 메소드를 상위 클래스로 올리는 행위

===== CVS =====
1. CVS 서버로는 윈도우에 CVSNT 최신버젼을 설치하고, [컴퓨터 관리]를 통해서 사용자를 추가한다.
- CVSNT 를 설치할때 윈도우의 경우 Repositories 를 추가할때 접두어를 사용하지 말고 디렉토리 풀이름(d:/cvs) 이런식
으로 등록해야 Eclipse 와 에러없이 동기화가 잘 된다.
2. Eclipse 에 CVS 저장소 perspective 에서 새로운 저장소를 등록한 후 HEAD 에서 해당 프로젝트를 체크아웃하면
자바 perspective 에 등록되는 것을 확인할 수 있다.

출처 : Tong - bunny827님의 이클립스통 , 몇가지 수정하고 추가해봤습니다. 빨간 글씨는 제가 자주 쓰는 기능입니다.