2014-12-14 3 views
-1

db에서 최대 절전 모드를 사용하여 개체를 업데이트합니다. 그러나 JSP 페이지에서는 변경되지 않습니다. 나는 이클립스를 사용하여 코드를 다시 실행해야하고 JSP 페이지가 업데이트된다.db에서 업데이트되었지만 JSP 페이지에서는 업데이트되지 않은 데이터

다음 코드는 최대 절전 모드를 사용하여 데이터베이스의 데이터를 표시합니다. 이 페이지가 다시로드 되더라도 데이터베이스를 업데이트하면이 페이지가 즉시 업데이트되지 않습니다.

예를 들어이 페이지를 열면이 페이지는 데이터베이스의 모든 항목을 표시하고 데이터베이스를 업데이트하고이 페이지를 다시로드하지만 동일하게 유지됩니다. 이클립스를 사용하여 jsp 페이지를 다시 실행 한 다음 업데이트되었습니다 (즉, 데이터베이스의 변경 사항이 여기 반영됨).

<%! 
Item item = new Item(); 
SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); 
Session session_ = sessionFactory.openSession(); 
%> 

<table id="t01"> 
<tr> 
    <th>Id</th> 
    <th>Name</th>  
    <th>Price</th> 
    <th>Quantity</th> 
</tr> 
<%List itemsList = session_.createQuery("FROM Item").list(); 
for (Iterator iterator = itemsList.iterator(); iterator.hasNext();){ 
    item = (Item)iterator.next(); 
    out.println("<tr>" + "<td>" + item.getId() + "</td>" + "<td>" + item.getName() + "</td>" + "<td>" + item.getPrice() + "</td>" + "<td>" + item.getQuantity() + "</td></tr>"); 
} 
%> 

내가 JSP 페이지에 추가하고 JSP 페이지가 가 다시로드 것마다 다시 컴파일됩니다 뭔가가 있나요?

+3

도움이되는 코드가 없으면 질문에 코드를 추가하십시오. –

+0

코드를 추가했습니다. –

답변

0

보다 명확하고 정확한 답을 줄 수 있도록 코드를 게시해야합니다.

그러나 내가 올바르게 이해한다면 JSP 페이지의 해당 데이터를 데이터베이스와 결합한다는 점만 제외하면 분명히 들린다. 분명히 그렇지 않다.

텍스트은 마술처럼 에 데이터베이스에 연결되지 않습니다. 데이터베이스에이 연결되어 있지 않습니다. 그냥 텍스트.

당신이 할 수있는 일은 JavaScript를 통해 프로그래밍 방식으로 새로운 값과 일치하도록 텍스트를 변경하는 것입니다 (예제를 보여주기 위해 코드를 다시 입력하십시오).

또는 더 좋은 해결책은 Angular와 같은 일종의 바인딩 라이브러리 또는 rivetsjs와 같은 간단한 라이브러리를 사용하는 것입니다.

편집 :

이 브라우저 캐시 problom 다음이 줄을 추가하여 캐시를 해제 할 수있는 경우 :

<% 
    response.setHeader("Pragma", "no-cache"); 
    response.setHeader("Cache-Control", "no-cache"); 
    response.setDateHeader("Expires", 0); 
%> 

소스 : http://www.xyzws.com/jspfaq/how-to-disable-browser-caching-for-a-specific-jsp/11

+0

페이지를 새로 고침하면 데이터베이스에서 데이터베이스를 업데이트해야합니다. 그러나 이것은 사실이 아닙니다. 코드도 추가했습니다. –

+0

그러면 브라우저 캐시에서 태그를 사용하지 않도록 설정해야합니다. 하지만 먼저 페이지를 다시로드하려면 Ctrl + F5를 사용하십시오. –

+0

메타 태그를 사용하는 방법은 무엇입니까? 아니면 jsp 페이지에 추가 할 JSP 페이지가 ** 다시 컴파일 될 때마다 ** 다시로드됩니다. –

0

다윗의 대답 외에 코드보고 그리고 그의 노력을 시도해 볼 수 있습니다 : 올바른 로깅 문을 추가하여 서버에서 올바른 코드가 실행되는지 확인하십시오. 또 다른 속임수는 요청과 같이 요청을 보이게하는 것이므로 캐싱이 없습니다. 경로를 추가 할 필요 없다, yourJspPageName이 페이지 이름을 넣어 대신에

<form action=yourJspPageName.jsp name=f1 method=get> 
<input type=hidden value=1 name=r> 
<input type=submit value=Refresh> 
</form> 

:

는 간단한 HTML 양식과 같이합니다.

관련 문제