설치(톰캣, 자바 환경변수)
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
특정문서의 이름을 주소 형식으로 요청하면 톰캣은 주소를 받아서 .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>
실행