Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

기분좋음

국비 51 일차 본문

IT 포트폴리오/국비지원교육 Diary

국비 51 일차

기분좋음:) 2022. 3. 1. 01:50
반응형

JSP & SERVLET

 

기본적인 인터넷 동작원리

• [클라이언트] 사이트 주소를 입력하고 웹 페이지 요청

• [서버] 요청받은 웹페이지를 검색

• [서버] 검색된 웹페이지를 응답

• [클라이언트] 웹페이지를 본다.

 

요청과 응답은 HTTP라는 약속된 절차를 통해서 진행

요청하고 응답하는 페이지는 HTML문서로 이루어 진 웹 문서

 

동적 웹페이지 기술 필요

PHP, ASP, 서블릿/JSP

 

서버는 클라이언트의 요청을 처리해서 결과를 보여 주기 위한 웹서버(WS)

• 웹서버의 종류 : Apache, Nginx, IIS 등

 페이지 로직이나 데이터베이스 연동을 위한 비즈니스 로직이 구현된 웹 애플리케이션 서버(WAS)로 구성

• 웹 애플리케이션 서버의 종류: WebLogic, WebSphere,iPlanet, 9iAS, Jeus, Tomcat등

 

환경 구축

JDK                자바 개발도구                           1.8버전~

Eclipse            종합 개발도구(IDE)                     2020-03~

Apache Tomcat 웹서버+웹 어플리케이션 서버       8.0~

 

 

웹개발 통합 이클립스 설치하기 (2019-12 java EE -웹개발) -R

https://www.eclipse.org/downloads/packages/release

 

Eclipse Packaging Project (EPP) Releases | Eclipse Packages

 

www.eclipse.org

 

 

웹 애플리케이션 개발 환경 구축하기 톰캣 설치하기 Tomcat 9

https://tomcat.apache.org/

 

웹 프로그래밍이란

웹서버마다 시작될 때 자동으로 애플리케이션으로 인식하여 서비스를 올려주는 디렉토리

톰캣의 하위 디렉토리인 Webppas 디렉토리에 애플리케이션들이 있습니다.



Webapps 디렉터리에 있는 하위 디렉토리 또는 디렉토리가 압축된 war 파일은 하나의 애플리케이션으로 인식

Was의 종류에 따라 애플리케이션이 위치하는 디렉토리 이름이 다를 수 있다.


웹 애플리케이션은 하나의 디렉터리

디렉터리 안에 서비스하려는 문서들을 만들어 놓으면 웹에서 서비스된다.


웹 애플리케이션의 기본 구조 WEB-INF

 

필수 요소

WEB-INF
웹 애플리케이션 정보가 저장되는 곳 
classes
웹 애플리케이션이 수행하는 서블릿과 다른 일반클래스들이 위치
lib
웹 애플리케이션에서 사용되는 여러 가지 라이브러리 압축파일(jar 파일)이 저장되는 곳
web.xml
배치지시자로서 일종의 환경 설정 파일


HttpServlet클래스 

HTTP 프로토콜을 사용하는 웹 브라우저에서 서블릿 기능을 수행(서비스 처리)

Object ← Servlet ← GenericServlet ← HttpServlet ← 나의 서블릿 


서블릿으로 만들어지는 페이지 호출 방법
http://loacalhost:포트/애플리케이션명/서블릿파일명


웹 애플리케이션 경로를 "Context Path"라 한다
-웹서버에서 제공하는 웹 애플리케이션을 구분하기위해 사용
-톰캣에 등록해주어야 한다.(server.xml)

 


서블릿 코드를 분석

반드시 public으로 선언 & HttpServlet을 상속받아야 한다
HttpServlet의 주요 메소드를 사용 가능

doGet
doPost

HttpServletRequest request - 요청 처리를 위한 객체
HttpServletResponse resp - 응답 처리를 위한 객체


서블릿 클래스 요청을 위한 URL 매핑 or 어노테이션을 작성해야 한다.
매핑 주소는 기본값이 클래스 이름이지만, 변경 가능

src/main/webapp/WEB-INF/web.xml -Source

Servlet

-해당 클래스파일을 FirstServlet명칭으로 등록 → 클라이언트에서 FirstServlet요청이 오면 해당 클래스파일 전송

-상대위치로 표시(com.edu.test.FirstServlet)

 

사용자 요청

서버에게 FirstServlet이 있는지 요청

클라이언트에서 /FirstServlet이라는 요청이 오면..

 

서블릿의 실행 순서

1. 클라이언트로부터 처리 요청을 받는다.

2. 최초의 요청 여부 판단

3. 서블릿 객체 생성

4. init() 메소드 실행

5. service() 메소드 실행

 

한글 출력

한글이 깨지는 것을 방지하기 위해서는 서버가 클라이언트로 보내는 데이터의 문서타입과

한글을 지원하는 문자 set을 응답정보 헤더에 설정해서 보내야 합니다

HttpServletResponse의 setContentType() 메소드를 사용

 

한글 설정

resp.setContentType("text/html;charset=UTF-8"); 순서가 바뀔경우 깨짐

설정한 후 PrintWriter의 객체 생성  -getWriter() 결과 출력을 위한 출력 스트림 

 

• 서블릿의 라이프 사이클

 

  instance 생성    →     init()     →   doGet() 혹은 doPost()   →   destroy()

서블릿객체생성     최초 한번호출    요청있을때마다 호출       톰캣 해제시 (자원해체시)실행

 

브라우저에 적절한 URL 문자열을 이용하여 웹서버에 서블릿수행을 요청할 때 일정한 형식의 다양한 정보를 서버로 전달

• 클라이언트 IP주소, 포트번호

• 클라이언트가 전송한 요청 헤더정보 (클라이언트에서 처리 가능한문서 타입 의 종류, 클라이언트 프로그램 정보, 처리    가능한 문자셋 정보, 쿠키)

• 요청방식, 요청 프로토콜의 종류와 버전, 요청하는 파일의 URI, 요청 받은 서버의 정보

• 서버의 호트스 이름, 포트 번호

• 사용자가 서블릿 요청 시 추가로 전달한 정보

• 질의 문자열(name=value 형태)

 

HttpServletRequest 인터페이스의 get~() 메소드를 통해 추출

이 정보들은 service() 나 doget(), dopost() 메소드의 첫 번째 인자로 전달된다.

 

HttpServletRequest 인터페이스는 ServletRequest를 상속

• ServletRequest: 일반적인 네트워크 통신에서의 요청 관련 메소드 제공

• HttpServletRequest: HTTP 통신 기반의 요청 관련 메소드를 확장하여 제공

 

• ServletRequest 의 주요 메소드

void  setCharacterEncoding(String env) - 요청 페이지에 env의 인코딩 방법 적용 -POST 형식

String getParameter(String name) - name의 요청 인자값을 반환, 없으면 null, 값이 여러개면 첫번째 값만 반환

String[] getParameterValues(String name) - name의 요청 인자 값을 문자열 배열로 반환, 없으면 null

Enumeration getParameterNames()  -모든 인자의 이름을 Enumerationdmfh 반환

...등등

 

• HTTPServletRequest 의 주요 메소드

Cookie[]  getCookies() -클라이언트에 보내진 쿠키 배열을 반환

String  getQueryString() -URL에 추가된 Query 문자열을 반환

          ex) http://localhost:8000/edu/addInfo?name=jin&addr=Suwon (?이후에 있는 문자열)

String  getRequestURI()

-+  -클라이언트가 요청한 URI 반환, 프로토콜,서버이름,포트번호를 제외한 서버의 Context와 파일                                    의 문자열

String  getRequestURL()  -클라이언트가 요청한 URL 반환, URL은 프로토콜과 함께 주소 부분에 기술된 모든 문자열

String  getMethod()  - 요청방식인 get, post 중의 하나를 반환

...등등

 

 

모든 헤더 정보

• HTTP 프로토콜의 요청정보는 헤더와 몸체(body)로 구성,

  헤더는 두 번째 줄 이후부터는 “name:valaue” 형태로 헤더 정보들이 포함

 

 

Enumeration(스레드에 안전한 구조) - ArrayList,Vector등 사용

hasMoreElement()

enumeration

Iterator의 hasNext() 기능과 비슷하다.(스레드에 안전하지 않음) - ArrayList, HashSet등 사용

그룹안에 있는 요소에 접근할 때 인덱스나 키로 접근하는 것이 아닌 커서 개념으로 접근

 

둘다 collection객체

 

서블릿을 요청할 수 있는 방법

1. web.xml 수정

2. @WebServlet 어노테이션 이용

 

질의문자열 

웹 클라이언트에서 웹서버에 정보를 요청할 때 정해진 방식으로 데이터를 전달할 때 사용하는 문자열

정해진 규칙으로 인코딩되어 전달

  1. name=value형식으로 전달, 여러쌍이 있을경우 &로 구분자 사용
  2. 영문자, 숫자 , 일부 특수문자는 그대로 전달되고 나머지 문자는 %와 함께 16진수로 바뀌어 전달
  3. 공백은 + 로 변경되어 전달

ex) <form action ="서버프로그램 경로" method="요청방식> GET or POST

•action: 클라이언트가 태그 사이에 입력한 질의 문자열을 전달 받아 처리할 서버 프로그램을 지정(JSP , servlet 등)

 주로 상대경로 사용

 

form태그에 적용된 내용 전달 위해선 전송 버튼이 있어야 한다.

<input type="submit" value="전송">

 

GET전송 예제(.html)

<form action="test" method="GET">

POST전송 예제(.html)

<form action="test" method="POST">

 

 

서버에서는 클라이언트로부터 오는 모든 데이터를 요청 객체 (request)에 담아서 활용

필요한 데이터는 request객체로 부터 얻을 수 있다.

request.getParameter(‘이름’)

 

 

입력시 한글 처리

get방식으로 데이터 입력시 한글이 깨지는 경우 -server.xml 파일을 수정한다.

<Connector connectionTimeout="20000" port="8081" URIEncoding="UTF-8"

 protocol="HTTP/1.1" redirectPort="8443"/>

 

get방식으로 데이터 입력시 한글이 깨지는 경우 -doPost메소드에 코드추가

request.setCharacterEncoding("UTF-8");

반응형

'IT 포트폴리오 > 국비지원교육 Diary' 카테고리의 다른 글

국비 53 일차  (0) 2022.03.07
국비 52 일차  (0) 2022.03.03
국비 50 일차  (0) 2022.02.25
국비 49 일차  (0) 2022.02.25
국비 48 일차  (0) 2022.02.23