مشکل اصلی شما این است که مرورگر بجای اینکه صفحه ای را که کاربر با فشردن دکمه back در خواست می کند را از سرور بیاورد از cache مرورگر می آورد. برای حل این مشکل شما باید به مرورگر بگویید که صفحات JSP مورد نظر شما را cache نکند.
برای این کار در Java EE می توانید یک Filter تعریف کنید و header های لازم برای cache نکردن یک صفحه توسط مرورگر را درون آن قرار دهید:
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse hsr = (HttpServletResponse) res;
hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0.
hsr.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(req, res);
}
و فیلتر تعریف شده را درون web.xml ثبت کنید:
<filter>
<filter-name>noCacheFilter</filter-name>
<filter-class>com.example.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>noCacheFilter</filter-name>
<url-pattern>/secured/*.jsp</url-pattern>
</filter-mapping>