요르딩딩

Servlet&JSP 프로그래밍 (04강 ~ 14강) 본문

[강의]/[서블릿 JSP 강의] (뉴렉처)

Servlet&JSP 프로그래밍 (04강 ~ 14강)

요르딩딩 2024. 6. 5. 16:34
728x90
반응형

[04. 톰캣 설치 ]

  1. 아파치 톰캣 사이트에서 압축파일 다운로드
  2. bin (바이너리) > startup.bat 클릭하면 실행됨 (바로 꺼진다면, java home이 환경변수 설정이 안되어있어서 그럼.)
  3. 실행 후 바로 종료된다면 !!!
    1. java home 경로 지정 
      1. window기준 : 시작 > 시스템 > 시스템정보 > 고급 시스템 설정 > 환경변수 > 시스템변수 > JAVA_HOME (jdk경로 지정해야함. 사용자마다 다름)
      2. JAVA_HOME변수가 없다면 생성.
    2. 또는 포트가 이미 사용중인지 확인 할것
  4. 재가동 후 브라우저에 localhost:8080 입력하면, 고양이 사이트가 자동으로 뜸 ->(index.jsp가 실행되는것임.)

 

[05. 웹문서 추가]

  1. 홈 디렉터리 : apache/webapps/ROOT/
  2. 웹문서가 위치 : apache/webapps/ROOT/nana.txt 
  3. 실행 : http://localhost:8080/nana.txt 
  4. 기본 문서 실행 : http://localhost:8080 또는 http://localhost:8080/index.jsp 
  5. 로컬IP 확인 : cmd > ipconfig 입력

[06. context 사이트 추가]

  1.  http:// IP(or hostname):Port/context/리소스들 
  2. apache/webapps/Root/it/news.txt 실행 : http://localhost:8080/it/news.txt
  3. 효율적인 관리를 위해 분리하기 (ROOT와 같은 개념으로 여러개 생성가능)
    1. webapps/ITWeb/news.txt
    2. webapps/ROOT
  4. 연결하기
    1. apache/conf/server.xml 열기
    2. <Context ~> 추가하기 
      1.  
      2. <Host name="localhost" appBase="webapps" unpackWARs ="true" autoDeploy="true"> <Context path= "it" docBase ="D:/~apache/webapps/ITWeb" privileged="true">
    3. 서버 재시작 

[07. 서블릿 프로그램 만들기]

  1. server Application Let (servlet) : 서버 어플리케이션 조각 (모든기능이 조각나있다.)
  2. public class 이름 extends HttpServlet 의 추상클래스를 통해서 was의 HttpServlet servlet을 참조할 수 있음. 
  3. 목록확인 : cmd > dir
  4. 실행 : Nana.java가 있는 폴더로 이동하여, javac Nana.java 입력 > 서블릿 못 찾음
  5. 옵션 확인 : javac
  6. 서블릿 라이브러리 위치 : apache/lib/servlet-api.jar
  7. 서블릿 사용하기 : javac -cp D:~/apache/lib/servlet-api.jar Nana.java

[08.서블릿 객체 생성과 실행]

  1. apache/webapps/ROOT/nana.txt
  2. apache/webapps/ROOT/WEB-INF/web.xml
  3. apache/webapps/ROOT/WEB-INF/classes/Nana.class 
    1. WEB-INF는 외부에서 접근하면 안된다.
  4. classes폴더 생성 후 경로를 설정해줘야 한다.
    1. apache/webapps/ROOT/WEB-INF/web.xml 열기
    2.  
    3. <servlet> <servlet-name>na</servlet-name> <servlet-class>Nana</servlet-class> </servlet> <servlet-mapping> <servlet-name>na</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
  5. 서블릿 코드 실행 : http://localhost:8080/hello
    1. 흰화면이 정상, 오류가 안나면 됨.

 

[09. 서블릿 문자열 출력]

  1. 자바 > 콘솔(UI)/웹/윈도우 > 프로그래밍
  2. HttpServletRequset request, HttpServletResponse response
  3. 텍스트파일의 java파일을 실행할 경우
    1. java파일 > 컴파일하여 class파일로 만든 후 > 톰캣의 ROOT 하위로 옮기고 > 톰캣 재가동
  4. 쓰기는 stream계열과 writer계열이 있고, 다국어의 경우 writer계열을 사용한다. (한국어는 다국어이니깐 writer계열사)

 - stream계열 사용하여 출력하기 - 

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Nana extend HttpServlet{
 public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
      OutputStream os = response.getOutputStream(); // 출력을 위한 Stream계열 사용
      PrintStream out = new PrintStream(os, ture); // 바로 flush(출력) 하겠다.
      out.println("Hello Servlet!!");
  	}
  }

 

- 다국어 Writer계열 사용하여 출력하기 - 

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Nana extend HttpServlet{
 public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
      
      PrintWriter out = response.getWriter // HttpServletResponse의 Writer계열 사용하기
      out.println("Hello Servlet!!");
  	}
  }

 

 

[10.웹 개발을 위한 이클립스 IDE 준비하기]

 

  1. ctrl + F11 = 코드수정 > 컴파일 > 배포 > 톰캣 서버 재시작 > 브라우저로 요청
  2. 이클립스 다운로드 > workspace생성 > 톰캣 설정

[10. JSP프로젝트의 web.xml에서 빨간색 밑줄로 오류가 발생한다면.]

  1. Multiple Aunotation~~~에러 발생
  2. 프로토콜이 http >  보안이 강화된 https로 바뀌었기때문이다.
<?xml ~
<web-app xmlns:xsi = "http:// ~~"   // 빨간줄 오류 발생시 http -> https로 모두 변경하면 됨~!!!

 

[11. 이클립스를 이용한 서블릿 프로그래밍]

  1. RUN 실행시 홈디렉터리에 있는 문서를 실행함 : index.html 실행됨.
    1. 톰캣의 디렉터리로 옮겨지고 > 톰캣이 실행되고 > 옮겨진 파일이 실행되는것이다.
  2. web.xml에서 url-pattern을 servlet에 해당하는 class파일에  매핑시켜준다

[12. 어노테이션을 이용한 URL 매핑]

  1.  @WebServlet("/hello") : 어노데이션을 이용한 URL 매핑하는 방법 
  2.  web.xml에 서블릿매핑 정보를 사용하지 않고, 어노테이션으로 바로 활용하기 위해서, web.xml의 <web-app ~ metadata-complete="false"로 해줘야한다.
    1. 이것은 빌드유형이 메이븐인 스프링프로젝트에서는 따로 사용하지 않는듯 하다.
  3. 즉, URL을 매핑하는 방법은 2가지이다
    1. web.xml의 <servlet>, <url-pattern> 이용한 방법
    2. @WebServlet("/hi") 이용한 방법 ---> 깔끔하게 분업화된 내용을 적용할 수 있다.

[13. Servlet 출력 형식의 이해]

  1. println이 브라우저에서 줄바꿈이 안되는 이유?
    1. HTML마크업 언어를 통해서 화면에 랜더링 된다. 그러므로 <br>태그를 써야한다.
    2. 크롬에서는 왜 <br> 태그가 그냥 나올까? 
      1. 브라우저에 컨텐츠 형식을 알려주지 않은 경우, 자의적인 해석을 한다.
      2. html(엣지)해석하냐 text(크롬)로 해석하냐 차이가 있음

[14. 한글과 콘텐츠 형식 출력하기]

  1. ISO-8859-1 (인코딩방식) : 서버에서 한들을 지원하지 않는 문자코드로 인코딩한 경우
    1. 1바이트씩 보냄
  2. UTF-8 (인코딩 방식) : 서버에서는 UTF-8로 인코딩해서 보냈지만 브라우저가 다른 코드로 잘못 해석한 경우
    1. 한글은 2바이트씩 보냄
  3. 인코딩 방식을 지정해 줘야한다.
    1. response.setCharacterEncoding("UTF-8");
    2. 브라우저에서도 인코딩 방식을 변경해줘야한다.
    3. 이렇게 2개 모두 설정해주기 불편하므로, Response Header에 인코딩 방식을 넣어줘야한다.
      1. repoonse.setContentType("text/html; charset=UTF-8"); // 브라우저에 인코딩 방식 설정!!!
      2. 헤더에 인코딩 방식이 전달됨.
    4. 2개의 코드가 세트로 항상 작성되도록 할것.
      1.  response.setCharacterEncoding("UTF-8"); // 인코딩 방식 설정!!! (이것만하면, 브라우저의 인코딩 방식도 따로 지정해줘야한다.) ->이걸로 보내니!!
      2. repoonse.setContentType("text/html; charset=UTF-8"); // 브라우저에 인코딩 방식 설정!!! 이걸로 읽어라!!
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Nana extend HttpServlet{
 public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
      response.setCharacterEncoding("UTF-8"); // 인코딩 방식 설정!!! (이것만하면, 브라우저의 인코딩 방식도 따로 지정해줘야한다.)
      repoonse.setContentType("text/html; charset=UTF-8"); // 브라우저에 인코딩 방식 설정!!!
      PrintWriter out = response.getWriter // HttpServletResponse의 Writer계열 사용하기
      out.println("Hello Servlet!!");
  	}
  }

 

 

728x90
반응형
Comments