페이지가 2 페이지에 전달되는 JSP 페이지가 있습니다. 페이지에서 전달 된 정보를 사용하여 두 번째 페이지에 정보를 표시합니다. 브라우저를 다시 사용할 때 문제가 발생합니다. 브라우저를 뒤로 설정하여 데이터를 업데이트하고 새로 고침 할 수 있습니까?내 JSP가 새로 고쳐지지 않습니다
답변
잘 모르겠습니다 만 다음 옵션을 시도해 볼 수 있습니다.
1) 세션 변수에 양식 데이터를 저장하고 다음 페이지에서 계속하십시오. 그래서 사용자가 다시 조회 할 때 (페이지 로딩이 일어날 것입니다) 버튼을 누르면 세션 변수의 새로운 데이터가로드됩니다.
2) http://www.servletsuite.com/servlets/backtag.htm
3) http://www.theserverside.com/discussions/thread.tss?thread_id=29853
유일한 방법은 이것에 대한 HttpSession
는 데이터와 함께, 전체 세션 - 동안 사용할 수 있음 - 그래서 사용하는 패턴을 후 리디렉션-얻을 클라이언트 측 캐시 비활성화 - 뒤로 버튼은 브라우저 기록/캐시에서 페이지를 요청하지 않고 대신 서버에서 새로운 것을 요청합니다.
다음은 빗금 예 page1.jsp
의 모습입니다. (meta
헤더, 사람들은 당신이) 어떤 방법을 변경하지 마십시오 브라우저 캐시에게 crossbrowser 호환 방식을 사용하지 않도록 설정 최소 있습니다 : page2
뒤에 서블릿 클래스에서
<!doctype html>
<html lang="en">
<head>
<title>SO question 2175119</title>
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
</head>
<body>
<form action="page2" method="post">
<input type="text" name="foo" value="${page1.foo}">
<input type="text" name="bar" value="${page1.bar}">
<input type="submit">
</form>
</body>
</html>
는 당신이 요청 매개 변수를 수집해야 같은 데이터 구조
Map<String, String>
또는 (위 있듯이 당신이
${page1}
에 의해 JSP EL에 액세스 할 수 있도록) 속성 이름으로
page1
으로
HttpSession#setAttribute()
에 의해 세션에 넣어 fullworthy 자바 빈즈 클래스 :에서
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map<String, String> page1params = new HashMap<String, String>();
page1params.put("foo", request.getParameter("foo"));
page1params.put("bar", request.getParameter("bar"));
request.getSession().setAttribute("page1", page1params);
// Do remnant of your business logic here if necessary.
// Now redirect to page2.jsp (else the back button won't work,
// because the POST has been expired due to the meta headers).
response.sendRedirect("page2.jsp");
}
66,049,203,210 같은 JSP EL 방식 page1.jsp
에서와 같이 양식 데이터를 액세스 할 수 있습니다
...
<p>Entered value for "foo" is: ${page1.foo}</p>
<p>Entered value for "bar" is: ${page1.bar}</p>
...
당신이 page2.jsp
에서 다시 버튼을 누르면,이 서버에서 page1.jsp
를 서버에 새로운 GET
요청을 발사하고 검색합니다, 세션의 데이터가 미리 채워져 있습니다.
이 모든 단 한가지주의 할 점이 있습니다. 세션 내에 여러 개의 브라우저 창이 열려 있으면 입력/변경된 값이 서로 영향을줍니다. 실제 양식 버튼 대신에 브라우저 뒤로 버튼을 사용하여 page2.jsp
이라고 주장하는 한 해결할 수 없습니다.
희망이 도움이됩니다.
질문의 핵심은 다음과 같습니다. 일시적으로 캐시 된 이전 버전의 페이지를 표시하는 대신 사용자가 '뒤로'를 누른 후 브라우저가 첫 번째 페이지를 다시 요청하도록하려면 어떻게해야합니까?
대답은 페이지 1을 페치 할 수없는 결과를 캐시 할 수 없게 만드는 것입니다.이것은 HTTP 응답 헤더를 수행하고, JSP에 그 헤더를 설정하는 신속하고 더러운 방법입니다 :
<%
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", 0);
%>
필터/서블릿이나 HTML 메타 태그를 사용하는 것이 좋다. 게다가,이 세트는 파이어 폭스와 다른 몇몇에서는 작동하지 않을 것이다. 아, 이것은 또한 새로운 데이터를 유지한다는 그의 질문에 대답하지 않습니다. 올바른 접근법과 올바른 헤더에 대한 내 대답을 참조하십시오. – BalusC
- 1. DrawingVisual이 새로 고쳐지지 않습니다.
- 2. navigationItem.title이 새로 고쳐지지 않습니다.
- 3. 내 브라우저에서 그림이 새로 고쳐지지 않습니다.
- 4. 디렉토리 목록이 새로 고쳐지지 않습니다
- 5. ASP.net에서 컨트롤이 새로 고쳐지지 않습니다. MVC
- 6. TreeView.DataContext를 설정하면 트리가 새로 고쳐지지 않습니다.
- 7. webbrowser 스타일 시트가 새로 고쳐지지 않습니다
- 8. UIModalPresentationFormsheet 작업으로 기본보기가 새로 고쳐지지 않습니다.
- 9. IE에서 Div 컨텐츠가 새로 고쳐지지 않습니다 (화면 새로 고침)
- 10. 예나와 jsp가 일치하지 않습니다.
- 11. 행을 추가 할 때 GridView가 새로 고쳐지지 않습니다. 시도한 Databind()
- 12. TableView의 viewWillAppear()가 호출되었지만 데이터가 새로 고쳐지지 않습니다.
- 13. 파일이 바뀔 때 Android listfiles가 새로 고쳐지지 않습니다.
- 14. url bar의 enter 키를 누르면 Internet Explorer가 새로 고쳐지지 않습니다.
- 15. 값이 변경되면 BindingList에 바인딩 된 DataGridView가 새로 고쳐지지 않습니다.
- 16. 스크롤 할 때 NSTextView가 제대로 새로 고쳐지지 않습니다.
- 17. 명시 적으로 UpdateTarget을 호출 할 때에도 바인딩이 새로 고쳐지지 않습니다.
- 18. InvalidateCol()을 호출 할 때 TStringGrid가 새로 고쳐지지 않습니다.
- 19. setTabText()가 호출되면 목록보기가 새로 고쳐지지 않음
- 20. Tomcat에서 JSP가 제대로 렌더링되지 않습니다.
- 21. JSP가 IceFaces 2.0.0에서 지원되지 않습니다.
- 22. OLAP 큐브를 새로 고치면 피벗 테이블이 자동으로 새로 고쳐지지 않습니다. Excel 2007
- 23. Handlebar.js가 내 템플릿을 새로 고치지 않습니다.
- 24. 내 progressView가 새로 고침되지 않습니다.
- 25. Eclipse/JSP가 내 JavaScript를 파싱하는 이유는 무엇입니까?
- 26. ListActivity 목록이 전체 화면에서 제대로 새로 고쳐지지 않습니까?
- 27. 삽입 후 DataContext 컬렉션이 새로 고쳐지지 않는 이유는 무엇입니까?
- 28. 키 누르기가 처리 될 때 IE가 새로 고쳐지지 않도록하십시오.
- 29. CanExecute-Result가 변경된 후에 컨트롤이 새로 고침되지 않습니다. 내 창에서
- 30. 이 페이지를 새로 고치면 Opera에서 프레임이 새로 고쳐지지 않는 이유는 무엇입니까?
주고 코드, 일부 문장 부호를 추가하고 다른 한 JSP에서 셔플 어떻게 – Bozho
더 나은 설명? –
브라우저에서 뒤로 버튼을 사용하여 ist jsp로 이동하여 두 번째 페이지에 표시되는 데이터를 기반으로하는 두 개의 매개 변수를 전달하는 하이퍼 링크를 – Sam