46일차 2023-05-11
JSP(Java Server Page)
JSP 개발환경 구축
apoche.Tomcat 설치
아파치 톰캣이란?
웹서버와 WAS(Web Application Server) 둘 다 가진 WAS이다.
웹 컨테이너란?
웹 애플리케이션을 실행할 수 있는 컨테이너
Servlet컨테이너와 JSP컨테이너를 합쳐서 웹 컨테이너라고 함
Servlet을 처리할 Servlet 컨테이너, JSP를 처리할 수 있는 JSP컨테이너)
일종의 WAS역할을 함
종류로는 오픈 소스 웹 컨테이너인 Tomcat, Jetty 등이 있고 상용인 Weblogic, WebShpere, JBoss(유료) 등이
있다.
Tomcat는 가벼운 WAS(Web Application Server)역할을 한다고 볼 수 있다.
전에 배운 Html5나 CSS, JavaScript, Jquery는 CSSL(Client Side Script Language) 정적인 성격을 가진다
JSP(Java Server Page)는 SSSL(Server Side Script Language) 동적인 성격을 가진다.
JSP파일은 웹페이지에서 f12(개발자 도구)에서 소스를 보면 자바코드는 보이지 않는다.
요청
Client(브라우저) ------->WAS(Web server, Web Container)
<------
응답
(여기서 html,css,javascript 같은 정적인 파일은 Webserver에서 바로 요청받아 응답한다.)
(하지만, JSP같은 동적인 파일은 Web server가 받지 않고, Web Container가 받아서 동적인 데이터를 처리, 그리고 jsp파일을 html파일로 변환시켜서 Web Server에 넘겨 Client에 응답한다.)
동적 데이터 처리시 Client -> Web Container -> DB-Web Container(JSP파일을 html파일로 변환) -> Client에 응답
WAS서버
.jsp파일을 실행하려면 톰캣 같은 서버 필요
없다면 브라우저에 그대로 다 나옴
.jsp코드를 변환시키는 건 tomcat이 함
Tomcat을 Server로 작동하기 위한 준비
환경변수 등록
JAVA_HOME등록
CATALINA_HOME등록
C:\Program Files\java\tomcat-10.1.8로 등록
서버충돌 방지
오라클 xe를 깔았는데 오라클xe버전의 포트가 8080이라서 8181로 바꿨음
Tomcat 포트는 8080
톰켓의 저장 위치는 C드라이브에 있는 java폴더로 옮겼음
cmd창에서 cd C:\Program Files\java\tomcat-10.1.8\bin
들어가서 st탭키 start.bat 실행 (이러면 톰캣 서버를 키는 거임)
끄는건 sh탭키 shutdown.bat실행(이러면 서버 끄는 것)
서버 충돌 방지 조심
start.bat실행하고 브라우저에 localhost:8080을 했을 때 고양이 웹페이지가 나타나야 됨
여기서 브라우저가 액세스가 거부된다.
이걸 허용시켜 주기 위해 java폴더 우클릭 속성-> 읽기 전용 풀기-> 보안탭에서 User 선택 -> 편집-> 수정권한을 줘야 돼서 모든 권한 클릭 -> 다 적용 눌러주면 됨-> 끝!!!
이클립스에서 프로젝트 생성
File->New->Dynamic Project
혹은 위 그림에서 맨 아래 Other... 클릭
그 담에 name작성
Project name : 프로젝트 이름
Target runtime : 웹 애플리케이션을 실행할 서버
Dynamic web module version : 서블릿 버전. 이클립스는 여기에 지정된 버전으로 소스 코드의 문법을 검사
여기서 next 2번 클릭 후 Generate web.xml deployment descriptor 선택 후 Finish
next1번째 실행 시
Source folders on build path : Java 소스 폴더
Default output folder : 컴파일 결과 출력 폴더
next2번째 실행 시
Context root : 웹 어플리케이션 이름. 기본값은 프로젝트 이름이다. 서버에 자동 배치할 때 이 이름으로 폴더를 만들어 배치한다. 웹 브라우저에서 실행을 요청할 때 여기에 지정된 이름을 URL에서 사용
Content directory : 웹 콘텐츠 파일을 저장할 작업 폴더의 이름을 지정한다. 서버에 자동 배치할 때 이 폴더의 내용물을 서버의 배치 폴더로 복사한다. 폴더의 이름은 어떤 것이든 상관없으나 협업 시 다른 개발자가 알아보기 쉽도록 가능한 기본 이름을 사용
Generate web.xml deployment descriptor : 웹 애플리케이션 배치 설명서 파일을 자동으로 생성하는 옵션이다. 프로젝트의 WEB-INF 폴더에 web.xml 파일이 자동으로 생성
한글로 변경
Window - Preferences - Web - JSP Files, HTML Files, CSS Files의 Korean, EUC-KR을 UTF-8로 변경
웹브라우저 설정 Chrome으로 변경
Window - Preferences - Web Browser - Use external web browser - Chrome Apply 하기
export 하는 법
File - Export - Web - WAR file - 저장할 위치 설정, Export source files, Overwrite existing file 이 2개 체크박스 선택
import 하는 법
File - Import - Web - WAR file - WAR file에 연결할 war파일 찾고 Finish
bin: 톰캣의 실행파일
conf: 톰캣의 설정 파일(xml)
lib:톰캣을 실행에 필요한 라이브러리 파일
webapps:우리가 만드는 jsp파일 저장 위치(디렉터리)
work:톰캣 웹 서버가 jsp파일을 실행하기 전에 해당 파일을 자바 서블릿으로 변환하고 컴파일함. 그 컴파일된 자바 클래스 파일과 jsp파일이 여기 저장됨(. class와. java파일이 존재함)
프로젝트 생성
HelloWorld.jsp, Template.jsp, controller폴더에 CalculatorSerclet.java, HelloSerclet.java , web.xml 생성
HelloWorld.jsp
결과)
위 결과에서 HELLO SERVLET버튼을 실행하기 위해
xml파일
servlet-name은 자기 마음, 하지만 <servlet>의 servlet-name과 <servlet-mapping>의 servlet-name 일치
<servlet-class>는 자바파일 이름
url-pattern은 HelloWorld.jsp에서 a태그의 href를 연동
HelloServlet.java
이때는 계산기가 안됨 servlet에 등록을 안 했으니깐
이제 계산기 기능을 하기 위해 xml 변경
CalculatorServlet.java
연동시키기 위해 form의 action의 값을 servlet-mapping의 url-pattern에 연결( /가 있다는 것 중요!!!)
결과)