Java 序列生成将在JSP页面刷新时过期

Java 序列生成将在JSP页面刷新时过期,java,sql,jsp,Java,Sql,Jsp,在JSP中注册新用户时,PID由序列生成器SQL自动生成。但出现的问题是,当我再次刷新提交的页面save.jsp时,相同的数据将再次存储,并具有下一个序列值。如何避免呢 save.jsp 密码.java 刷新页面时,brwoser始终发送最后一个请求,因此在第一次发布后,下一次刷新将发送相同的发布请求 您需要实现POST/redirect/GET范式: 处理POST请求后,不要将响应/服务下一个资源直接写入客户端,而是让客户端对下一个资源执行GET请求。这是通过调用在jsp或servlet中完成

在JSP中注册新用户时,PID由序列生成器SQL自动生成。但出现的问题是,当我再次刷新提交的页面save.jsp时,相同的数据将再次存储,并具有下一个序列值。如何避免呢

save.jsp 密码.java
刷新页面时,brwoser始终发送最后一个请求,因此在第一次发布后,下一次刷新将发送相同的发布请求

您需要实现POST/redirect/GET范式:


处理POST请求后,不要将响应/服务下一个资源直接写入客户端,而是让客户端对下一个资源执行GET请求。这是通过调用在jsp或servlet中完成的。这样刷新总是会触发GET请求,这很好。

怎么样?@Crozin您能详细告诉我吗?
response.setHeader("Cache-Control", "no-cache"); //HTTP 1.1
response.setHeader("Pragma", "no-cache"); //HTTP 1.0
response.setDateHeader("Expires", 1); //prevents caching at the proxy server

String account = request.getParameter("account");
String username = request.getParameter("username");
String password = request.getParameter("password");
String notes = request.getParameter("notes");

String LoginUser=(String)session.getAttribute("uid");
passwords a = new passwords();

a.setLoginUser(LoginUser);
a.setAccount(account);
a.setUsername(username);
a.setPassword(password);
a.setNotes(notes);


SessionFactory sf = NewHibernateUtil.getSessionFactory();
Session s = sf.openSession();
Transaction tx = s.beginTransaction();
s.save(a);
tx.commit();    
@Entity
@Table(name = "passwords")
public class passwords implements Serializable{

@Id
@SequenceGenerator(name = "B", sequenceName = "PIDSeq", allocationSize = 1)
@GeneratedValue(generator = "B", strategy = GenerationType.SEQUENCE)
int PID;
String LoginUser;
String username;
String account;
String password;
String notes;'