인터넷주소의 구조는 크게 3가로 이뤄져있다
1. 도메인 2. 어플리케이션 3. 소스페이지
http://192.168.0.100:9090/testsite/NowServ?name=value&name=value
프로토콜 : 서버와 클라이언트가 통신할 때 사용할 프로토콜
IP - 서버(컴퓨터)를 찾는 주소
- localhost : 자신의 컴퓨터를 가리키는 가상 IP 주소이다. 곧바로 자신의 컴퓨터를 찾아간다 (내부접속)
PORT - 컴퓨터내에 있는 프로그램을 찾는 주소
21 – ftp, 23 – telnet, 25 – smtp, 110-pop3, 80 – http(웹서버), 443 - https
어플리케이션 - 서버에서 자원의 위치, 폴더
소스페이지 - 웹페이지
파라미터 - ? 뒤의 인자값 (= 쿼리 문자열)
- 이 소스 페이지를 호출할 때 넘겨주는 인자값
※ 웹어플리케이션
= testsite(를 의미함)
ㄴ context, 웹프로젝트, 웹사이트 라고도 불린다
▶ 서블릿 (Servlet)
- 웹페이지를 만들 때 사용되는 자바 기반의 웹 어플리케이션 프로그래밍 기술이다.
▶ 웹어플리케이션 구성요소
웹서버 : 어플리케이션 서버에 웹 브라우저의 요청 처리를 요청하는 작업을 수행,
자바EE사양을 모두 준수해서 만든 서버 - ex ) 아파치
웹 어플리케이션 서버 (WAS), 웹 컨테이너 : 웹부분만 구현한 서
요청된 페이지의 로직 및 데이터베이스와의 연동을 처리하는 부분
- ex ) 톰캣
데이터베이스 : 웹 어플리케이션이 필요로 하는 데이터를 저장 함 ex ) 오라클
웹 브라우저 : 웹에서 요청을 하는 클라이언트 ex ) 인터넷 익스플로러,크롬
▷ 웹 컨테이너 :
- 서블릿에 대한 요청을 받고 응답을 해주는 중간 역할
- 요청을 넘겨받은 컨테이너는 HttpRequest와 HttpResponse객체를 만들어
서블릿의 doPost(), doGet() 메서드 중 하나를 호출한다.
▶ JSP 페이지의 구성요소
▷ <%@page : page 디렉티브
- page에 대한 정보 설정
ㄴ JSP 페이지가 생성하는 문서의 타입
JSP 페이지에서 사용할 커스텀 태그
JSP 페이지에서 사용할 자바 클래스 지정
- page 외에도 JSP 에서는
taglib(태그 라이브러리를 지정),
include(JSP 페이지의 특정 영역에 다른 문서를 메인에 포함시킴.
그래서 메인에 같은 변수가 있음 안됨) 디렉티브를 제공한다
<%@ 디렉티브이름 속성1="값1", 속성2="값2", ...%>
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="java.util.Calendar, java.util.Date" %>
▷ <% : 스트립트릿
- JSP 페이지에서 자바 코드를 실행할 때 사용되는 코드의 블록
- 스크립트릿은 jsp 페이지가 servlet으로 변환되고 이 페이지가 호출될 때 _jspService() 메서드 안에 선언됨
- 여기에서 선언된 변수는 모두 지역변수임
<%
자바코드1;
자바코드2;
%>
▷ <%= : 표현식
- jsp페이지에서 웹 브라우저에 출력할 부분을 표현하기 위한 것
- 스크립트릿과 표현식 대신에 쉽고 간단하게 사용할 수 있음
- 스크립트릿내에서 출력할 부분은 내장객체인 out 객체를 사용 해서 출력함
ㄴ jsp의 내장 객체 - response, request, out, session 등
<%= 출력할 값 %>
<%out.println("출력할 값");%>
▷ <%! : 선언부
- JSP 페이지의 스크립트릿이나 표현식에서 사용할 수 있는 멤버변수나 메서드를 작성할 때 사용됨
<%!
public 리턴타입 메서드이름(매개변수){
자바코드...
}
%>
▷ <%--jsp 주석 --%>
- jsp 페이지에서만 사용됨
- 화면에 표시되지도 않고, 실행되지도 않는다.
▷ <!--html 주석-->
- html 주석 내에 표현식 및 스크립트릿을 사용하면 그 코드들은 실행됨
▷ java 주석
<%
//한줄 주석
/*여러 줄 주석*/
%>
생성 후 웹어플리케이션에서 소스를 보면
<%@page, <% 코드가 위치한 부분은 공백으로 보이고
<%= 은 값으로 변환되어 출력된다
▶ jsp 동작구조
웹 브라우저에서 jsp 페이지를 웹 서버로 요청하면
웹 서버는 이걸 웹 컨테이너(WAS)로 넘김
요청을 받은 WAS는
1. 해당 jsp 페이지를 찾아서
2. 서블릿(.java 파일 생성) 으로 변환하는 파싱 과정을 거친 후
3. 컴파일(.class 파일 생성) 을 하게 됨
컴파일된 서블릿은 웹브라우저에 응답되어 사용자가 이를 볼 수 있음
ex ) http://192.168.0.100:9090/testsite/day1/test03.jsp
1. 192.168.0.100 (IP)에 해당하는 컴퓨터 찾기
2. 9090 포트를 사용하는 톰캣 찾기
3. 톰캣의 기본디렉터리인 webapss에서 testsite/day1 폴더 찾기
4. test02.jsp 파일찾고 서버에서 실행
5. html 형식으로 클라이언트에게 전달하고 브라우저가 실행되어 우리가 봄
▷ jsp 구현방식 : 스크립트 방식
- 웹 어플리케이션 프로그래밍은 구현하는 방식에 따라 실행코드 방식 (서블릿) 과
스크립트 방식이있는데, jsp 는 스크립트 방식에 속한다
- 컴파일되지 않은 스크립트 코드로서, 코드 변경을 원할경우 스크립트 코드만 고치면 된다
스크립트 코드를 해석한 뒤 실행된다.
- 번역 ! 은 페이지가 최초로 요청된 때 1번만 실행되고, 이후 해당 페이지의 요청이 있는 경우
번역된 ! 코드가 실행됨
※ 내장객체
- 별다른 선언과정과 객체 생성 없이 사용할 수 있는 9개의 객체들 (jsp에서 기본제공)
▶ request
- HTTP 헤더 / HTTP 바디로 구성되어 있음
- request 기본 객체는 웹 브라우저가 전송한 파라미터를 읽어올 수 있는 메서드 제공
▷ String getParameter(name)
- 클라이언트에서 서버로 요청한 내용(파라미터)중에서 name으로 전달된 값을 get 해와라 !
▷ String[] getParameterValues(name)
- 이름이 name인 파라미터의 모든 값을 String 배열로 리턴함 / Checkbox 에서 주로 사용됨
<%= request.getParameter("name") %>
▶ response
- 웹 브라우저로 응답할 응답 정보를 가지고 있음
- 원래이름 HttpServletResponse 이거임
▷ void setContentType(type)
- 요청의 결과로 보여질 페이지의 contentType을 설정 한다
▷ void sendRedirect(url)
- url 을 주면 이 페이지로 이동해라 !
→ url 이동 (모두 get 방식, 단순이동)
HTML : <a>태그
자바스크립트 : location.href =
jsp : response.sendRedirect(url)
▶ out
- jsp 페이지가 생성한 결과를 웹 브라우저에 전송해 주는 출력 스트림
- jsp 페이지가 웹 브라우저에게 보내는 모든 정보는 out 객체로 통해서 전송됨
- 표현식 <%=코드%> 와 <% out.println(코드)%>는 동일
▷ String println(str)
- 주어진 str값을 웹 브라우저에 출력함
※ HTTP 프로토콜
HTTP 란 ? 웹 브라우저와 웹 서버 사이의 데이터 통신 규칙
- 링크를 클릭하면 웹 브라우저는 HTTP 요청 형식에 따 라 웹 서버에 데이터를 보냄
- 브라우저가 서버에 요청할때 / 서버가 브라우저에 응답할때 모두 http 요청,응답 형식에 따라야 함
- stateless, connectless의 특징을 갖는 프로토콜
ㄴ상태정보 유지되지않음, 연결이 유지되지않음 (요청했을때 잠깐 유지되고 끊어짐)
• 요청의 주요 구성요소 -HTTP메소드 (GET, POST) - 접근하고자 하 는 페이지(url) -폼 파라미터
• 응답의 주요 구성요소 -상태코드 -컨텐츠 타입 (텍스트, 그림, html 등) -컨텐츠(html, 코드, 이미지 등)
▶ HTTP REQUEST METHOD
- 클라이언트(웹브라우저)에서 서버(톰캣)로 요청시 데이터 전달방식
[1] GET
- 무언가를 얻기 위한것이 목적. (서버야 내가 좀 얻어야겠어)
ex ) 네이버 검색창에서 검색하면 검색어가 url 뒤에 붙어서 서버로 요청이날라감
- 단순이동은 get
- 보통 브라우저에서 링크를 통해 연결되는것이 GET 으로 요청이 됨
- 혹은 tf 나 cb 값을 입력했는데 그 값이 url 뒤에 붙어서 전송되면 GET방식
전송버튼를 누른다는 것은 브라우저에서 서버로 request 를 한다는 것이다.
이때 http request header 양식에 맞추어 입력한 정보가 들어감
▷ GET 방식 Form
1. main
전송버튼을 누르면 form 태그의 속성중에서 action에 지정되어있는 result로 요청을하게됨 (값은 서버로 감)
전송을 눌렀을때 form 에 들어있는 값들을 get 방식으로 url 뒤에 포함하여 전달하게됨
최종적으로 url 에 포함된 값은 result 페이지로 가게 됨 (만약 result 페이지가 없으면 404 에러)
2. request
request : 내장객체
getParameter : 클라이언트에서 서버에 요청한 내용(파라미터)중에서 "name" 이름으로 전달된 값을 get 해와라
=> 입력받은 데이터를 서버에서 꺼내볼수있게 되는 것
getParameter 로 받은 값을 <% %> 안에 넣어서 브라우저에 다시 돌려주게 되는 것
서버콘솔 : 서버에서 확인 : [name,age]
[2] POST
- 서버에 데이터를 주기 위한 것이 목적 (서버야 이 데이터들 좀 받아 ! 받아서 뭐좀해봐)
사용자에게 입력값을 받야 할 때 (ex. 회원가입)
- 파라미터들은 HTTP의 body(메시지 몸체)에 숨겨져서 가게 됨
ㄴ request 든 response 이든 header/body 로 나눠져 진행됨
post 방식에서는 전송버튼을 누를 시 입력한 정보는 body 안에 입력된다
▷ POST 방식 Form
submit 전송을 누르면 form 태그의 속성중에서 action에 지정되어있는 test02_ok로
post 방식으로 url 에 포함해서 요청을 하게된다
만약 test02_ok 가 존재하지 않는다면 response로 404가 나오게된다
클라이언트가 서버로 요청한 값은 body 안에 포함되어있기 때문에 눈에는 보이지 않는다
▽ test02_ok
Post 방식 사용 시 input 태그로 요청된 파라미터들에대한 인코딩을 먼저 해줘야 함
request객체의 getParameter 메서드를 사용해서 값을 읽어옴
체크박스는 체크안하면 null이 넘어옴
'jsp' 카테고리의 다른 글
[jsp] 답글형게시판 - 파일업로드 (0) | 2022.05.13 |
---|---|
[jsp] 게시판 - 답변형게시판 생성,삭제 / 페이징처리 / 조회수증가 (0) | 2022.05.13 |
[jsp] 서블릿 Servlet (0) | 2022.05.07 |
[jsp] 인코딩 / 웹,JDBC 프로그래밍 예제 : pd테이블 (0) | 2022.05.04 |