촬리의늘솔길

네이버 부스트코스 (6) 본문

✍~2022/WEB

네이버 부스트코스 (6)

리촬리 2022. 2. 13. 20:15

1. jre는 애플릿 및 응용 프로그램을 실행하기 위한 라이브러리, java virtual machine 등을 제공, jdk는 jre의 상위 집합으로 jre에 있는 모든 항목과 컴파일러 및 디버거와 같은 도구 포함. jre는 자바 프로그램 실행만 할 때, jdk는 프로그래밍까지 가능.
2. 환경변수를 설정하는 이유는 자바 프로그램을 컴파일하거나 실행할 때마다 javac(컴파일러)의 전체경로를 제공해야 하기 때문. 또 java파일을 bin디렉토리에 저장해야하는 종속성을 제거(시스템 어디에서나 실행가능)
3. 다른 버전의 jdk를 다운받으면 디렉토리가 다르기 때문에 환경변수 설정을 해줘야 한다.

 

jdk 설치!

이클립스 설치!

인코딩 설정 UTP-8로 변경!

bin - first - hello.class 생성됨

src-first-hello.java 생성됨

 

Apache Tomcat이란?

아파치 톰캣(Apache Tomcat)은 아파치 소프트웨어 재단(Apache Software Foundation, ASF)에서 개발한 세계에서 가장 많이 사용되는 WAS(Web Application Server)입니다.

컴퓨터에 운영체제를 설치해야만 컴퓨터를 사용할 수 있는 것처럼, 자바를 이용하여 작성된 웹 어플리케이션은 WAS가 있어야만 실행할 수 있습니다.

이때 가장 많이 사용되는 WAS가 아파치 톰캣이라고 말할 수 있습니다.

아파치 톰캣은 오픈소스 소프트웨어로써 누구나 무료로 사용할 수 있습니다.

참고로 Tomcat은 '수고양이'를 뜻합니다. 톰과 제리의 톰이 생각나기도 합니다.

 

 

아파치 톰캣 설치 폴더 아래에 있는 bin폴더를 보면 확장자가 bat인 윈도우용 배치파일과 확장자가 sh인 쉘스크립트(shell script)파일이 있는 것을 확인할 수 있습니다.
쉘스크립트 파일은 linux나 맥 운영체제에서 실행 가능한 파일입니다.
윈도우 사용자라면 startup.bat파일을 더블 클릭하여 실행하고, 맥 운영체제나 linux를 사용하는 사용자는 startup.sh을 더블 클릭하여 실행합니다.

 

헐.. sh 가 이런의미였구나..

 

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

> 이런 오류가 발생했다. JAVA_HOME을 제대로 path에 지정을 안해줘서 생긴문제.

환경변수 편집 > path > %JAVA_HOME%bin 을 추가해준다.

 

아파치 톰켓 설치 폴더 아래의 bin폴더에 있는 shutdown.bat파일이나 shutdown.sh파일을 더블클릭하여 실행하면 아파치 톰캣이 종료됩니다.
혹은, 실행 중인 창을 닫아도 아파치 톰캣은 종료됩니다.
아파치 톰켓이 종료 된 후 http://localhost:8080으로 다시 접속해보면, 아래의 그림과 같이 오류 화면이 보여지는 것을 확인할 수 있습니다.

 

  1. Apache Tomcat 외에 WAS는 어떤 것 들이 있을까요?   

웹서버와 웹 어플리케이션 서버(was)는 다른 것이구요

대표적인 웹서버는 apache, nginx등이 있습니다.

대표적인 웹 어플리케이션 서버(was)는 apche-tomcat등이 있습니다

(tomcat의 풀네임은 apache tomcat입니다.)

 

apche웹서버와 apache-tomcat은 같은 아파치 재단에서 관리하기에 apache가 앞에 붙기도 하고 백엔드 기술 스택을 apche와 apache tomcat을 함께 사용하는 곳이 많아서 헷갈리실수도 있는데 역할과 제품이 다른 것입니다.

 

기술 스택 예 :

1. nginx와 apache tomcat을 사용한다

2. apache와 apache tomcat을 사용한다.

3. apache와 다른 was 제품을 사용한다.

4. nginx와 다른 was 제품을 사용한다.

 

이전 강의 웹개발의 이해 6) 웹서버 7) was를 다시 시청하셔서 각각의 역할을 이해하시기 바랍니다.

그리고 다른 was제품은 검색해보는 것은 개인적으로 해보시는 것을 추천드립니다.

 

2. WAS가 없으면 웹 어플리케이션은 왜 실행할 수 없을까요?  

WAS는 프로그램을 실행하는 환경인데 클라이언트가 요청을 보내면 WAS가 비즈니스 로직을 수행하고 응답을 클라이언트에게 보낸다. 그런 WAS가 프로그램 실행 환경이 없는 것이기 때문에 비즈니스 로직을 수행하거나 응답을 보낼 수가 없는 것이다.

 

 


URL 주소

http://localhost:8080/{프로젝트이름}/{URL Mapping값}

 

HTTP request에 첫번째줄에 메서드라는것이 있다.

get,post,put,delete 있다.

get으로 보낼때 서블릿에 doGet()으로 호출이 됨

 

reponse라는 객체는 응답할 내용들을 몽땅 모아서 추상화 해놓은 객체에 contentType을 정해줌

response.setContentType("text/html;charset=UTF-8");

텍스트 타입이고, charset을 잘 인식할 수 있게

 

화면에 보이게

PrintWriter out =response.getWriter();

package examples;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloServlet
 */
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out =response.getWriter();
		out.print("<h1>Hello Servelt</h1>");
	}

}

 


 

 

 

728x90