제목 | 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가 필요하다. 아래와 같이 두 가지 경로에 파일을 만들어 보자
pageEncoding="UTF-8"%>
<form action="recieve.do" method="get"> <--이 파란 부분이 우리가 주는 신호이다.
<a href="/stest/jspfile/recieve.jsp">recieve.jsp로 이동</a>
'IT > JAVA' 카테고리의 다른 글
[공유] System.out.println를 버리고 Log4j로 Log를 관리해봅.. (0) | 2018.12.27 |
---|---|
[공유] 간단한 JFreeChart 그리기 (0) | 2018.12.27 |
[공유] html, jsp파일에서 애플릿으로 데이터 전달방법 (0) | 2018.12.27 |
[공유] JSP에서 iBATIS Framework 사용하기. (0) | 2018.12.27 |
[공유] 서버 재시작 없이 스트럿츠 설정 초기화 (0) | 2018.12.27 |