記錄

doGet, doPost, Context Path 본문

Web/JSP

doGet, doPost, Context Path

surhommejk 2017. 11. 28. 10:22

response와 request




쉽게 말해서 클라이언트에서 웹 서버에 보내는 데이터는 request객체에 담기고 웹 서버에서 클라이언트에 보내는 정보는 response 객체에 담긴다.


예를들어, 로그인을 한다고 했을 때, 아이디와 암호는 request에 담겨서 웹 서버에 보내지고 이것을 웹 서버가 DB에서 확인하고 접근을 허가할지 말지에 대한 정보를 response객체에 담아서 클라이언트 측으로 보내는 것이다. 물론 응답은 html로 이뤄진다






doGet, doPost의 차이점과 호출 근거




request시 요청 방식이 GET방식이면 response도 GET방식으로 받게 되고, 요청 방식이 POST방식이면 response도 POST 방식으로 받게 된다.

정확히 말하면 html태그의 method 속성값이 무엇인지에 따라 response 방식도 정해진다.




※ doGet방식으로 호출이 되는 경우

1) html태그의 method속성이 GET방식일 때

2) 웹브라우저에 직접 입력을 해서 접근하는 방식일 때 <-- 밑 예제에서 이를 확인해본다


    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("doGet");    //  콘솔창에 찍히게 된다

        response.setContentType("text/html; charset=euc-kr");   //  클라이언트의 request에 따라 doGet메소드가
                                                                //  실행되는 것을 감안하여 response 타입을 설정
                                                                //  text/html로 response하며 한글로 보낸다는 의미에서
                                                                //  charset설정(euc = extended unix code) 
        
        PrintWriter writer = response.getWriter();              //  response객체에 내장된 getWriter함수를 이용해서
                                                                //  PrintWriter를 만들 수 있다
        
        writer.println("<html>");   // 여기서부터는 html로 보내질 것을 생각하여 작성한다
        writer.println("<head>");
        writer.println("</head>");
        writer.println("<body>");
        writer.println("Hello world~~~~~~~~~~~");   //  브라우저에 나타날 body 부분
        writer.println("</body>");
        writer.println("</html>");
        
        writer.close(); // stream 열어줬으니 닫아준다

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("doPost");
    }

}


cf) 왜 doPost가 아니고 doGet이 호출되었는가?


어딘가를 통해서 들어간 것이 아니고 브라우저로 바로 들어갔기 때문에 doGet이 호출되어서 doGet 메소드에 처리해둔 연산들이 실행 된 것.






※ doPost방식으로 호출이 되는 경우



※ html에서 호출하고 있다는 것에 유의




<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

    <form action="doPostTest" method="post">
        <input type="submit" value="go">
    </form>

</body>
</html>



protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("doPost");

response.setContentType("text/html; charset=euc-kr");
PrintWriter writer = response.getWriter();

writer.println("<html>");
writer.println("<head>");
writer.println("</head>");
writer.println("<body>");
writer.println("doPost가 실행되었습니다");
writer.println("</body>");
writer.println("</html>");

}





※ class명이 아니라 Mapping 값으로 찾아간다!





Context Path(컨텍스트 패스)



※ 구동(run)한 프로젝트 단위로 올라간다


'Web > JSP' 카테고리의 다른 글

JSP 동작원리, 개념, 내부객체  (0) 2017.12.01
초기화 파라미터(init-param), WebListener  (0) 2017.11.28
html_form, 인코딩 차이점(get, post)  (0) 2017.11.28
servlet LifeCycle  (0) 2017.11.28
JSP, MVC, servlet, Mapping 및 기초개념  (0) 2017.11.27
Comments