일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 #REST API
- #홍콩2층버스
- JSP #표현언어 #page #include #taglib
- #홍콩 #홍콩여행 #홍콩한달살기 #홍콩사이언스파크 #홍콩산책 #홍콩야경 #홍콩턱돌이
- #홍콩 #홍콩여애 #홍콩한달살기 #베트남식당 #viet'schoice #외식 #카레 #양지머리카레 #양지머리 #고기쌀국수 #육수존맛 #레몬차 #밀크티 #shatin #홍콩쇼핑 #asus노트북 #어댑터 #홍콩돼지코
- #홍콩 #홍콩여행 #홍콩한달살기 #홍콩집밥 #홍콩생활 #홍콩베이징구스 #홍콩산책 #홍콩조깅 #홍콩우편함
- Servlet #JSP #GET #POST #클라이언트
- 서블릿 #Servlet #Request #Response #개발자
- 블로그 태그 #국비 #국비학원 #IT #개발자 #프로그래머 #신입 #코딩 #안드로이드 #자바 #JAVA #오라클 #Oracle #SQL #MYSQL #HTML #CSS #JAVASCRIPT #자바스크립트 #서블릿 #SERVLET #JSP #자바스프링 #데이터베이스 #
- forward #include #param
- JSP #액션태그 #
- #라이브러리 #개발자 #REACT #Bootstrap #Visual Studio
- #라이브러리
- 백엔드개념 #WAS
- #홍콩여행 #홍콩국가 #홍콩지도 #홍콩날씨
- #홍콩 #홍콩한달살기 #홍콩버스 #버스어플 #홍콩음식 #홍콩여행 #kmb #lwb#홍
- #라이브러리 #개발자 #REACT #Bootstrap
- #라이브러리 #개발자 #REACT #Bootstrap #REST API #웹 디자인 #디자인 툴
- #국비 #국비학원 #IT #개발자 #프로그래머 #신입 #코딩 #안드로이드 #자바 #JAVA #오라클 #Oracle #SQL #MYSQL #HTML #CSS #JAVASCRIPT #자바스크립트 #서블릿 #SERVLET #JSP #자바스프링 #데이터베이스 #프레임워크
- Today
- Total
기분좋음
국비 52 일차 본문
클라이언트가 입력 또는 선택한 질의 문자열들을 서버로 전달하기 위한 방식
GET 방식 (헤더 -요청방식, URI, HTTP버전)
id=client&name=oh 값으로
서버 프로그램(/edu/queryTest)에 요청시
GET /edu/queryTest?id=client&name=oh HTTP/1.1 HOST: localhost:8000
-질의 문자열을 요청 정보 헤더의 URI 에 포함
-서버로 전달되는 값이 브라우저 주소 줄에 노출
-데이터 길이가 255byte 미만
GET 방식으로 요청되는 상황
1. <a>태그를 클릭하여 요청시
2. 브라우저 주소 줄에 URL을 입력하여 요청시
3. <form>태그에서 method 속성을 생략하여 요청시
ex)<form action="test" method="GET>
POST 방식
POST 방식은 질의 문자열이 요청정보가 몸체에 포함
클라이언트 측에서 요청정보의 몸체에 질의 문자열들을 인코딩해서 보내고, 전달받은 서버 측에서는 다시 디코딩하는 추가 작업이 필요
POST 방식의 특징
1. 질의 문자열이 요청정보의 몸체에 포함되어 전달
2. 질의 문자열이 외부에 노출되지 않는다.
3. 질의 문자열의 길이에 제한이 없다.
4. <form>태그를 사용해야만 요청 가능
ex)<form action="test" method="POST">
action에는 상대경로로 주소를 지정-@WebServltet(/test) 같아야함
클라이언트로 부터 전달된 질의 문자열들을 서블릿에서 추출하는 방법
1. String getParameter(String name)
-질의 문자열로 넘어온 값을 하나씩 추출할 때 사용
-name이 중복되지 않고 유일한 값이 넘어올 때 사용
2. String[] getParameterValues(String name)
-같은 이름의 여러개의 변수 전달될 때 사용
-한번에 모든값을 추출하여 String 타입의 배열로 받고싶을 때 사용(반복문)
3. String getQueryString()
-클라이언트가 전달한 질의문자열 전체를 String으로 추출
-GET 방식에서만 사용가능 (URL의 ?다음 내용을 전부 추출)
4. ServletInputStream getInputStream() throws IOException
-HTTP의 요청정보 몸체와 연결된 입력스트림을 생성하여 반환
-POST 방식의 질의 문자열 전체를 한 번에 추출할 때 사용
-반환 받은 후엔 readLine() 메소드를 사용
ex) ServletInputStream input = req.getInputStream();
input.readLine(buf, 0, length)
- buf문자열 저장할 바이트 배열 -0 저장소에 저장할 시작위치 -length 저장할 문자열의 길이
서블릿은 웹에서 클라이언트로부터 요청 받아서 실행되는 자바 프로그램
주로 서비스 처리를 위한 데이터 준비 작업과 메소드 호출 역할
web.xml 환경설정 파일
<servlet><servlet-name><servlet-class>
-설정하려는 서블릿을 등록
<init-param>
-서블릿에 변수 전달시 사용
-서블릿 실행시 필요한 값을 외부에서 전달 받아 실행 →
서블릿 소스에서 직접 값을 지정해서 사용 or 동적으로 값을 할당시 외부에서 값을 전달가능
<inti-param>태그는 반드시 <param-name>과 <param-value>태그로 구성해야 한다.
변수의 이름지정 변수의 값을 지정
<load-on-startup>
웹 서비스가 시작될 때 서블릿 객체를 생성(메모리 생성시 필요-클라이언트 최초의 요청시)
ex)<load-on-startup>1</load-on-startup>
-태그의 값으로 숫자가 지정됨
-객체가 생성되는 우선순위를 의미(숫자가 낮을수록 우선순위 높다)
Web.xml의 <servlet>태그에 설정한 정보를 서블릿 페이지내에서 추출 시
ServletConfig객체(서블릿 실행시 자동 생성)에서 제공하는 메소드 사용
서블릿 실행요청시 순서(최소 실행시)
- 메모리에 로딩
- 서블릿 객체 생성
- ServletConfig 객체 생성(최초시 한번만 생성)
- init()메소드를 실행 -ServletConfig객체를 인자값으로 넘김
- HttpServlet Request, HttpServlet Resposne 객체생성
- Service(HttpServlet Request, HttpServlet Response)
서블릿 변수
웹 프로그램을 개발하는 방식
- 웹서버의 직접적인 호출로 실행하는 CGI방식
- 애플리케이션 서버가 실행하는 방식
CGI 프로그램은 클라이언트로부터 요청이 들어올 때마다 독립적인 프로세스가 만들어지며, 메모리에는 프로세스를 실행하기 위한 데이터가 로딩
(여러개의 프로세스 발생시 동일크기의 데이터가 메모리에 로딩 된다)
서블릿은 서블릿 컨테이너가 실행하며 해당서블릿이 최초의 요청인지에 따라 실행 순서가 달라집니다.
Init() 메소드 실행이 끝난 다음에는 service() 메소드가 호출된다.
Service()메소드는 서블릿이 최초 요청 여부와 상관없이 서블릿 요청이 있을 때마다 실행
Service() 메소드는 최초요청 시 만들어진 프로세스 안에 작은 프로세스를 만들고, 그 작은 프로세스 안에서 실행된다.
이와 같은 프로세스를 ‘스레드’라고 합니다.
서블릿 변수- 멤버변수 지역변수
여러 클라이언트가 하나의 서블릿을 동시 실행시, 공통 사용 데이터와 독립적 사용 데이터를 멤버변수와 지역변수로
구분해준다.
멤버변수는 객체 생성시 heap메모리에 생성(서블릿을 실행하는 클라이언트들이 공통으로 사용)
지역변수는 service()메소드가 사용시 stack메모리에 생성(클라이언트마다 독립적으로 사용)