개발자상식 <백엔드 개발자> (13)[책리뷰 & Book review]
본문 바로가기

컴퓨터공부/책리뷰 & book review

개발자상식 <백엔드 개발자> (13)[책리뷰 & Book review]

by Life & study 2024. 1. 23.
반응형

개발자상식 <백엔드 개발자> (13)

[책리뷰 & Book review]

 

 

@RequestMapping과 @RequestParam은 스프링 프레임워크는 무엇인가?

 

@RequestMapping: 이 어노테이션은 특정 HTTP 요청을 처리할 메소드를 지정합니다. 클래스 또는 메서드에 적용할 수 있으며, 주로 컨트롤러에서 사용됩니다.
java

@Controller
@RequestMapping("/home")
public class HomeController {
    @RequestMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}


위 코드에서 @RequestMapping("/home")이 적용된 HomeController 클래스는 "/home" URL에 대한 요청을 처리하도록 설정되어 있습니다. 

그리고 @RequestMapping("/hello")이 적용된

 hello 메소드는 "/home/hello" URL에 대한 요청을 처리하도록 설정되어 있습니다.

웹 브라우저에서 "/home/hello" URL로 접속하면 "Hello, World!"라는 문자열이 반환되어 화면에 출력됩니다.

@RequestParam: 이 어노테이션은 HTTP 요청 파라미터를 메서드의 매개변수로 바인딩합니다.

 메소드의 매개변수에 적용할 수 있으며, 주로 컨트롤러의 메서드에서 사용됩니다.


java

@Controller
public class GreetingController {
    @RequestMapping("/greeting")
    public String greeting(@RequestParam(name="name", required=false, defaultValue="World") 
    String name, Model model) {
        model.addAttribute("name", name);
        return "greeting";
    }
}


위 코드에서 @RequestParam(name="name", required=false, defaultValue="World") String name 부분은 "name"이라는 이름의 요청 파라미터를 받아 String 타입의 name 매개변수에 바인딩합니다. 만약 요청 파라미터가 없다면 기본값으로 "World"가 사용됩니다.

웹 브라우저에서 "/greeting?name=John" URL로 접속하면, "name" 파라미터에 "John"이라는 값이 전달되어 greeting 메서드의 name 매개변수에 바인딩됩니다. 그리고 이 값이 뷰에 모델로 전달되어 화면에 출력됩니다. 만약 "/greeting" URL로 접속하면, "name" 파라미터가 없으므로 기본값인 "World"가 사용됩니다.

따라서 @RequestMapping은 특정 URL에 대한 요청을 어떤 메소드가 처리할지 지정하는 역할을 하며, @RequestParam은 요청 파라미터를 메서드의 매개변수로 바인딩하는 역할을 합니다.

 


 

 

 

 

 

 @RequestParam 에서 변수를 할당해서 반환한다는 것은 무엇인가?

 

@RequestParam 어노테이션을 사용하여 HTTP 요청 파라미터를 Java 변수에 할당하는 예제 코드와 그 설명을 아래에 제공하겠습니다.

java

@Controller
public class GreetingController {
    @RequestMapping("/greeting")
    public String greeting(@RequestParam(name="name", defaultValue="World") String name, Model model) {
        model.addAttribute("name", name);
        return "greeting";
    }
}


위 코드에서 @RequestParam(name="name", defaultValue="World") String name 부분은 HTTP 요청에서 "name"이라는 파라미터의 값을 name이라는 Java String 변수에 할당합니다. 만약 "name" 파라미터가 없는 요청이 들어오면, "World"라는 기본값이 name 변수에 할당됩니다.

이를 그림으로 표현하면 아래와 같습니다.

[HTTP 요청]
  └─ URL: /greeting?name=John
      └─ 파라미터: name=John

 

[컨트롤러 메소드]
  └─ greeting(@RequestParam(name="name", defaultValue="World") String name, Model model)
      └─ @RequestParam에 의해 name 파라미터 값 "John"이 String 변수 name에 할당됨


따라서, 웹 브라우저에서 "/greeting?name=John" URL로 요청을 보내면, name 파라미터의 값 "John"이 greeting 메서드의 name 매개변수에 할당되고, 이 값이 뷰에 모델로 전달되어 화면에 출력됩니다. 만약 "/greeting" URL로 요청을 보내면, "name" 파라미터가 없으므로 기본값인 "World"가 name 매개변수에 할당됩니다.

 

@RequestParam(name="name", defaultValue="World") String name 코드는 HTTP 요청에서 "name"이라는 파라미터의 값을 name이라는 Java String 변수에 할당하는 코드입니다.

그리고 model.addAttribute("name", name); 코드는 name이라는 키와 그 값을 뷰에 전달하기 위해 모델에 추가하는 코드입니다. 이렇게 모델에 추가된 데이터는 뷰에서 사용될 수 있습니다.

따라서 뷰(HTML 템플릿 파일 등)에서는 모델에 추가된 "name"의 값을 참조하여 화면에 출력할 수 있습니다. 예를 들어, Thymeleaf 템플릿 엔진을 사용한다면 다음과 같이 "name"의 값을 출력할 수 있습니다.

html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
    <p th:text="${name}">Name</p> <!-- "name"의 값이 출력됩니다 -->
</body>
</html>


이렇게 하면 "/greeting?name=John" URL로 요청을 보내면 화면에 "John"이 출력되고, "/greeting" URL로 요청을 보내면 "name" 파라미터가 없으므로 기본값인 "World"가 출력됩니다.

 

 

@RequestMapping를 활용하여 jsp 방식과 Servlet 방식은 무엇인가?

1

@Controller
public class GreetingController {
@RequestMapping("/greeting")
public String greeting(@RequestParam(name="name", defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}

 

${name}은 서버에서 Model에 추가된 "name" 값에 접근하는 표현식입니다.

 클라이언트가 http://localhost:8080/greeting?name=World로 요청을 보내면, "Hello, World!"라는 메시지를 볼 수 있습니다.

JSP에서 서블릿 자바 코드를 사용한 값 표시 방법 JSP 페이지에서는 자바 코드를 <% %> 안에 작성하여 사용할 수 있습니다. 이를 이용하여 서블릿에서 값을 받아와서 표시하는 방법을 아래에 소개합니다.


2
jsp

<!-- greeting.jsp -->
<html>
<body>
    <%
    String name = (String)request.getAttribute("name");
    %>
    <h1>Hello, <%= name %>!</h1>
</body>
</html>


이 코드에서 request.getAttribute("name")은 서버에서 전달 받은 "name" 값에 접근하는 부분입니다.

 

 


3
그 외의 방법 스프링에서는 @PathVariable이라는 어노테이션을 사용해 URL의 일부를 파라미터로 받을 수 있습니다.
java

// Controller
@RequestMapping("/greeting/{name}")
public String greeting(@PathVariable("name") String name, Model model) {
    model.addAttribute("name", name);
    return "greeting";
}


이 방법을 사용하면 클라이언트는 http://localhost:8080/greeting/World와 같이 요청을 보낼 수 있습니다. 

이때, URL의 {name} 부분이 @PathVariable("name")에 의해 "name" 파라미터로 전달됩니다.


 

 

 

 

 

 

JSP에서 사용하는 디자인패턴 은 무엇일까>?

 

JSP(Java Server Pages)에서 사용하는 HTML 내부의 자바 코드를 작성하는 문법을 서블릿 스크립트릿(Servlet Scriptlet)이라고 합니다.

서블릿 스크립트릿은 JSP 페이지 내에서 <% %> 안에 자바 코드를 기술하는 문법입니다.

 이렇게 작성된 코드는 서버에서 실행되며, HTML과 결합하여 동적인 웹 페이지를 생성하는 데 사용됩니다.

위에서 주신 예제에서는 String name = (String) request.getAttribute("name");이라는 자바 코드가 스크립트릿으로 작성되어 있습니다. 이 코드는 HTTP 요청 객체인 request에서 "name"이라는 속성의 값을 가져와 문자열로 변환하여 name 변수에 저장하고 있습니다.

음으로 <%= name %>는 표현식(Expression)이라는 문법을 사용하고 있는데

이는 자바 코드의 결과를 문자열로 반환하고 이를 HTML에 삽입하는 데 사용됩니다. 

위의 예제에서는 name 변수의 값을 HTML에 삽입하고 있습니다.

이외에도 JSP에서는 선언(Declaration), 지시자(Directive), 액션(Action) 등의 다양한 문법을 사용할 수 있습니다. 이들 문법을 적절히 활용함으로써 동적인 웹 페이지를 생성할 수 있습니다.

 

 

 

 

 

 

JSP에서는 선언(Declaration), 지시자(Directive), 액션(Action) 등의 다양한 문법은 무엇인가?

 

 

 JSP에서는 

 

선언(Declaration), 

지시자(Directive), 

액션(Action) 등의

 

다양한 문법을 사용할 수 있습니다.

 

물론입니다. JSP에서 사용되는 기본적인 문법에 대해 설명하겠습니다.



선언(Declaration) JSP 페이지 내에서 변수나 메소드를 선언할 때 사용합니다. <%! %> 사이에 선언을 작성합니다.
jsp

<%! 
   int count = 0; 
   public void incrementCount() { 
      count++; 
   } 
%>


지시자(Directive)
JSP 페이지에 대한 설정 정보를 제공합니다. 세 가지 타입의 지시자가 있습니다: page, include, taglib.

 

page: 페이지에 대한 종속성과 설정을 정의합니다.
jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

 

 


include: 다른 파일을 현재 JSP 페이지에 포함시킵니다.

jsp

<%@ include file="header.jsp" %>

 

 


taglib: 태그 라이브러리를 사용할 수 있게 합니다. JSTL(JSP Standard Tag Library) 등을 사용할 때 이 지시자를 사용합니다.
jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

 


액션(Action)
JSP 페이지에서 특정 동작을 수행하도록 하는 태그입니다. <jsp:action_name> 형태로 사용합니다.
<jsp:forward>: 다른 페이지로 요청을 전달합니다.
jsp

<jsp:forward page="nextPage.jsp" />

 

 


<jsp:include>: 다른 페이지의 내용을 현재 페이지에 포함시킵니다.
jsp

<jsp:include page="header.jsp" />

 

 


<jsp:useBean>, <jsp:getProperty>, <jsp:setProperty>: 자바 빈을 사용하는데 필요한 액션입니다.
jsp

<jsp:useBean id="user" class="cohttp://m.example.User" />
<jsp:setProperty name="user" property="name" value="John Doe" />
<jsp:getProperty name="user" property="name" />

 

 

 

 

 

 

@controller 에서 jsp에서 서블릿 데이터 intersaction의 연관성은?

 

컨트롤러에서 URL 호출이 왔을 때 JSP에서 서블릿에 값을 포함하여 작동시키고, 

그 결과를 화면에 출력하는 과정은 다음과 같습니다.

먼저, 클라이언트가 URL을 통해 서버에 요청을 보냅니다. 

이때, 컨트롤러에서 해당 URL을 처리하는 메소드가 있어야 합니다.

 예를 들어, 아래 코드는 "/greeting" URL로 요청이 올 경우 처리하는 메서드입니다.


java

// Controller
@Controller
public class GreetingController {
    @RequestMapping("/greeting")
    public String greeting(@RequestParam(name="name", defaultValue="World") String name, Model model) {
        model.addAttribute("name", name);
        return "greeting";
    }
}


클라이언트의 요청에 따라 서버는 메서드를 실행하고, 그 결과를 Model 객체에 저장합니다.

 이 예제에서는 "name"이라는 이름으로 값을 Model에 저장하고 있습니다.
메서드가 반환하는 문자열은 뷰의 이름을 의미합니다. 이 예제에서는 "greeting"이라는 뷰로 이동하게 됩니다.
이제 JSP에서는 서블릿 코드를 사용하여 Model에 저장된 값을 가져와 화면에 출력합니다. 

이때 사용되는 코드는 아래와 같습니다.
jsp

<!-- greeting.jsp -->
<html>
<body>
    <%
    String name = (String)request.getAttribute("name");
    %>
    <h1>Hello, <%= name %>!</h1>
</body>
</html>

 


이 코드에서 request.getAttribute("name")은 서버에서 전달받은 "name" 값에 접근하는 부분입니다.

 <%= name %>는 name 변수의 값을 HTML에 출력하는 부분입니다.



이렇게 클라이언트의 요청에 따라 서버는 컨트롤러를 통해 요청을 처리하고, 그 결과를 Model에 저장한 후, JSP에서 서블릿 코드를 사용하여 그 값을 화면에 출력하는 과정을 거치게 됩니다. 이 과정을 통해 동적인 웹 페이지를 생성할 수 있습니다.

 


<%
String name = (String)request.getAttribute("name");
%>

 

String name: 여기서 String은 자바의 데이터 타입 중 하나로, 문자열을 나타냅니다. 

name은 변수명으로, 문자열 타입의 데이터를 저장할 수 있는 공간을 의미합니다.
=: 이 기호는 할당 연산자입니다. 오른쪽의 값을 왼쪽의 변수에 할당하는 역할을 합니다.
(String): 이 부분은 형변환(Casting)을 의미합니다.

 getAttribute 메서드의 반환값은 Object 타입이므로 이를 문자열 형태로 변환하기 위해 사용됩니다.

request: 이것은 HttpServletRequest 객체를 참조하는 변수입니다. 클라이언트의 요청 정보를 담고 있습니다.

. getAttribute("name"): getAttribute 메서드는 request 객체에 저장된 속성 중 "name"이라는 이름의 속성 값을 가져오는 메서드입니다.


따라서, String name = (String) request.getAttribute("name");라는 코드는 클라이언트의 요청 정보 중 "name"이라는 이름의 속성 값을 가져와 문자열로 변환한 후, 이를 name이라는 변수에 저장하는 역할을 합니다.

그림으로 표현하면 다음과 같습니다.

HttpClient ----request----> Server
                                  |
                                  V
                          String name = (String)request.getAttribute("name");
                                  |
                                  V
                          "name" attribute -----> name variable


위의 그림에서 HttpClient는 클라이언트, Server는 서버를 나타냅니다. 

클라이언트에서 서버로 request가 전달되고, 

서버에서는 이 request에서 "name"이라는 속성 값을 가져와 name 변수에 저장하는 과정을 보여줍니다.

 

 

 

 

 

 

 

 

 

#개발자취업 #개발자기초 #개발자 #개발자분야 #개발자분류 #개발자종류 #it개발자 #서버개발자 #개발자성장 #신입개발자 #ios개발자 #개발자노트북 #개발자 되는 법 #개발 #앱개발 #웹개발 #개발분야 #it개발 #개발공부 #코딩상식 #개발공부 #개발초보

 

#개발자취업 #개발자면접 #개발자채용 #백엔드개발자 #백엔드개발자 #백엔드개발자취업 #백엔드개발 #프런트엔드개발자 #개발자상담 #백엔드 #개발자 #앱개발자 #웹개발자 #개발자팁 #앱개발자 #백엔드취업 #백엔드공부 #백엔드강의 #백엔드독학

 

#전산직면접 #면접 #면접팁 #면접관 #공공기관전산직면접 #공사면접 #면접질문 #면접할 말 #면접준비 #면접준비 #면접답변 #면접질문 #면접기출 #전화면접 #면접복장 #면접답변 #면접꿀팁 #모의면접 #면접후기 #롯데면접 #면접후기 #임원면접 #최종면접 #면접꿀팁

 

 

 

 

 

반응형

댓글