클라이언트에서 요청을 하면 HTTP 메세지가 만들어 진다.
URI와 URL은 주소 방식은 인터넷 세상에서 리소스를 식별하고 접근하기 위한 개념이다.
URI는 인터넷에서 리소스를 식별하기 위한 문자열이다.
URI는 특정 리소스를 고유하게 식별하며, 리소스의 위치와 상관없이 해당 리소스를 지칭할 수 있다.
// 리소스의 이름만 나타냄
domainname.com/my-info
urn:isbn:0451450523 // URN 예제
http://www.domainname.com/my-info // URL 예제 (URL은 URI의 한 형태)
URL은 리소스의 위치를 나타내는 URI의 한 형태이다.(URL은 일종의 URI이다.).
URL은 리소스가 어디에 있는지를 나타내며, 그 리소스에 접근하기 위한 방법(프로토콜)을 포함한다.
http://www.domainname.com/folder-name/index.html //특정 파일을 가리키는 URL
URL(Uniform Resource Locator)이라는 용어는 리소스의 위치를 식별하는 데 사용되지만, 반드시 파일 확장자나 특정 리소스를 가리키는 것만을 의미하지는 않는다. URL은 웹 상의 모든 리소스를 식별하는 데 사용될 수 있으며, 이는 특정 파일일 수도 있고, 데이터베이스 쿼리의 결과일 수도 있다.
http://www.domainname.com/my-info //특정 파일이 아닐 수도 있음
즉, URI가 더 포괄적인 개념이며 URL은 이 안에 포함된다.
URI= 식별자, URL=식별자+위치
모든 URL은 URI이지만, 모든 URI가 URL은 아니다.
URL은 리소스의 위치와 접근 방법을 포함하여 리소스를 식별하는 URI의 한 형태이다.
프로토콜(protocol)이란, 리소스에 접근하는 방법을 지정하는 방식이다. 일반적으로 https, http, ftp 또는 file 등이 여기에 해당할 수 있다.
쿼리 스트링은 URL의 일부로, URL에서 리소스 경로 뒤에 추가로 전달되는 매개변수들을 나타낸다.
쿼리 스트링은 '?' 문자 뒤에 위치하며, 여러 개의 매개변수는 '&' 문자로 구분된다.
http://www.example.com/search?query=java&sort=asc&page=2
기본 URL - http://www.example.com/search
쿼리 스트링: ?query=java&sort=asc&page=2
Path Variable은 URL 경로의 일부로 포함된 매개변수이다.
리소스의 특정 식별자나 속성을 URL 경로에 직접 포함시켜 RESTful API에서 자주 사용된다.
http://www.example.com/users/123/orders/456
GET 방식의 특징
예를 들어, http://example.com/page?name=John&age=30에서 name=John과 age=30이 쿼리 스트링이다.
POST 방식은 주로 데이터를 서버에 전송하거나 서버에서 데이터 처리를 요청할 때 사용된다. 즉, POST 요청은 클라이언트가 서버로 데이터를 전송할 때 사용하는 HTTP 메서드이다. 주로 폼 데이터를 서버로 제출하거나 파일 업로드와 같은 작업에 사용된다
POST 방식의 특징
시나리오 코드 1
주소창에 구글웹스토어 검색 (이동) → talend api 검색 - 설치
package com.tenco.controller;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
// http://localhost:8080/req-test
@WebServlet("/req-test")
public class RequestTest extends HttpServlet {
private static final long serialVersionUID = 1L;
public RequestTest() {
super();
}
// http://localhost:8080/req-test?name="홍길동"
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// METHOD <--- GET 방식일 때
// 요청을 받고 응답시에 MIME TYPE -> text/html
response.setContentType("text/html; charset=UTF-8");
String name = request.getParameter("name");
String greeting = "Hello," + (name != null ? name : "바보" ) + " !! ";
response.getWriter().print("<html><body> <h2> "+ greeting +" </h2> </body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
💡 컨텍스트 루트(Context Root)란?
웹 애플리케이션이 URL을 통해 접근될 때 사용되는 기본 경로이다. 웹 애플리케이션이 웹 서버나 애플리케이션 서버에 배포될 때, 서버는 각 애플리케이션에 대해 고유한 컨텍스트 루트를 할당한다. 이를 통해 여러 애플리케이션이 동일한 서버에서 여러 애플리케이션을 동시에 실행시킬 수 도 있다.
URL의 구성
http://<서버 주소>:<포트>/<컨텍스트 루트>/<서블릿 경로>
컨텍스트 루트(Context Root)는 server.xml 파일에서 설정할 수 있다.
server.xml 파일은 Apache Tomcat의 주요 설정 파일로, 서버의 구성 요소와 동작 방식을 정의한다.
이 파일을 통해 Tomcat 서버의 다양한 설정을 구성할 수 있다.
// 주소창에서 한글이 있는 URL 복사하면 why?
http://localhost:8080/myapp/req-test?name=%ED%99%8D%EA%B8%B8%EB%8F%99&email=a@naver.com
// 복사후 URL 인코딩 처리 된다.
URL 인코딩이란
[JSP] 서블릿과 데이터베이스 연동 (0) | 2024.07.04 |
---|---|
[JSP] 서블릿과 서블릿 컨텍스트란? (0) | 2024.07.04 |
[JSP] 서블릿 작성, 배포, web.xml 설정에 이해 (0) | 2024.07.02 |
[JSP] 서블릿 Life Cycle 이란? (0) | 2024.07.02 |
[JSP] 서블릿이란? (0) | 2024.07.01 |