일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- #홍콩여행 #홍콩국가 #홍콩지도 #홍콩날씨
- #라이브러리 #개발자 #REACT #Bootstrap #Visual Studio
- 서블릿 #Servlet #Request #Response #개발자
- #라이브러리 #개발자 #REACT #Bootstrap
- #홍콩 #홍콩여애 #홍콩한달살기 #베트남식당 #viet'schoice #외식 #카레 #양지머리카레 #양지머리 #고기쌀국수 #육수존맛 #레몬차 #밀크티 #shatin #홍콩쇼핑 #asus노트북 #어댑터 #홍콩돼지코
- #라이브러리 #개발자 #REACT #Bootstrap #REST API #웹 디자인 #디자인 툴
- #홍콩쌀국수 #탐차이
- #홍콩 #홍콩여행 #홍콩한달살기 #옥토퍼스카드
- 백엔드개념 #WAS
- #홍콩 #홍콩여행 #홍콩한달살기 #홍콩집밥 #홍콩생활 #홍콩베이징구스 #홍콩산책 #홍콩조깅 #홍콩우편함
- #홍콩2층버스
- JSP #액션태그 #
- #홍콩 #홍콩한달살기 #홍콩버스 #버스어플 #홍콩음식 #홍콩여행 #kmb #lwb#홍
- #라이브러리 #개발자 #REACT #Bootstrap #REST API
- #홍콩 #홍콩여행 #홍콩한달살기 #홍콩사이언스파크 #홍콩산책 #홍콩야경 #홍콩턱돌이
- forward #include #param
- #라이브러리
- Servlet #JSP #GET #POST #클라이언트
- 블로그 태그 #국비 #국비학원 #IT #개발자 #프로그래머 #신입 #코딩 #안드로이드 #자바 #JAVA #오라클 #Oracle #SQL #MYSQL #HTML #CSS #JAVASCRIPT #자바스크립트 #서블릿 #SERVLET #JSP #자바스프링 #데이터베이스 #
- JSP #표현언어 #page #include #taglib
- #국비 #국비학원 #IT #개발자 #프로그래머 #신입 #코딩 #안드로이드 #자바 #JAVA #오라클 #Oracle #SQL #MYSQL #HTML #CSS #JAVASCRIPT #자바스크립트 #서블릿 #SERVLET #JSP #자바스프링 #데이터베이스 #프레임워크
- Today
- Total
기분좋음
국비 51 일차 본문
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
웹 프로그래밍이란
웹서버마다 시작될 때 자동으로 애플리케이션으로 인식하여 서비스를 올려주는 디렉토리
톰캣의 하위 디렉토리인 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
-해당 클래스파일을 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()
Iterator의 hasNext() 기능과 비슷하다.(스레드에 안전하지 않음) - ArrayList, HashSet등 사용
그룹안에 있는 요소에 접근할 때 인덱스나 키로 접근하는 것이 아닌 커서 개념으로 접근
둘다 collection객체
서블릿을 요청할 수 있는 방법
• 1. web.xml 수정
• 2. @WebServlet 어노테이션 이용
질의문자열
웹 클라이언트에서 웹서버에 정보를 요청할 때 정해진 방식으로 데이터를 전달할 때 사용하는 문자열
정해진 규칙으로 인코딩되어 전달
- name=value형식으로 전달, 여러쌍이 있을경우 &로 구분자 사용
- 영문자, 숫자 , 일부 특수문자는 그대로 전달되고 나머지 문자는 %와 함께 16진수로 바뀌어 전달
- 공백은 + 로 변경되어 전달
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");