JSP

46일차 2023-05-11

choi Hoon 2023. 5. 11. 21:50

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... 클릭

Dynamic Web Project 선택

그 담에 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에 연결( /가 있다는 것 중요!!!)

결과)