記錄

Servlet) 키워드 받아서 경로 나눠주는 방식(cmd) 본문

Web/Servlet

Servlet) 키워드 받아서 경로 나눠주는 방식(cmd)

surhommejk 2018. 3. 28. 11:11


private void doProcess(HttpServletRequest request, HttpServletResponse response ,
String method) throws ServletException, IOException {
// doGET , doPOST 모든 요청을 내가 처리
// 여기서 method는 무슨 방식으로 보냈는지
    System.out.println("클라이언트 요청 : " + method);
    
    //1. 요청 받기 (GET, POST)
    
//2. 요청 판단 (판단의 기준) : command 방식
    //2.1 parameter 기준으로
    //ex) board?cmd=login&userid=kglim
    // String str = request.getParameter("cmd")
    // if(str.equals("login")){ 로그인 처리 ..}
    
    //TIP : URL 주소 판단 -> ex) board/boardlist
    // board/boardwrite?title=aaa&content=bbb
//즉, 마지막 주소 문자가 무엇인지에 따라
//boardlist면 게시판 목록보기 boardwrite면 게시판 글쓰기와 같은 방식
         
    //문제 : 클라이언트가 페이지 주소 직접 입력하면?
//localhost:8090/WebServlet_1/ok.jsp이런 식으로 직접 입력시 문제
//해결책 : 보안폴더에 담아서 원천 봉쇄하고 대신 forward로 보낸다
    //보안폴더 > WEB-INF (클라이언트가 직접 URL 주소로 접근 불가)
    //1. WEB-INF 접근 : 404 Error
    //2. WEB-INF 활용 : ex) views > board > list.jsp
    // views > member > memberok.jsp
//<코드 예시>
    //1.요청 받기 (command 방식)
    //요청주소: 예시) http://localhost:8090/WebServlet_1/board?cmd=list
    String cmd = request.getParameter("cmd");
    
    //2.요청 판단 (업무에 따라서 정하면 됨)
String viewpage = null;
//예시)
    //cmd > null > error.jsp
    //cmd > boardlist > list.jsp
    //cmd > boardwrite > write.jsp 서비스
    
    if(cmd == null) {
        viewpage = "/error/error.jsp";
    }else if(cmd.equals("boardlist")) {
viewpage = "/board/boardlist.jsp";
//예시) 여기서는 DB연결이 필요하다

        //DB연결
        //실행 > 결과 (rs) > 객체 담기
        //boarddao dao = new boarddao();
        //List<board> boardlist = dao.selectboardlist();
//이렇게 request에 만든 list 주소를 담는다
//request.setAttribute("list",boardlist)
        //view page forward 방식으로 보내서 request에서 끌어낸다
//<c:set var="list" value=<%= request.getAttribute("list") %>
    }else if(cmd.equals("boardwrite")) {
        viewpage = "/board/boardwrite.jsp";
    }else if(cmd.equals("login")) {
        viewpage = "/WEB-INF/login/login.jsp";
    }else {
        viewpage = "/error/error.jsp";
    }
    
    //3.필요한 연산을 처리한다
    //가정 : List<Emp> list = new ArrayList<>();
    //가정 : list.add(new Emp(2000,"김유신"));
//request.setAttribute("emplist",list)
// cf) 위에서 viewpage는 보낼 주소를 설정하는 처리 단계였다
// 아직 그 어떤 것도 가지 않았다는 의미이다
// 보내는 것은 아래에서 dis.forward()에서 처리 된다
// 보내기 전까지는 필요한 연산을 처리하고 세팅을 하는 과정이다

//4. view 지정 > forward
// 여기서 위 과정을 통해 정해진 viewpage를 탑재
// <<<<< dis.forward시 나아갈 경로를 설정하는 것>>>>>
    RequestDispatcher dis = request.getRequestDispatcher(viewpage);
    
    //5. view forward 방식으로 전달 (view 에게 정보전달 : request )
    dis.forward(request, response); //servlet이 갖고있는 request객체 주소-> view 전달
}





Comments