1. 테스트를 위한 HelloWorldServlet.java와 TestXdoclet.java 파일을 만든다.

2. HelloWorldServlet.java (web.xml 자동생성을 테스트하기 위한 소스)

package net.javajigi.chapter3.servlet;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

* web.xml을 생성할 때 쓸 주석문

*

* @web.servlet name="HelloWorldServlet"
*     display-name="HelloWorld Servlet"
*
* @web.servlet-init-param  name="name"
*        value="${hello.servlet.name}"
*
* @web.servlet-mapping url-pattern="/HelloWorld/*"
* @web.servlet-mapping url-pattern="*.HelloWorld"
* @web.servlet-mapping url-pattern="/HelloWorldServlet"
*/

public class HelloWorldServlet extends HttpServlet {

protected void doGet(
 HttpServletRequest request,
 HttpServletResponse response)
 throws ServletException, IOException {
 process(request, response);
}

protected void doPost(
 HttpServletRequest request,
 HttpServletResponse response)
 throws ServletException, IOException {
 process(request, response);
}

protected void process(
 HttpServletRequest request,
 HttpServletResponse response)
 throws ServletException, IOException {
 ServletConfig config = this.getServletConfig();
 String name = config.getInitParameter("name");

 response.setContentType("text/html");
 java.io.PrintWriter out = response.getWriter();
 out.println("<html>");
 out.println("<head>");
 out.println("<title>HelloWorld Servlet</title>");
 out.println("</head>");
 out.println("<body>");
 out.println("<h1>Hi!! " + name + ". Hello World!!</h1>");
 out.println("</body>");
 out.println("</html>");
 out.close();
}
}

3. TestXdoclet.java (struts-config.xml 생성테스트를 위한 소스)

package com.test;

import javax.servlet.http.*;

import org.apache.struts.action.*;
import org.apache.struts.actions.*;

/**
* struts-config.xml이 생성시킬 때 쓰이는 주석문

* 

* @struts.action
*      name="signonForm"
*      path="/login"
*      input="/vm/login/Login.vm"
*      scope="request"
*      validate="false"
*
* @struts.action-forward
*      name="success"
*      path="/preferences.screen"
*
* @struts.action-forward
*      name="login"
*      path="/vm/login/Login.vm"
*
*/

public class Testxdoc extends DispatchAction{

public ActionForward search(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{
 
 return mapping.findForward("success");
}

}

4. Ant는 기본적으로 Eclipse에 포함되어 있으니 xdoclet만 설치하면 된다.

   xdoclet는 아래의 url에서 다운 받으면 된다.

   http://sourceforge.net/project/showfiles.php?group_id=31602

   압축을 푼 후 애플리케이션의 lib폴더에 모든 .jar파일을 import(이클립스의 import기능)하거나 복사한다. 또 Tomcat의 common/lib/servlet-api.jar 파일도 복사해 준다.

5. 프로젝트에서 build.xml 파일을 생성한다. 이 파일이 생성되면 Eclipse에서는 자동으로 Ant Editer를 작동한다.(필자의 경우에는 생성 후 바로 열리는 문서는 Ant Editer가 적용되지 않아 파일을 한번 닫고 다시 열어보니 적용이 되었다.)

6. build.xml을 작성한다.

<?xml version="1.0" encoding="UTF-8"?>
<project name="TestXdoclet" default="all">
<property file="build.properties"/>

<target name="init" description="initialize the properties">
 <mkdir dir="${javadoc.dir}"/>
 <path id="struts.class.path">
  <fileset dir="${lib.dir}" includes="**/*.jar"/>
 </path>
 
 <path id="xdoclet.class.path">
  <fileset dir="${lib.dir}" includes="**/*.jar"/>
 </path>
</target>

<target name="generateDD" depends="init">

 <taskdef name="webdoclet"
  classname="xdoclet.modules.web.WebDocletTask"
  classpathref="xdoclet.class.path"
 />  

  <webdoclet
   destdir="${build.dir}"
   mergedir="${resource.dir}/merge">
   
   <fileset dir="${src.dir}">
    <include name="**/*.java"/>
   </fileset>
   
   <deploymentdescriptor servletspec="2.3" destdir="${build.webinf.dir}">
   </deploymentdescriptor>
 
   <strutsconfigxml
    version="1.1"
    destdir="${build.webinf.dir}">
   </strutsconfigxml>
  </webdoclet>    
</target>
     
<target name="all">
 <!--<antcall target="clean"/>-->
 <antcall target="generateDD" />
</target>
</project>

7. build.properties를 작성한다.

src.dir=${basedir}/src
web.dir=${basedir}/pages

javadoc.dir=${basedir}/docs

build.dir=${basedir}/WebContent


build.webinf.dir=${build.dir}/WEB-INF/
build.lib.dir=${build.webinf.dir}/lib
build.class.dir=${basedir}/build
build.src.dir=${build.webinf.dir}/src
build.sql.dir=${build.dir}/sql

lib.dir=${basedir}/WebContent/WEB-INF/lib
resource.dir=${build.webinf.dir}

dist.dir=${basedir}/dist

deploy.dir=cbcyber
war.name=cbcyber.war

sql.name=sql-export.sql

backup.dir=d:/work/backup/

.properties에 나열된 경로는 자신의 애플리케이션 구조에 맞게 알맞게 수정한다.

8. 프로젝트 익스플로러에서 컨텍스트 메뉴(마우스 오른버튼)를 호출한 후 RUN as 에서 Ant build로 실행한다.

9. 위와 같은 과정이 정상적으로 실행된다면 web.xml파일과 struts-config.xml파일이 자동으로 생성 되어 있을 것이다.

번호 제목 글쓴이 날짜 조회 수
49 GitHub, SourceTree, Gradle, Eclipse 환경의 java project 생성하기 절차 황제낙엽 2025.08.26 252
48 eclipse 용 gradle web application project (no spring) 생성하기 황제낙엽 2025.05.04 317
47 라이브러리 개발 프로젝트에서 jar 로 build 후 파일을 특정 로컬 경로로 copy 하는 예제 황제낙엽 2025.02.07 294
46 [Gemini] gradle init 으로 프로젝트 생성하는 절차 내용 황제낙엽 2025.01.24 344
45 [ChatGPT] eclipse 의 web project 에서 gradle refresh 때마다 context root 가 초기화 황제낙엽 2024.11.14 375
44 Gretty, Jetty 에서 ssl 적용 황제낙엽 2024.11.12 414
43 [ChatAI] Gradle Wrapper의 버전을 업그레이드하는 절차 황제낙엽 2024.11.12 458
42 eclipse 용 gradle web application sample project (no spring) file 황제낙엽 2024.11.12 374
41 [phind] Gradle 프로젝트를 생성할 때 nested sub project 가 함께 생성되는 이유 황제낙엽 2024.11.12 362
40 IDE(IntelliJ, Android Studio, Eclipse) 에서 build.gradle 에 dependencies 추가후 의존 라이브러리 갱신하기 황제낙엽 2024.10.30 379
39 [POST, 2021.06.28] Gradle을 이용해 Web 어플리케이션을 만들고 빌드하고 실행하기 file 황제낙엽 2023.12.30 330
38 build.gradle 의 dependencies 황제낙엽 2023.12.29 327
37 error: unmappable character 황제낙엽 2023.12.29 326
36 Task :compileJava FAILED 황제낙엽 2023.12.29 349
35 사용자 라이브러리 파일(*.jar) 를 의존성에 추가하는 방법 황제낙엽 2023.12.28 361
34 Windows 에 Gradle 설치 황제낙엽 2023.12.23 347
33 Eclipse, Gradle 프로젝트 생성, Dynamic Web Project 로 변경 황제낙엽 2023.12.23 362
32 Eclipse 에서 Gradle Project 를 WAR 로 배포하기 황제낙엽 2023.12.01 538
31 Eclipse 에서 생성한 Gradle Project 를 리프레쉬 했을때 주의할 점 황제낙엽 2023.11.30 1532
30 Gradle 기본 다지기 1편 file 황제낙엽 2023.11.16 244