카테고리 없음

자바 Servlet 데이터 전송 방식 및 관련 메소드(Post 방식) 순수 서블릿 방식

최종군 2024. 9. 15. 02:05

 

POST 방식은 사용자가 입력한 값이

url에 보이지 않는다. 

주로 로그인 혹은 회원가입때 사용이된다고 한다 

localhost:8888/1_Servlet/test2.do

 

순수 서블릿 방식 : 

JSP(Java Server Page) 방식 : html 내에 Java 코드 작성

 

setAttribute(String, object) :

request객체에 전달하고 싶은 값을 String 이름으로 Object저장하는 메소드

getAttribute(String) : 

매개변수와동일한 객체 속성값 불러오는 메소드

 

해당 메소드는 주로 

데이터를 다른 응답 페이지로 전달하는 데 자주 사용이 된다 

(웹 애플리케이션에서 요청 처리 후, 데이터를 다음 페이지로 넘기기 위해 유용하다)

 

// 응답 페이지에서 필요한 데이터를 정리하여 전달

// -> 전달하는 공간 : request 객체의 attribute 라는 공간 사용

request.setAttribute("name", userName);

request.setAttribute("gender", gender);

request.setAttribute("age", age);

request.setAttribute("address", address);

request.setAttribute("height", height);

request.setAttribute("foods", foods);

 

 

// jsp 페이지로 응답 설정 : request.getRequestDispatcher(응답할페이지경로);

RequestDispatcher view = request.getRequestDispatcher("views/responsePage.jsp");

view.forward(request, response);

 

RequestDispatcher 클래스는 클라이언트의 요청을 

다른 서버 리소스로 전달하거나 해당 리소스를 

포함하는 기능을 제공한다. 

 

forward() :

클라이언트의 요청을 다른 리소스로 넘기고

제어를 넘긴 후 해당 리소스에서

최종 응답을 클라이언트에 전달한다 

 

 

 

<% 코드 %> : Scriptlet 

역할 JSP 페이지 내에서 자바 코드를 실행할 수 있는 블록을 제공한다

특징으로는 페이지가 요청될 때마다 실행되는 

자바 코드를 작성할 수 있다 

주로 변수 선언, 조건문, 반복문 등을 삽입할 때 사용된다 

실행시점 : JSP가 요청될 때마다 실행된다. 

 

 <%! %> : 

JSP 페이지에서 멤버변수나 메서드를 정의할 때 사용이 된다 실행시점은 JSP가 처음 로드될 떄 한 번만 실행이 된다 

 

사용 예 )

 

 

<%

// System.out.println("Hi? JSP!");

// 스크립트릿 (scriptlet) : html 문서 내에 자바코드를 사용할 수 있는 영역

 

// 서블릿을 통해 전달된 데이터 추출

String name = (String)request.getAttribute("name");

String gender = (String)request.getAttribute("gender");

int age = (int)request.getAttribute("age");

String address = (String)request.getAttribute("address");

double height = (double)request.getAttribute("height");

String[] foods = (String[])request.getAttribute("foods");

%>

 

<%= %>

사용예 

<span><%= name %></span> <br>

 

특징  : 표현식 블록 : <%= name %>

블록 안에 작성된 자바 코드는 JSP 페이지가 실행될 때 

처리되며, 그 결과값이 HTML 응답의 일부로 출력된다.

 

자동 출력이된다 <%=%> -> out.print()를 사용한 것과 

동일하게 출력이 된다

 

별도의 출력 메소드를 출력하지 않아도 표현식의 결과가 자동으로 출력이 된다