본문 바로가기

Tomcat

[Tomcat] Tomcat의 webapps폴더에서 JSP&SERVLET 실행 ②

반응형

01. Tomcat 실행


① Tomcat의 설치경로에 위치한 bin 폴더의 startup.bat 파일을 실행한다.



② 터미널 창이 정상적으로 실행되는 지를 확인한다.



02. JSP 실행


① JSP 파일 생성

 -. HelloJSP.jsp 라는 *.jsp 파일을 생성한다.

 HelloJSP.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello JSP</title>
</head>
<%
    System.out.println("--- Hello JSP ---");
%>
<body>
Hello JSP!!
</body>
</html>



② 파일이동

 -. 작성된 HelloJSP.jsp를 Tomcat 설치경로의『TestProject』폴더에 JSP 폴더에 복사 붙여넣기 한다.



③ JSP 실행

 -. 경로 : http://localhost:8181/TestProject/JSP/HelloJSP.jsp



④ 터미널 확인

 -. System.out.println("--- Hello JSP ---");가 터미널상에 찍히는 것을 확인할 수 있다.




03. SERVLET 실행


① SERVLET 파일 생성

 -. HelloServlet.java 라는 *.java 파일을 생성한다.

 HelloServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
  
    private static final long serialVersionUID = 1L;
     
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       
        System.out.println("--- Hello Servlet ---");
       
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();
      
        out.println("<HTML>");
        out.println("<HEAD>");
        out.println("<TITLE>Hello Servlet!!</TITLE>");
        out.println("</HEAD>");
        out.println("<BODY>");
        out.println("<H2>Hello Servlet</H2>");
        out.println("</BODY>");
        out.println("</HTML>");
    }

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



② 파일이동

 -. 작성된 HelloServlet.class를 Tomcat 설치경로의『TestProject』폴더에 WEB-INF → classes 폴더에 복사 붙여넣기 한다.



③ SERVLET 실행

 -. 경로 : http://localhost:8181/TestProject/servlet/HelloServlet



④ 터미널 확인

 -. System.out.println("--- Hello Servlet ---");이 터미널상에 찍히는 것을 확인할 수 있다.





04. package 내의 SERVLET 실행하기


① SERVLET 파일 생성

 -. time라는 package 내에 ServletTest.java 라는 *.java 파일을 생성한다.

ServletTest.java

package time;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.Calendar;

public class ServletTest extends HttpServlet {
   
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
       
        response.setContentType("text/html; charset=UTF-8");
        Calendar c = Calendar.getInstance();
       
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);
        int second = c.get(Calendar.SECOND);
        PrintWriter out = response.getWriter();
       
        out.write("<html>");
        out.write("<head>");
        out.write("<title>ServletTest(</title>");
        out.write("</head>");
        out.write("<body>");
        out.write("<h1>");
        out.write("현재 시각은? ");
        out.write(Integer.toString(hour));
        out.write("시 ");
        out.write(Integer.toString(minute));
        out.write("분 ");
        out.write(Integer.toString(second));
        out.write("초 입니다.");
        out.write("</h1>");
        out.write("</body>");
        out.write("</html>");
        out.close();
    }
}



② 폴더 생성

  -. Tomcat 설치경로의『TestProject』폴더의 WEB-INF → classes 폴더의 time이라는 폴더를 하나 생성한다.




③ 파일이동

 -. 작성된 time를 Tomcat 설치경로의『TestProject』폴더에 WEB-INF → classes 폴더에 복사 붙여넣기 한다.




④ package내의 SERVLET 실행

 -. 경로 : http://localhost:8181/TestProject/servlet/time.ServletTest





05. JSP와 SERVLET 상호간에 값 넘겨받기


① calc.jsp

 -. 연산에 필요한 숫자와 연산기호를 지정하는 *.jsp 페이지

  calc.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>계  산  기</title>
</head>
<body>
<center>
<h3>계  산  기</h3>
<hr>
<form name = form action = ../servlet/ca.CalcServlet method = post>
    <input type = "text" name = "num1" width = 200 size = "5">
    <select name = "operator">
        <option selected>+</option>
        <option>-</option>
        <option>*</option>
        <option>/</option>
    </select>
    <input type = "text" name = "num2" width = 200 size = "5">
    <input type = "submit" value = "계   산" name = "b1">
    <input type = "reset" value = "다시입력" name = "b2">
</form>
</center>
</body>
</html>



② CalcServlet.java

 -. calc.jsp에서 값을 넘겨받고 Calc.java 에서 계산된 결과를 effect.jsp에 넘겨줄 servlet 파일

 CalcServlet.java

package ca;

//패키지를 import 한다.
import javax.servlet.RequestDispatcher;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 클래스를 선언하고 HttpServlet을 상속받는다.
public class CalcServlet extends HttpServlet {
 
 private static final long serialVersionUID = 1L;
   
 // GET 요청을 처리하기 위한 메서드
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
     // doPost()로 포워딩한다.
     doPost(request, response);
 }

 // POST 요청을 처리하기 위한 메서드다.
 // doGet()에서도 호출하고 있기 떄문에 모든 요청은 doPost()에서 처리되는 구조다.
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
     // 변수를 선어한다.
     int num1 = 0;
     int num2 = 0;
     int result = 0;
     String op = null;
     String view = null;
    
     // 클라이언트가 응답하면 전달될 컨텐츠 mime type과 캐릭터셋을 지정한다.
     response.setContentType("text/html; charset=UTF-8");
    
     // 클라이언트 응답을 위한 출력 스트림을 확보한다.
     PrintWriter out = response.getWriter();
    
     // HTML FORM을 통해 전달된 num1, num2 파라미터 값을 변수에 할당한다.
     // 이때 getParameter() 메서드는 물론 문자열을 리턴하므로 숫자형 데이터의 경우
     // Integer.parseInt()를 통해 int형으로 변환한다.
     num1 = Integer.parseInt(request.getParameter("num1"));
     num2 = Integer.parseInt(request.getParameter("num2"));
     op = request.getParameter("operator");
    
     // Calc 클래스의 인스턴스를 생성한 후 getResult() 메서드를 통해 결과를 받아온다.
     Calc calc = new Calc(num1, num2, op);
     result = calc.getResult();
    
     // request에 각 연산 결과를 담는다.
     request.setAttribute("num1", num1);
     request.setAttribute("num2", num2);
     request.setAttribute("op", op);
     request.setAttribute("result", result);
    
     view = "../JSP/effect.jsp";
    
     // view에 담긴 *.jsp 페이지로 request, response값을 넘겨준다.
     RequestDispatcher dispatcher = request.getRequestDispatcher(view);
     dispatcher.forward(request, response);
 }
}



③ Calc.java

 -. CalcServlet.java 에서 계산 조건을 넘겨받고 실제 연산을 한뒤 다시 CalcServlet.java로 계산결과를 넘겨준다.

  Calc.java

package ca;

//클래스를 선언한다.
public class Calc {

 // 결과를 보관할 변수 private로 선언한다.
 private int result = 0;

 // 생성자에서 계산을 함께 수행한다.
 public Calc (int num1, int num2, String op) {
   
   
     if (op.equals("+")) {
       
         result = num1 + num2;
     }
   
     else if (op.equals("-")) {
       
         result = num1 - num2;
     }
   
     else if (op.equals("*")) {
       
         result = num1 * num2;
     }
   
     else if (op.equals("/")) {
       
         result = num1 / num2;
     }

 }

 // 결과 변수를 리터나는 메서드
 public int getResult() {
   
     return result;
 }
}



④ effect.jsp

 -. 계산 결과를 CalcServlet.java에서 넘겨받고 실제 계산결과를 출력하는 페이지

  effect.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>계 산 결 과</title>
</head>
<body>
<%
    int num1 = ((Integer)request.getAttribute("num1")).intValue();
    int num2 = ((Integer)request.getAttribute("num2")).intValue();
    String op =  (String)request.getAttribute("op");
    int result = ((Integer)request.getAttribute("result")).intValue();
%>
<center>
<h2>계산결과</h2>
<hr/>
<%= num1 %>&nbsp<%= op %>&nbsp<%= num2 %>&nbsp=&nbsp<%=  result %>
</center>
</body>
</html>



⑤ JSP 파일 이동

 -. 작성된 calc.jsp, effect.jsp를 Tomcat 설치경로의『TestProject』폴더에 JSP 폴더에 복사 붙여넣기 한다.



⑥ Tomcat 설치경로의『TestProject』폴더의 WEB-INF → classes 폴더에 ca라는 폴더를 하나 생성한다.



⑦ SERVLET 파일 이동

 -. 생성된 Calc.class, CalcServlet.class를 Tomcat 설치경로의『TestProject』폴더에 WEB-INF → classes → ca폴더에 복사 붙여넣기 한다.



⑧ 실행결과

 -. URL : http://localhost:8181/TestProject/JSP/calc.jsp



반응형