서블릿이 있습니다. 이 서블릿을 http://someDomain/MyServlet/URLPattern
으로 치고 있습니다. 이 서블릿의 doGet
메소드에서 WEB-INF 폴더 아래에있는 JSP 페이지로 전달 중입니다. 아래의 index.jsp 페이지에서 코드,request.getHeader ("referer")가 전달 및 리디렉션과 함께 작동하는 방식은 무엇입니까?
request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
이며, POST
방법을 사용하여 다른 URL (서블릿)을 타격하고있다. 대상 서블릿의 doPost
방법에서
, 이것은 내가이가 실제 지점에서이 때부터이 http://someDomain/../index.jsp
을 반환 생각
http://someDomain/MyServlet/URLPattern
같은 값을 출력 request.getHeader("referer"))
를 사용하여 referer
을 얻고있다 대상 URL에 트리거가 발생했습니다.
이 동작을 이해하고 싶습니다. 어떤 사람이 그 행동을 설명하는 공인 된 소스 로 답을 얻을 수 있다면 큰 도움이 될 것입니다.
위의 질문과 대답 내용은 forward
와 (과) 일치합니다. sendRedirect
에 대한 동작은 무엇입니까? 이고 어떤 값은 referer
입니까?
그래서'sendRedirect() '를 사용했다면 '다시 ferer'을'http : // someDomain /../ index.jsp'로 만드시겠습니까? – user2488578
네,하지만 그렇게해서는 안됩니다. 첫째로 작동하지 않기 때문에 : WEB-INF하에 놓인 JSP는 바깥에서 접근 할 수 없다. 둘째, JSP가 요청을 직접 받아서는 안되기 때문입니다. 요청은 컨트롤러 (서블릿)를 거쳐야하며 컨트롤러는 컨트롤러 (Controller)가 준비한 모델을 사용하여 마크 업을 생성하는 역할을하는 뷰 (JSP)로 전달해야합니다. 일반적으로 참조 된 헤더를 사용하는 것은 나쁜 생각입니다. 요청의 출처는 신경 쓰지 않아야하며 일부 브라우저는 어쨌든 리퍼러 헤더를 전송하지 않습니다. –
감사합니다 :) 그것은 매우 도움이되었습니다. – user2488578