IDEA를 활용한 첫 번째 Servlet 개발
IDEA Ultimate 2020.1.3 버전을 사용하여 웹 프로젝트를 생성하는 방법을 설명합니다.
필수 구성 요소
- JDK 1.8
- IDEA Ultimate 2020.1.3
- Tomcat 9
설치 및 설정 절차
- 프로젝트 생성: File → New → Project → Java Enterprise 선택
- Project SDK: JDK 1.8 지정
- Java EE 8 선택
- Application Server: 설치된 Tomcat 경로 설정 - 디렉토리 구성: WEB-INF 하위에 classes 및 lib 폴더 생성
- Project Structure → Modules → Compiler output 경로 설정
- Output path: WEB-INF/classes 지정
- Dependency: lib 폴더 추가 - 서버 실행: Run → Edit Configuration → Tomcat 서버 설정
- URL 형식: http://localhost:8080/프로젝트명_war_exploded
첫 번째 Servlet 구현
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String userName = req.getParameter("username");
String html = "<h1 style='color:blue'>안녕하세요, " + userName + "!</h1>";
System.out.println("응답 데이터: " + html);
PrintWriter out = res.getWriter();
out.println(html);
}
}
web.xml 구성
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/greet</url-pattern>
</servlet-mapping>
요청 파라미터 처리
public class UserInfoServlet extends HttpServlet {
public void service(HttpServletRequest req, HttpServletResponse res) throws IOException {
String method = req.getMethod();
String name = req.getParameter("name");
String[] skills = req.getParameterValues("skill");
PrintWriter out = res.getWriter();
out.println("<h1>요청 방식: " + method + "</h1>");
out.println("<h1>이름: " + name + "</h1>");
for(String skill : skills) {
out.println("<h2>기술: " + skill + "</h2>");
}
}
}
Servlet 생명 주기
public class LifecycleServlet extends HttpServlet {
public LifecycleServlet() {
System.out.println("Servlet 객체 생성됨");
}
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("초기화 완료");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String input = req.getParameter("input");
System.out.println("입력 값: " + input);
}
@Override
public void destroy() {
System.out.println("Servlet 객체 제거됨");
}
}
애노테이션 기반 설정
@WebServlet("/annotation")
public class AnnotationServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.getWriter().println("애노테이션 기반 Servlet");
}
}
시작 시 로딩 설정
@WebServlet(urlPatterns="/init", loadOnStartup=1)
public class InitServlet extends HttpServlet {
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("시작 시 초기화 중");
}
}