본문 바로가기
IT 공부/JSP, Servlet

방명록 - 모델2

by 쭈잇 2019. 5. 16.

Contents

    반응형

     

    모든 요청은 Servlet에서 받고, 응답은 JSP로

     

    1. 디렉토리 구조 살펴보기 

     

     

    JSP 파일은 WEB-INF 폴더 하위 views 폴더에 위치한다

     - WEB-INF 폴더 하위에 위치하므로, 외부에서 직접 접근이 불가 ( 보안 요소)

     - 애플리케이션 내부에서만 가능 (Servlet 이 접근)

     

     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
    
            String actionName = request.getParameter("a");
    
            if("deleteform".equals(actionName)) {
                RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/deleteform.jsp");
                rd.forward(request, response);
            }
            else if("add".equals(actionName)) {
                request.setCharacterEncoding("utf-8");
    
                String name = request.getParameter("name");
                String pwd = request.getParameter("pwd");
                String content = request.getParameter("content");
    
                GuestBookVO vo = new GuestBookVO();
    
                vo.setName(name);
                vo.setPwd(pwd);
                vo.setContent(content);
    
                GuestBookDAO dao = new GuestBookDAO();
                dao.insert(vo);
    
                response.sendRedirect("/guestbook2/gb");
            }
            else  {
                GuestBookDAO dao = new GuestBookDAO();
                List<guestbookvo> list = dao.getList();
    
                request.setAttribute("list", list);
    
                RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/index.jsp");
                rd.forward(request, response);
            }
        }
    
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
    }

     

    1) 

    ` actionName 은 jsp에서 url을 넘길 때 ?a=add 등으로 넘기는데 그 때마다  

    action을 다르게 하기위해 나타내는 구분 값이다

    actionName에 따라 요청에 맞는 처리를 해준다.

     

     

    2) forward, redirect

    • redirect : 모든 자원을 반환한 상태로 새롭게 요청. url 이동만

    HTTP 응답코드로는 301, 302가 있다

      - 301 code : 영구 이동을 말함. 해당 URL이 영구적으로 새롱누 URL로 변경되었음을 나타냄

       (검색엔진은 과거 URL의 페이지랭킹과 평가점수를 새로운 URL로 이동)

      - 302 code : 임시적으로 새로운 URL로 이동했음.

         (검색엔진은 과거 URL의 페이지랭킹과 점수는 그대로 유지하도록 하면서 컨텐트만 새로운 URL에서 조회하 도록 해야할 때 유용)

    -> ex) 쇼핑몰에서 일시적으로 인기리에 팔리는 제품이 품절됐음을 알릴 떄

     

    •  forward : 요청 받은 자원을 그대로 유지한 채로 제어권을 넘기는 request 의 연장성

     

    - Servlet에서 요청을 처리한 후 그 자원을 그대로 유지한채 JSP에 넘겨줘서 JSP에서 이를 사용할 수 있다

    * redirect() 메서드를 호출할 때, 인자로 /WEB-INF 폴더로 시작하는 경로명을 작성하는 것이 아닌 URL을 작성해야한다.

     

    ex) response.redirect(request, response, request.getContextPath() + "/user?a=joinsuccess");

     

    https://victorydntmd.tistory.com/151?category=719481

     

    반응형

    'IT 공부 > JSP, Servlet' 카테고리의 다른 글

    방명록 - 모델1 적용  (0) 2019.05.16
    Servlet 개념  (0) 2019.05.16
    [Java EE] 톰켓  (0) 2019.05.16