programming/jsp

jsp - Controller

히연쓰 2021. 5. 25. 18:20

음 .. 내 개인적인 생각으로 작성을 하자면

webapp 안에 css, js, scc 등 잘 갖춰있다는 가정 하에 controller, frontcontroller을 작성하자면

1) com.heeyeon.model 안에 

- Dao, Bean이 올바르게 잘 써져있기

 

2) com.heeyeon.controller 안에 

AbstractController 인터페이스 구현하기

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.heeyeon.controller;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public interface AbstractController {
    public ModelAndView requestHandler(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException;
}
 
cs

 

3) com.heeyeon.frontcontroller 안에 

- HandleMapping 해주면서 controller 패키지 안에 있는 해당 클래스들 작성해주기.

ex ) 

형광펜으로 칠해놓은건 기복적으로 좀 필요한 형태라고 해야하나 무튼 그렇다.. 

- (해당파일) FrontController 작성하기

*.do - > do로 끝나는 파일에 대해서 얻어오기 ? 받아오기 ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.heeyeon.frontcontroller;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
 
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 com.heeyeon.controller.AbstractController;
import com.heeyeon.controller.ModelAndView;
 
@WebServlet("*.do")
public class HublotFrontController extends HttpServlet {
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        String context = request.getContextPath();
        String uri = request.getRequestURI();
        String command = uri.substring(context.length());
        
        HandlerMapping mappings = new HandlerMapping();
        ModelAndView mav = null;
        AbstractController controller = null;
        controller = mappings.getController(command);
        mav = controller.requestHandler(request, response);
        String nextPage = mav.getNextPage();
        Map<String,Object> model = mav.getModel();
        for(String key : model.keySet()) {
            request.setAttribute(key, model.get(key));
        }
        String alertMsg = (String) model.get("alertMsg");
        String backMsg = (String) model.get("backMsg");
        
        PrintWriter out = response.getWriter();
        if(alertMsg!=null) {
            out.println("<script>");
            out.println("loaction.href='"+nextPage+"';");
            out.println("</script>");
        } else if(backMsg!=null) {
            out.println("<script>");
            out.println("history.back();");
            out.println("</script>");
        } else {
            if(nextPage.contains("redirect")) {
                response.sendRedirect(nextPage.split(":")[1]);
            } else {
                RequestDispatcher dispatcher = request.getRequestDispatcher(nextPage);
                dispatcher.forward(request, response);
            }
        }
    }
}
 
 
cs

이제 이렇게 기본적 ? 이랄까 무튼 내 개인적으로 이 순서대로 작성하면 된다고 생각한다.

-참고-
ㅋㅋㅋㅋ참고로 HandlerMapping 안은 이렇다 !

 

다음엔 완성된 파일로 와보겠음 ~