berryberrybin / kosta-jsp

jsp study
0 stars 0 forks source link

MVC구조 예제 - (1) #29

Open berryberrybin opened 2 years ago

berryberrybin commented 2 years ago

index.jsp / DispatcherServelt.java

image

Controller.java

berryberrybin commented 2 years ago

ModelAndView.java

public class ModelAndView {
    private String viewName; // 뷰이름 - 이동해야할 페이지 
    private boolean isRedirect; // 이동방식 (true이면 redirect방식 , false이면 forward방식 으로 이동 )

    // 생성자 
    public ModelAndView() {}

    public ModelAndView(String viewName) {
        super();
        this.viewName = viewName;
    }

    public ModelAndView(String viewName, boolean isRedirect) {
        this(viewName);
        this.isRedirect = isRedirect;
    }

    public String getViewName() {
        return viewName;
    }

    public void setViewName(String viewName) {
        this.viewName = viewName;
    }

    public boolean isRedirect() {
        return isRedirect;
    }

    public void setRedirect(boolean isRedirect) {
        this.isRedirect = isRedirect;
    }
}
berryberrybin commented 2 years ago

SelectController.java


public class SelectController implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        // 전송된 데이터를 request 받기

        //service 호출 =>  그 결과를 받아서 scope에 저장하고 이동함 

        System.out.println(" SelectController 호출 ");
        request.setAttribute("message", "전체 검색결과입니다."); // ${message}

        // 표현방법 -(1)
        ModelAndView mv = new ModelAndView("selectResult.jsp"); 

        // 표현방법 -(2)
                 // ModelAndView mv = new ModelAndView();
                 // mv.setViewName("selectResult.jsp);

        return mv;
    }

}

SelectResult.jsp

검색결과 : ${message}


### 추가로 생성한 파일 
- InsertController.java
- UpdateController.java & updateResult.jsp
- DeleteController.java & DeleteResult.jsp

-----------------------------------------------------------------------------------
### Redirect 방식으로 이동시 작성 예제 
### InsertController.java
- InsertController 호출한 다음에 key=select이므로 SelectController를 호출함
- 현재 scope을 유지하지 않아도 되므로 redirect방식으로 저장함 
```java
public class InsertController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        System.out.println(" InsertController 호출 ");

        ModelAndView mv = new ModelAndView("front?key=select",true);  
                // front로 다시 돌아감 
        // true 값 = redirect 방식으로 전송 

        return mv;
    }
}

DeleteController.java

public class DeleteController  implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        System.out.println(" UpdateController  호출  ");

        ModelAndView mv = new ModelAndView();
        mv.setViewName("deleteResult.jsp"); // 이동할 화면 
        mv.setRedirect(true); //  redirect 방식으로 이동 

        return mv;
    }

}