* 학원에서 배운 내용을 토대로 작성
JSP는 (Java Server Page) HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성해 웹 브라우저에 돌려주는 언어로 백엔드 개발에 속한다고 합니다.
- JSP 코드를 해석하고 서블릿(Servlet) 으로 변환하는 등의 작업을 수행하기 위한 서블릿(JSP) 컨테이너도 필요합니다.
먼저 JSP 개발 환경 구성을 위해 필요한 것들이 있습니다.
(2021년 3월 기준 - 최신버전들..)
1. JDK
2. 이클립스
3. 아파치 톰캣
자바를 하시려고 이클립스를 설치하신 분들이라면 1, 2번을 건너뛰고 3번부터 시작하시기 바랍니다.
1. JDK 설치 (Java SE Development Kit 15.0.2) - OS에 맞게 설치
- www.oracle.com/kr/java/technologies/javase-jdk15-downloads.html
2. 이클립스 설치
- www.eclipse.org/downloads/packages/
* 우선 여기까지 설치 후 환경설정을 해줘야 합니다. (윈도우 시스템 환경변수 등록)
- 바탕화면의 내 PC(오른쪽 마우스 클릭) -> 속성 -> 왼쪽 메뉴 목록에 고급 시스템 설정 -> 환경 변수 -> 시스템 변수창에서 새로 만들기 -> 변수 이름과 변수 값 등록
- 윈도우 화면에서 좌측 하단에 있는 시작메뉴 버튼 마우스 오른쪽 클릭 -> 시스템 클릭 -> 정보 : 관련 설정 : 시스템 정보 클릭 -> 고급 시스템 설정 -> 여기는 위와 같음
///// JDK 환경 변수 등록
* 변수 이름 : JAVA_HOME
* 변수 값 : C:\Program Files\Java\jdk-15.0.2
- JDK 설치 경로(기본 경로에 설치했으면 사진에 보이는 경로와 같을겁니다.)
* 변수 이름 : CLASSPATH
* 변수 값 : .;
- 나중에 JSP 사용을 위한 변수입니다.
* Path 등록
- Path 클릭 -> 편집 클릭
- 새로만들기 > %JAVA_HOME% 입력
- 3번의 위로 이동을 계속 눌러 맨 위로 올려주고 아래 사진과 같이 확인을 눌러줍시다.
- 나머지 창도 다 확인을 눌러주시면 환경변수 등록은 끝이 납니다. 자 이제 확인을 해야겠죠
* 윈도우 키와 R키를 눌러 'cmd'를 켜줍시다.
- 'java -version' 을 입력후 아래와 같이 뜬다면 이상없이 마무리 된겁니다.
* JDK 설치와 환경변수 등록 완료
마무리 : 다운 받았던 이클립스 알집파일을 열어 압출 풀기!!
- 폴더안에 있는 'eclipse.exe' 실행
- Workspace 경로는 찾기 편한곳에다가 지정해두어도 괜찮습니다.
- Launch 클릭 하면 완료 ~ (자바 프로젝트 생성법은 다음에 쓸테니... 다른 블로그를 찾아보시죠 )
3. 아파치 톰캣
- 사이트 : tomcat.apache.org/
* 저는 9 버전으로 하겠습니다.
(높은 버전을 사용하지 않는 이유는 아직 확실한 검증이 되지 않았기 때문에 잘 사용하지 않는다고 합니다.)
* 아래 사진에 파란색 눌러주세요 Installer 입니다. 자동 설치파일이라고 생각하시면 편해요
* 실행합니다. (직접 캡쳐한겁니다.)
- 첫화면 부터 그냥 Next -> I Agree -> Next 여기까지만 진행해 주시면 아래와 같이 나옵니다.
- Server Shutdown Port 가 처음에 -1로 되어있는데 80으로 바꿔줍시다 (기본값이라고 생각하시면 됩니다.)
- 처음에 '-1'로 되어있어서 그냥 다음 눌렀다가 이클립스 내에서 톰캣 서버가 작동하지 않는 문제가 발생하더군요 이 부분은 따로 알아보려 합니다. (내가 잘못한거 일수도...)
- Server Shutdown Port란.... (itgala.xyz/what-is-tomcat-shutdown-port/)
* 원격으로 종료할 수 있는 포트를 지정하는거 같네요
- 여튼 80으로 입력하고 넥스트를 누릅니다. 아래의 사진과 같은 화면이 나와요
* JDK 경로가 맞는지 다시 확인해 주시고요
- 톰캣의 기본 설치 경로입니다. 이것도 기본으로 하고 Install을 합니다.
- Show Readme 체크는 풀고 바로 톰캣을 실행시키게 위에만 체크해 줍시다.
* 여기까지가 설치 마무리 입니다.
* 작동확인과 JSP 환경설정하기
이제 톰캣이 제대로 작동하는지 또는 이상이 없는지 확인을 해봐야겠죠 ?
* 먼저 환경 변수를 등록하겠습니다.
2번에 등록했던 CLASSPATH를 수정하겠습니다
- 초기
변수 이름 : CLASSPATH
변수 값 : .;
- 수정
변수 이름 : CLASSPATH
변수 값 : .;%JAVA_HOME%\lib\tools.jar
* 모조리 확인을 눌러주시고요
- 우측 하단에 보이는 저것을 더블클릭합니다.
- 보시는 바와 같이 Started로 되어 있으면 작동중인겁니다.
- 새로운 환경 변수를 입력했으니 혹시 모르니까 Stop을 했다가 다시 Start를 눌러 줍니다.
- 실행 상태를 확인 후 인터넷 창 url에 ' localhost:8080 ' 을 입력해 줍시다.
* 처음 톰캣을 설치할때 기본포트를 8080으로 지정해서 저렇게 입력한겁니다.
자 입력하면 ~~
잠시만요
짜잔 작동하게 했습니다
... 사실
- 처음 지정해두었던 '8080' 포트가 충돌이 일어나 발생한 문제였고 포트번호를 '8090'으로 변경해주니 정상적으로 돌아가는것을 확인했습니다.
(톰캣 포트 변경법 : geundung.dev/79)
여튼 되는것을 확인했고 그 다음으로 넘어가겠습니다.
* 지금까지 JDK, 이클립스, 톰캣을 설치했고 톰캣이 정상작동하는지까지 봤는데요 이제부터가 중요합니다.
바로 서블릿 구현 환경을 설정해줄건데 잘 따라해주세요.
1. Apache가 설치된 경로 아래의 lib 폴더로 들어갑니다. (기본 설치경로 기준)
- C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib
2. servlet-api.jar 을 복사해줍니다. (복사입니다 꺼내오기 아니에요)
3. 복사한 파일을 JDK 설치폴더인 lib 안에 붙여넣기 해줍니다.
- C:\Program Files\Java\jdk-15.0.2\lib
4. 환경 변수인 CLASSPATH를 또 수정해 줍니다.
- " ;%JAVA_HOME%\lib\servlet-api.jar "
* 이클립스에서 서블릿 동작을 확인하기 전 톰캣에서 먼저 확인해볼텐데요 봅시다.
1. 톰캣 기본 경로 에서 'webapps'라는 폴더에 들어갑니다.
- C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps
2. Webapps 폴더안에 ServletTest 폴더를 생성해줍니다.
3. ServletTest 폴더안에 WEB-INF 폴더를 생성해줍니다.
4. WEB-INF 안에 3개의 폴더를 생성해줍니다
- src : 서블릿 클래스로 컴파일 하기 위한 소스 파일들을 넣어 놓은 폴더
- classes : 실제로 서비스 될 서블릿 클래스가 들어가는 곳
- lib : 서블릿 클래스들이 구동되는데 필요한 추가 라이브러리 파일들을 넣는곳
5. 서블릿 소스를 구현해 봅니다. (예제 코드입니다.)
- 메모장으로 작성
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");
response.setCharacterEncoding("euc-kr");
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><HEAD><TITLE>ServletTest</TITLE></HEAD>");
out.write("<BODY><H1>");
out.write("what time");
out.write(Integer.toString(hour));
out.write("hour ");
out.write(Integer.toString(minute));
out.write("minute ");
out.write(Integer.toString(second));
out.write("second");
out.write("</H1></BODY></HTML>");
out.close();
}
}
6. WEB-INF 안에 있는 3개의 생성 폴더 중 src안에 ServletTest.java로 저장해줍니다. (메모장 저장 시 확장자명을 꼭 .java 붙여서 저장해주세요)
7. 윈도우 + R키를 눌러 cmd를 실행해 줍니다.
* 첫 입력줄에 cd를 입력후 띄어쓰기 그 다음 복사한 경로를 붙여줍니다 (마우스 오른쪽 클릭으로 복붙)
입력 : ' cd C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\ServletTest\WEB-INF\src '
- 그러면 해당 루트로 이동하게 됩니다.'
8. " javac -d ../classes *.java " 입력
9. 에러가 안나는지 확인하기
* 이렇게 아무줄 없이 아래처럼 뜬다면 정상 작동한겁니다.
* symbol 에러가 날시 (환경변수 오타 및 경로 필히 확인과 servlet-api.jar 파일이 jdk에 옮겨졌는지 확인하세요!)
10. 이제 web.xml 을 넣어줍시다.
* 웹 컨테이너에게 사용자가 지금 접근한 주소가 어떤 서블릿이고 그 서블릿 클래스의 위치는 어떠한지 알려주기 위해 필요한 정보들이 적혀있는 파일
* 웹 애플리케이션을 구동시키는데 있어 가장 중요한 설정파일
* 경로 : (원래 있던 톰캣의 루트 디렉토리)
- C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\ROOT\WEB-INF
- 안에 있는 web.xml 파일을 복사해줍니다.
* 경로 이동 : 우리가 만든 서블릿 디렉토리
- C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\ServletTest\WEB-INF
- 복사한 web.xml을 붙여넣어줍니다.
* 붙여넣은 web.xml 파일을 수정하겠습니다.
* 마우스 오른쪽 클릭 -> 연결 프로그램 -> 메모장
* 텍스트 파일로 열리게 되면 소스를 넣어줄건데요
* 저 공간에다가 이 소스를 넣어줍시다.
<servlet>
<servlet-name>ServletTest</servlet-name>
<servlet-class>ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
* 자고로 web.xml을 수정할 시 톰캣을 재시작 해줘야 합니다 (필수)
실행
- http://도메인명/프로젝트명( 폴더명 )/서블릿
- http://localhost:8090/ServletTest/test
- 새로고침으로 매번 시간이 바뀌는것을 확인해봅니다.
----- 최종 단계 JSP 코드 넣어서 실행시키기
- 서블릿 소스를 살펴보면 <html>,<body> 등 html 태그를 사용자의 브라우저에 전송하기 위해 response.getWrite() 를 사용해 printWriter 객체를 얻어와서 일일이 write 메소드를 사용해서 보내야 합니다.
- 사용자에게 보여주기 위한 페이지의 HTML 코드 길이가 짧다면 큰 지장은 없지만, 몇백이 넘어가는 라인의 HTML 코드로 되어있는 페이지를 이러한 방식으로 만들려고 한다면 정말 힘들고 유지보수에도 심각한 문제가 생깁니다.
- 이러한 단점을 보완해주기 위해 만들어진것이 바로 JSP 입니다.
(학원 강의 내용 퍼옴)
- JSP 파일을 생성하겠습니다.
* 코드 작성 (메모장으로)
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import="java.util.Calendar"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%
Calendar c=Calendar.getInstance();
int hour=c.get(Calendar.HOUR_OF_DAY);
int minute=c.get(Calendar.MINUTE);
int second=c.get(Calendar.SECOND);
%>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Servlet Test</title>
</head>
<body>
<h1>what time<%=hour %>hour<%=minute %>minute<%=second %>second.</h1>
</body>
</html>
* 작성한 다음 저장 후 WEB-INF 폴더가 아닌 상위 디렉토리인 ServletTest에 저장합니다.
* http://localhost:8090/ServletTest/ServletTest.jsp
(8090은 톰캣 설치시 자기가 지정한 포트번호 입니다. 8080으로 했는데 8090으로 접속하시면 안됩니다.)
* 접속 성공 화면...... (저거는 나중에 수정토록 ...)
** 여기까지가 톰캣으로 하기 성공입니다. 너무 길어서 이클립스로 하는 것은 다음 포스팅에 올리도록 하겠습니다.
나머지 궁금한 부분은 구글에 찾아보세요 ㅋ
'자바과정 > JSP' 카테고리의 다른 글
JSP 예습겸 Scope (0) | 2021.03.08 |
---|---|
JSP 오늘의 강의내용 끄적... (0) | 2021.03.08 |
JSP 구구단 (자바코드) (0) | 2021.03.08 |
이클립스에서의 JSP (0) | 2021.03.06 |
JSP 기초 1일차 (0) | 2021.03.05 |
댓글