JSP

설치(톰캣, 자바 환경변수)

LRWoo 2023. 7. 28. 21:48
728x90
반응형

https://www.eclipse.org/downloads/packages/release/2019-06/r

 

 

2019-06 R | Eclipse Packages

444 MB 5,259 DOWNLOADS The Modeling package provides tools and runtimes for building model-based applications. You can use it to graphically design domain models, to leverage those models at design time by creating and editing dynamic instances, to collabo

www.eclipse.org

설치파일 다운로드 

 

 

 

 

Tomcat 8 클릭  >  Core - zip 클릭 후 압축파일 다운로드 

 

오라클 

운영체제 비트에 맞는 버전 골라서 다운로드 

 

 

이클립스 다운로드 

 

 

 

준비물 끝 

전부 압축풀어주고 jdk. exe파일 실행해서 자바 파일 설치 

 

 

이클립스 설치 

eclipse-java (x)

eclipse-jee (o)

 

 

ALT를 누르면서 바탕화면으로 끌어놓으면 바로가기가 만들어진다. > 이름변

 

 

작업공간을 지정한 폴더 생성

 

이클립스 실행 

workspace-jsp 클릭해서 경로를 

 

 

저 경로로 workspace 지정 후 실행 

 

이클립스 환경설정 

 

web Browser -  Use external web browser  - Chrome

기본 브라우저 설정 

 

 

Workspace - other - UTF-8

 

 

 

server - runtime Enviroments - Add

 

 

 

 

 

next >  browse 

 

 

 

 

 

 

 

 

Web - CSS, HTML ,JSP  Encoding 전부 UTF-8로 변경 

 

 

Apply and Close 

 

Help - about Eclipse IDE 클릭 

 

 

JSP는 꼭 Eclipse IDE for Enterprise Java Developers 여야 한다. (확인 필수)

 

 

 

File - New - Dynamic Web Project 

 

파일이름 지정 

 

Dynamic web module version  = 3.1

 

Target runtime = Apache Tomcat v8.5  

 

finish 

 

 

webcontent 마우스 오른쪽 -> new - jsp FIle - 파일이름 지정 - finish

 

파일이름 index.jsp 

 

 

JAVA의 환경변수와 PATH경로가 잡혀있지 않기때문에 JAVA파일을 컴퓨터가 인식할 수 없다. 

 

 

 

 

 

윈도우 + R키를 눌러서  실행창에 sysdm.cpl

 

 

고급 - 환경변수 - 

 

시스템변수 추가 

JAVA_HOME  변수 추가 

 

jdi 1.8.0 파일을 찾아서 bin이 보이게 (선택x) 폴더클릭 후 확인

 

 

 

환경변수 추가

 

CATALINA_HOME  변수 추가 

 

 

디렉터리 찾아보기 후 아파치톰캣 (위에서 압축해제 한 파일)을 선택후 확인 

 

 

PATH (경로추가) -편집 클릭 

경로 2개 새로만들기 

%JAVA_HOME%\bin

%CATALINA_HOME%\bin 

 

확인 -> 확인 -> 확인 

 

 

JSP: HTML문서가 베이스 + 자바 
Java Server Page
자바가 서버를 구성하는 페이지 

첫번째 이미지는 정적방식이다. client에서 요청을 보내면 그대로 서버가 받아서 결과를 돌려주는 방식 

 

두번째 이미지는 동적방식(jsp)이다. client가 요청을 보내면 jsp파일을 java파일로 바꿔

html + jsp를 결합한 방식으로  class 파일로 만들어서 response에 담아서 client에게 요청한다. 

jsp의 동작방식

 

 

JSP
특정문서의 이름을 주소 형식으로  요청하면 톰캣은 주소를 받아서  .class 객체를 톰캣 메모리에 올려놓고 
전체 객체를 HTML 코드와 JAVA 코드를 합쳐서 새로운 텍스트를 만들어낸다. 

 

기존의 vscode에서 만들었던 vs파일들은 누가 언제 요청해도 똑같은 결과를 만들어서 보여준다
하지만 dynamic web project는 누가 요청하나, 언제요청하냐, 어디서 요청하냐에 따라서
서로다른 결과를 보여준다.
정적 웹 = static
동적 웹 = dynamic 
서로 다른 결과를 만들려고 하면  당연히 PHP, NodeJS, Python, JAVA와 같은  프로그래밍 언어가 개입해야 한다. 

 

<h1>Hello</h1>
	<hr>
	
	<%
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a hh:mm");
		String now = sdf.format(date);
	%>
	
	<h3>지금은 <%=now %>입니다.</h3>

 

 

CTRL + F11 실행

 

 

 

C:\Users\홍길동\Desktop\강사님파일\JSP\설치\workspace-jsp\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\test\org\apache\jsp

 

이경로에 class 파일과 java파일이 있다. 

 

java 파일을 열어보면 

page _context라는 걸 가져오고 

servletContext를 가져오고 

application ,session 등등 을 실행시킨다. 

 

 

이렇게 해서 문서를 만들면 
(응답)response에 들어간다. 

java가 먼저 처리해놓은 것을 browser가 받는다. 

 

이 .java를 다시 위의 .class로 바꾼다. 

클래스파일은 컴퓨터의 언어라서 txt파일을 클릭해서 열어본다고 해도 사람이 알아볼 수 없다. 

 

 


 

 

Jsp가 servlet으로 바껴서 실행된다. 

 

 

client가 요청을 보내면 servlet Container(서블릿이 모여있는 통)이 만약 처음받는 값이면
Servlet에서 Thread를 미리띄워놓는다. 이때 service에  받은요청 request와 response가 담기는데,
이 때 response는 거의 빈 통이다. 받은 요청에 따라서 response를 서버가 미리 만들어놓는 것이다.
그 후 service가 요청을 처리하고  response에 데이터를 채워서 다시 servlet Container로 보내주면
거기서 html + jsp파일을 결합한 class 파일로 client에게 전송시켜서 화면으로 출력시켜준다. 

 

 

request : 클라이언트에서 보낸 메시지가 담겨있는 객체
response :  클라이언트에게 보낼 메세지를 담기위한 객체 (현재는 거의 비어있는 상태 =)
글자를 이용하여 메시지를 주고받기 때문에 글자 인코딩 규칙은 필수이다 (UTF-8)

 

Java Resources > src > 패키지 > 클래스 파일 생성 

 

Generate Deployment .. 클릭

 

web.xml 생성 -> 더블클릭으로 열기 

 

web.xml

Source탭을 눌러서 변경 

 

servlet태그로 요소넣어주기

	<servlet>		
		<servlet-name>MyfirstServlet</servlet-name>
		<servlet-class>test.MyServlet</servlet-class>
	</servlet>			<!-- class이름을과 패키지이름이 똑같아야한다.  -->
	
	<servlet-mapping>
		<servlet-name>MyfirstServlet</servlet-name>
		<url-pattern>/myservlet</url-pattern>
	</servlet-mapping>

 

 

자바프로젝트로 패키지와 클래스를 만든다. 

 

package test2;

import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;


public class Main {
	public static void main(String[] args) throws Exception {
		
		Socket so = new Socket("192.168.112.7", 8080);
		PrintWriter out = new PrintWriter(so.getOutputStream());
		Scanner in = new Scanner(so.getInputStream(), "UTF-8");
		Scanner sc = new Scanner(System.in);
		
		
		String input = null;
		System.out.println("=== request ===\n");
		while("".equals(input) == false) {
			input = sc.nextLine();
			out.write(input + "\r\n");
		}
		out.flush();
		System.out.println("===============\n");
		System.out.println();
		
		System.out.println("=== response ===\n");
		while(in.hasNextLine()) {
			System.out.println(in.nextLine());
		}
		System.out.println("===============\n");
		System.out.println();
		
		out.close();
		sc.close();
		in.close();
		so.close();
		
	}

}

 

실행 CTRL + F11 

 

톰캣에 보내주는 요청)

post요청방식 GET  어느경로에있는 파일 인지 HTTP의 버전 

호스트 번호 :  : 포트번호 

 

서버가(톰캣) 응답 : index.jsp에 있는 문서 내용을 출력

 

 

request

 

dynamic project에서 Ex01.jsp 생성

<body>

	<h1>request</h1>
	<hr>
	
	<h3><%=request.getProtocol() %></h3>
	<h3><%=request.getServerName()%></h3>
	<h3><%=request.getServerPort()%></h3>
	<h3><%=request.getRequestURI()%></h3>
	<h3><%=request.getMethod() %></h3>

</body>

 

실행

728x90
반응형