서블릿을 사용하는 이유는 간단하게 말하자면 정적인 화면에서 동적인 화면을 구동하기 위해서 서블릿을 사용한다.
여기서 동적인 화면이란 ? 웹페이지에 로그인할때 "안녕하세요 고객님" 이라는 문구대신 "안녕하세요 xxx님" 하면서 계정정보에 따라서 정보가 다르게 출력되게 만드는 소프트웨어 컴포넌트라고 볼 수 있다.
[서블릿의 특징]
- MVC모델에서 controller 기능을 구현한다
- html을 통해서 서버에 응답
MVC모델이란?
하나의 JSP에서 View, Control, Model을 하면 유지보수하기 힘든 점을 고안하여 http사용에 용이한 JSP에서는 View를 구현 / Java를 기반으로 구현할 수 있는 Servlet은 기능 구현을 위한 자바 코드를 작성 / Model의 경우에는 컨트롤러에서 특정요청이 들어오면 기능을 수행하고 컨트롤러에 해당 기능을 반환해주는 역할을 한다 그래서 간단한 기능을 구현할 경우에는 Model을 생략하고 Controller(Servlet)에서 Model의 기능까지 구현하는 코드를 작성하는 경우도 많다.
<서블릿 사용하기>
서블릿(Servlet)을 사용하기 앞서 복잡한 아키텍처대신 기본적으로 알아야하는 개념들만 이해하기 쉽고 간단하게 설명해보려고한다
클라이언트 (브라우저) : 정보를 요청한 곳
클라이언트가 요청한 정보를 Http Request를 Web Server로 전송을 하면 Http Response는 request를 통해서 얻어온 정보에 대한 Response를 담아서 다시 클라이언트가 요청한 정보를 보내주면 되는 것이다.
request : 클라이언트 요청 정보 저장 response : 클라이언트가 요청한 정보 전송
이젠 코드를 통해서 어떻게 request와 response가 클라이언트와 소통하는지 알아보자
package exam;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/param")
public class ParameterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ParameterServlet() {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html"); //클라이언트가 요청한 정보를 request에 담고 클라이언트의 요청에 응답하기 위해서 response에 응답을 저장
PrintWriter out = response.getWriter(); // prinwriter를 통해 요청정보를 출력 변수 out을 통해 클라이언트와 response의 연결통로를 만듬
//response하기 위해서 getWriter로 클라리언트의 요청정보를 가져옴
out.println("<html>");
out.println("<head><title>form</title></head>");
out.println("<body>");
String name = request.getParameter("name"); // 클라이언트에서 요청한 정보인 Parameter에서 name이라는 파라미터 변수명과
String age = request.getParameter("age"); // age라는 변수명을 가져옴 (파라미터는 다 문자열로 넘어오기 때문에 String 타입으로 가져옴)
out.println("name : " + name + "<br>"); // http로 출력하기 위해서 out.print를 사용
out.println("age : " +age + "<br>");
out.println("</body>");
out.println("</html>");
}
}
여기서 결과 값은 예상과 달리 name : null , age : null 로 출력이 되는데 파라미터에 값을 넣으려면 URL에 적힌 param 뒤에 param?name=kim&age=5; 이런식으로 클라이언트가 요청한 값을 기재해야 한다.
param?뒤에 문구들을 파라미터라고 부르며 "="의 앞부분들을 파라미터 변수 "="의 뒷부분은 파라미터 값으로 부른다.
해당 예시는 doGET방식을 통해서 들어온 파라미터인데 doGET은 URL을 통해서 들어온 정보를 말하며 doPOST는 http에서 form 즉 아래와 같이 로그인 클릭창이나 클릭창을 누르면 정보가 전달되는 폼(input)을 통해 들어온 파라미터를 받는다.
'Spring > MVC' 카테고리의 다른 글
[STS] 스프링(Spring) MVC 프로젝트 : @Controller 파라미터 수집하기 (0) | 2022.06.01 |
---|---|
[STS] 스프링(Spring) MVC 프로젝트 : @RequestMapping 축약하기 (0) | 2022.06.01 |