IT/JAVA

[공유] 서블릿 (servlet) [Eclipse]

news-wiki 2018. 12. 27. 22:28
728x90

출처 DEV.NAM | 대부남
원문 https://blog.naver.com/kilnam50/110009499585

제목

Eclipse 에서 servlet setting하기

작성자

DEV.NAM( http://blog.naver.com/kilnam50)

작성일

2006-10-08

배포

public (단, 출처는 꼬~~~옥 밝혀 주세요)

출처

Dev.Won

 

처음 시작하기 위해서는 eclipse 기본 세팅을 참조하여 아래와 같은 폴더 구조를 만든다.

 

 

그리고 기본적으로 해야할 두 가지

  1. C:\Program Files\Apache Software Foundation\Tomcat\common\lib   안에 있는

      servlet-api.jar를  \WEB-INF\lib에 옯겨 놓는다.

      이유 : 이 project는 자바 프로젝트이기 때문에 servlet을 사용하기 위한 api가 추가

               되어 있지 않기 때문에 추가해야 한다.

 

 

$ 그리고 위와 같이 Build Path에서 servlet-api.jar를 잡지 않으면 Eclipse에서 인식하지 못 할 수도 있기 때문에 Add Jar을 꼭 해주기 바란다. 그렇지 않으면 servlet관련 package가 import되지 못 하고 에러가 날 위험이 있다.

 

  2. JDK\lib\tool.jar을 Apache\tomcat\common\lib로  옮긴다.

 

이제 제대로 된 Servlet를 시작해 보자.......

 

먼저 가장 중요한 파일인 web.xml을 만들어 보자

위치는 프로젝트에 있는 WEB-INF에 넣으면 된다.

(꼭 이 폴더에 있어야 하며 다른 폴더에 이동시키지 않도록 한다.)

 

 

------------------------------------web.xml--------------------------------------------

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "
http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
 

    <servlet>
        <servlet-name>action</servlet-name>
       <servlet-class>com.nukiboy.framework.servlet.ReloadStrutsConfigActionServlet

        </servlet-class>
       
     <!-- Resources bundle base class -->
  <init-param>
            <param-name>application</param-name>
            <param-value>net.struts.form.MessageResources</param-value>
     </init-param>
        
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>3</param-value>
        </init-param>
        <init-param>
            <param-name>detail</param-name>
            <param-value>3</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

 

 <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.erp</url-pattern>
    </servlet-mapping>

 

<!--

           유저가 세팅하는 부분

           이 두 가지가 한 세트이며 사용자는 색이 파란 부분만 수정해서 사용하면 된다

-->


   <servlet>
      

        <servlet-name>testServlet</servlet-name>
        <servlet-class>servlet.ServletTEST</servlet-class>

                                  package명,class명 (서블릿이 들어있는 클래스)
    </servlet>


     <servlet-mapping>
        <servlet-name>testServlet</servlet-name>   
        <url-pattern>*.do</url-pattern>

          ex) 123.do 나 asdkfja;ls.do라는 신호중 do라는 신호를 받을 때만 처리하라는 의미
    </servlet-mapping>

 

 

<!-- 유저가 세팅하는 부분-->

 

 

<!-- jsp 를 사용하기 위해  필요한 부분-->
     <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

     <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
    </servlet-mapping>
<!-- jsp 를 사용하기 위해  필요한 부분 -->

</web-app>

 

-----------------------------------web.xml---------------------------------------------

 

위를 프로그래밍할 때 주의 사항 되도록 이면 한글로 주석을 달지 않도록 한다.

쓸데없이 한글 주석으로 인해 오류가 생길 수도 있기 때문이다......ㅎㅎㅎ

 

 

 

이제 실제 Servlet를 해보자.....

 

src라는 폴더에 servlet라는 패키지를 만든 뒤 ServletTEST라는 class를 만들어 보자.

 

 

유의사항 : 자바에서 패키지는 소문자로 시작하며,

                              클래스는 대문자로 시작한다. Eclipse에서는 문제없이 프로그래밍할 수

                             있지만 web.xml에서는 인식하지 못하여 황당한 에러가 일어날 수 있다.

                             그러므로 시간 낭비하지 않으려면 최소한의 문법은 준수하기 바란다.

 

 

--------------------------------------ServletTEST.java----------------------------------

 

package servlet;

 

import javax.servlet.*;
import javax.servlet.http.*;          //abstract class 이곳에 있는 abstract Method 를 사용
import java.io.*;


public class ServletTEST extends HttpServlet{    

         //HttpServlet를 상속받아야만 Servlet를 완성할 수 있다. 이는 최소한의 규약이므로 꼭 상속받아서 사용하기 바란다.
 

//웹브라우져에서 주소로 호출했을 때 Get방식의 클라이언트 요청이 이루어집니다. 웹브라우져에 주소줄을 입력하면 ServletTEST 서블릿의 doGet메서드는 자동으로 호출됩니다. 


 public void doGet(HttpServletRequest q, HttpServletResponse r) 

throws ServletException, IOException {

  

  //인코딩을 하기 위한 두 가지 절차
  
r.setCharacterEncoding("UTF-8");                     
  r.setContentType("text/html;charset = UTF-8");    

  
  
//모든 서블릿들을 관리하며 정보공유할 수 있게 도와 주는 역할을 하는 것이 바로 ServletContext입니다. 그리고 서블릿의 정보를 추출하기 위해 ServletContainer에 접근하는 것을 가능하게 해주는 것이기도 합니다. 다르게 말하면 WEB 의 등록정보 정도로 생각하면 좋을 것입니다. 

 

  ServletContext sc = this.getServletContext();    

       

//서블릿은 HttpServlet을 상속한다. 그리고 HttpServlet은 ServletConfig를 구현하고 있기 때문에 getServletContext() 메서드를 바로 이용할 수 있다.

 

  String url = "/jspfile/recieve.jsp";       //이동시키고자 하는 url경로

  

// 클라이언트로부터 요청 받은 정보를 서버의 Html, JSP 또는 Servlet등의 자원에 보내는 역할을 하는 인터페이스이다.


  RequestDispatcher rd = sc.getRequestDispatcher(url);
  

//forward 메서드를 사용하여 클라이언트로부터 받은 정보를

   다른 서블릿으로 보내서 출력한다.
  rd.forward(q, r);  

 }
 

//웹브라우져에서 주소로 호출했을 때 Post방식의 클라이언트 요청이 이루어집니다. 예를 들어 Form에서 POST로 전송할 때 ServletTEST 서블릿의 doPost메서드는 자동으로 호출됩니다. 

 

 public void doPost(HttpServletRequest q, HttpServletResponse r)   //내용은 위와 같음

throws ServletException, IOException {
  
r.setCharacterEncoding("UTF-8");
  r.setContentType("text/html;charset = UTF-8");
  
  ServletContext sc = this.getServletContext();
  String url = "/jspfile/recieve.jsp";
  
  RequestDispatcher rd = sc.getRequestDispatcher(url);
  

//RequestDespatcher의 include 메서드를 사용하면 서블릿뿐 아니라 HTML, JSP파일등을 손쉽게 include해서 쓸 수 있다.  이 방법은 같은 내용이 반복될 때 여러 곳에서 include하여 쓰는 방법으로 유용하게 쓰인다.
  rd.include(q, r);  

  rd.include(q, r);

  rd.include(q, r);  //이렇게 사용하면 똑같은 내용이 세 번 출력된다.
 }
 

}

 

 

 

--------------------------------------ServletTEST.java----------------------------------

 

 

 

그럼 고생스럽게 만든 Servlet를 사용해 보자.

그러기 위해서는 2개의 jsp가 필요하다. 아래와 같이 두 가지 경로에 파일을 만들어 보자

 

 
 
 
 
--------------------------------------recieve.jsp---------------------------------------
 
 
//이 페이지는 우리가 이동이 잘 되었난 확인할 페이지이다.
 
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
잘 왔구만   Servlet~~~~!!!
 
 
 
--------------------------------------recieve.jsp---------------------------------------
 
 
 
--------------------------------------index.jsp-----------------------------------------
 
 
 
 
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 
 

 <form action="recieve.do" method="get">    <--이 파란 부분이 우리가 주는 신호이다.
                                                                      아까 작성한 web.xml에서 *.do라는 신호를
                                                                      받으면 servlet.ServletTEST라는 클래스의
                                                                      서블릿에서 전송된 방식에 맞게 출력된다.
 <input type="submit" value="이동">

 <a href="/stest/jspfile/recieve.jsp">recieve.jsp로 이동</a>
 
 
 
--------------------------------------index.jsp-----------------------------------------
 
 
 
 
실행화면
 
 
 



 
 
 
 
이제 어느 정도 서블릿에 감이 올 것이다. 필자는 솔직히 여러번 해보니 조금씩 이해가 갔다. 이 포
 
스트를 보는 모든 유저들도 몇번 따라해보면 감이 올것이다.
 
솔직이 저는 좀 많이 했습니다.....ㅎㅎㅎㅎ
 
 
 
그럼 서블릿을 재미를 느끼는 그 날까지
 
코딩합시다~~~!
 
 
 
 
그리고 필자의 가슴에 있는 말 한마디 하겠다.
 
 
 
<우리 모두 열정없는 coder가 되지 말고 열정있는 Programer가 되자!!>   (By Dev.Won)


728x90