数据在db中更新,但不在jsp页面中更新

时间:2014-12-14 16:03:39

标签: java jsp

我使用db中的hibernate更新对象。但它在jsp页面中没有变化。我重新运行代码(使用eclipse),然后更新jsp页面。

以下代码使用hibernate显示数据库中的数据。更新数据库时,即使重新加载此页面,也不会立即更新此页面。

例如,我打开此页面,此页面显示数据库中的所有项目,我更新数据库并重新加载此页面但它保持不变。我使用eclipse重新运行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页面时都会重新编译

2 个答案:

答案 0 :(得分:0)

您应该发布代码,以便我们为您提供更明确和准确的答案。

但是,如果我理解正确,那听起来就像你,除了你的JSP页面上的数据与你的数据库绑定,显然不是这样。

JSP页面中的文本与您的数据库没有神奇的连接。 它只是文字。

您可以做的是通过JavaScript更改文本以编程方式匹配新值(再次提供您的代码,以便我们向您展示示例)。

或者,更好的解决方案是使用某种绑定库,如Angular或更简单的绑定库,如rivetsjs。

编辑:

如果这是浏览器缓存问题,那么您可以通过添加以下行来禁用缓存:

<%
   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

答案 1 :(得分:0)

除了大卫的答案,看看你的代码,他应该工作,你可以尝试: 还要添加一些日志记录语句,以确保在服务器上运行正确的代码。另一个技巧是使得requestk看起来像一个get,所以没有缓存。

制作一个简单的html表单,如:

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

而不是yourJspPageName放置您的页面名称,不必添加路径。