• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 백준 (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [JSP] 13. 쿼리 스트링
        2024년 07월 03일
        • Song hyun
        • 작성자
        • 2024.07.03.:50
        728x90
        반응형

        [JSP] 13. 쿼리 스트링

         

        1. Query String이란?

        -쿼리 스트링은 URL의 일부로, URL에서 리소스 경로 뒤에 추가로 전달되는 매개변수들을 나타낸다. 

        -쿼리 스트링은 '?' 문자 뒤에 위치하며, 여러 개의 매개변수는 '&'문자로 구분된다.

         

         

         

        2.Path variable이란?

         Path variable은 URL 경로의 일부로 포함된 매개변수이다. 리소스의 특정 식별자나 속성을 URL 경로에 직접 포함시켜 RESTful API에서 자주 사용된다.

         

         

         

        3. 주소 설계 방식 비교

        (1) Query String 방식

        -매개변수는 '?'뒤에 '&'로 구분한다.

        -일반적으로 필터링, 검색, 페이징 등에 사용된다.

         

        (2) Path Variable 방식

        -매개변수는 URL 경로의 일부로 포함한다.

        -리소스의 식별자나 속성을 명확히 나타낸다.

        -RESTful API 설계에서 자주 사용된다.

         

         

        4. 시나리오 코드

        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/gp/req-test?name="홍길동"
        	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        		// http 메서드 <--- GET 방식일 때 동작한다.
        		// 요청을 받고, 응답시에 MIME TYPE을 text/html 형식으로 내려주려고 한다.
        		response.setContentType("text/html; charset=UTF-8");
        		
        		// HTTP 요청 메세지의 시작줄에 /req-test?name="홍길동"
        		String name=request.getParameter("name");
        		String greeting="Hello,"+name+" !!";
        		response.getWriter().print("<html><body><h2>"+greeting+"</h2></body></html>");
        	}
        
        
        	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        		doGet(request, response);
        	}
        
        }

         

        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/gp/req-test
        @WebServlet("/req-test")
        public class RequestTest extends HttpServlet {
        	private static final long serialVersionUID = 1L;
               
        
            public RequestTest() {
                super();
            }
        
            // http://localhost:8080/gp/req-test
        	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        		// http 메서드 <--- GET 방식일 때 동작한다.
        		// 요청을 받고, 응답시에 MIME TYPE을 text/html 형식으로 내려주려고 한다.
        		response.setContentType("text/html; charset=UTF-8");
        		
        		// HTTP 요청 메세지의 시작줄에 /req-test?name="홍길동"
        		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 {
        		
        		// 요청을 받아서 (인증 검사, 요청 값들의 유효성 검사)
        		
        		// HTTP 요청 바디에서 데이터를 추출
        		response.setContentType("text/html; charset=UTF-8");
        		String name=request.getParameter("name");
        		String email=request.getParameter("email");
        		
        		// 보통 DB에 접근해서 CRUD 작업
        		
        		response.getWriter().write("<html>");
        		response.getWriter().write("<head>");
        		response.getWriter().write("</head>");
        		response.getWriter().write("<body>");
        		response.getWriter().write("<h1>");
        		response.getWriter().write("<p>");
        		response.getWriter().write("name : "+name);
        		response.getWriter().write("</br>");
        		response.getWriter().write("email : "+email);
        		response.getWriter().write("</p>");
        		response.getWriter().write("</h1>");
        		response.getWriter().write("</body>");
        		response.getWriter().write("<html>");
        		
        		
        		
        		
        	}
        
        }

         

        		//response.setContentType("text/html; charset=UTF-8");
        		String name=request.getParameter("name");
        		String email=request.getParameter("email");


        -ContentType이 제대로 지정되어 있지 않으면, 데이터가 제대로 읽히지 않기도 한다.

        -UTF-8이 없으면, 브라우저에 따라 한글이 깨지기도 한다.

         

        컨텍스트 루트를 변경하면, 기존 URL로 들어갈 수 없다.

         

        *컨텍스트 루트(Context root)란?

         웹 애플리케이션이 URL을 통해 접근될 때 사용되는 기본 경로이다. 웹 애플리케이션이 웹 서버나 애플리케이션 서버에 배포될 때, 서버는 각 애플리케이션에 대해 고유한 컨텍스트 루트를 할당한다. 이를 통해 여러 애플리케이션이 동일한 서버에서 여러 애플리케이션을 동시에 실행시킬 수도 있다.

         

        *컨텍스트 루트는 server.xml에서 설정할 수 있다!

         

        **주소창에서 한글이 있는 경우, 복사하면 한글이 인코딩처리된다.

        -> URL 인코딩

        -URL은 ASCII 문자만을 안전하게 포함할 수 있다. ASCII 코드로 표현되지 않는 문자는 URL에서 문제를 일으킬 수 있다.

        -따라서 비 ASCII, 즉 문자나 특수 문자는 URL 인코딩되어야 한다.

        -URL 인코딩은 해당 문자를 %와 두자리 16진수로 변환한다.

         

         

        728x90
        반응형

        'JSP' 카테고리의 다른 글

        [JSP] 15. 서블릿과 DB 연동  (0) 2024.07.03
        [JSP] 14. 서블릿과 서블릿 컨텍스트  (0) 2024.07.03
        [JSP] 12. URI와 URL  (0) 2024.07.03
        [JSP] 11. Servlet을 사용하여 JSON 파싱하기  (0) 2024.07.03
        [JSP] 10. WAR 파일 생성 및 배포  (0) 2024.07.03
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바