[JAVA] MVC 패턴

hyoogii·2023년 1월 31일
0
post-thumbnail

GET 방식

package org.zerock.w1.calc;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "inputController", urlPatterns = "/calc/input")
public class InputController extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("InputController...doGet...");

        RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/calc/input.jsp");

        dispatcher.forward(req,resp);
    }
}

POST 방식


package org.zerock.w1.calc;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "calcController", urlPatterns = "/calc/makeResult")
public class CalcController extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String num1 = req.getParameter("num1");
        String num2 = req.getParameter("num2");

        System.out.printf("num1: %s",num1);
        System.out.printf("num1: %s",num2);


    }
}

반복되어 결과를 보여줄수 있기 때문에 HttpServletResponse 의 sendRedirect() 메소드를 이용한다.

PRG 패턴(Post-Redirect-GET)

  • 사용자는 컨트롤러에 원하는 작업을 POST 방식으로 처리하기를 요청
  • POST방식을 컨트롤러에서 처리하고 브라우저는 다른경로로 이동(GET)하라는 응답(Redirect)
  • 브라우저는 GET방식으로 이동
  • 게시판이 가장 대표적인 방식임

POST방식의 처리 후에 바로 다른 주소로 브라우저가 이동하기 때문에 반복적으로 POST 호출이 되는 상황을 막을 수 있고, 사용자의 입장에서도 처리가 끝나고 다시 처음단계로 돌아간다는 느낌을 주게 된다.

싱글톤 패턴(singleton patton)

  • 객체를 하나만 생성해서 사용하는 패턴

Model 모델

: 컨트롤러에 필요한 기능이나 데이터를 처리해주는 존재, 시스템 전체 구조로 보면 컨트롤러와 뷰를 제외한 남은 부분

DTO(Data Transfer Object)

: 여러개의 데이터를 묶어서 하나의 객체로 전달하는 것
대부분 Java Beans 형태로 구성하는 경우가 많다.

Java Beans

  • 생성자가 없거나 반드시 파라미터가 없는 생성자 함수를 가지는 형태
  • 속성(멤버변수)는 private로 요청
  • getter/setter를 제공할 것

JSP

EL (Expression Language)

: JSP 에서 간단한 표현식을 이용해서 데이터를 출력하는 용도
제어문이나, 반목문 같이 식이 아닌 문을 처리하기 위해서는 JSTL 라이브러리 필요

JSTL(JavaServer Pages Standard Tag Library)

:
1. 반복문 <c:forEach>
var : EL에서 사용할 변수이름
items : List, Set, Map, Enumeration, lterator 등의 컬렉션
begin/end : 반복의 시작/끝 값
2. 제어문 <c:if>, <c:choose>
3. 변수생성 : <c:set>
var : 변수명지정
value : 값 지정

profile
기록자

0개의 댓글