- PR -

ブラウザの戻るボタンの対応

1
投稿者投稿内容
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2005-01-19 21:12
---main.jsp---
<a href="aaa1.jsp?a=1"></a>
<a href="aaa2.jsp?a=2"></a>

---aaa1.jsp---
自作クラスA.setTEMP(request.getParamerter("a")) 

<%=自作クラスA.getTEMP() + 1%>

---aaa2.jsp---
自作クラスA.setTEMP(request.getParamerter("a")) 

<%=自作クラスA.getTEMP() + 2%>
(型変換は省きます)


main.jspからaaa1に遷移すると2が表示され、
次にaaa2に遷移すると4が表示されます。
ここまではいいと思うのですがブラウザで戻るが押されると、
aaa1の画面で3と表示されます。

どう対処したらいいでしょう。よろしくお願いします。
pascal
常連さん
会議室デビュー日: 2004/04/29
投稿数: 29
お住まい・勤務地: 神奈川県
投稿日時: 2005-01-19 22:10
こんにちは。

「aaa1.jspで<戻る>ボタンを押してmain.jspに戻り、再度aaa1.jspに遷移すると、1と表示されて欲しい」ということですか?
それと、自作クラスAのインスタンスをそれぞれのjspでどう作っているか、が分かる程度のコードをもう少し書いてみてはいかがでしょう?
例えば、requestから取り出しているとか、sessionから取り出しているとか、毎回newしているとか、です。
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2005-01-19 23:10
説明不足ですいません。

main.jsp
は左フレームで
<a href="aaa1.jsp?a=1"></a>
<a href="aaa2.jsp?a=2"></a>
をクリックするとそれに対応したファイルが右フレームに表示されます。

この例だと戻るを押したときは数値は2になってほしいです。

aaa1.jsp、aaa2.jspとかいてありますが
実はaaaServlet→aaa2.jspのような経由でjspを呼び出しています。

よろしくお願いします。
aaaServlet
==========================================================================
public class aaaServlet extends HttpServlet{

public void doPost(HttpServletRequest request, HttpServletResponse response){
try{
HttpSession session = request.getSession(true); // Sessionオブジェクト
自作クラスA 自作クラスA = new 自作クラスA();
// Sessionオブジェクトにデータを格納
session.setAttribute("自作クラスA" , 自作クラスA);
getServletContext().getRequestDispatcher("/aaa.jsp").forward(request, response);







aaa.jsp
====================================================================
<%@page contentType="text/html;charset=Shift_JIS"%>
<%@page errorPage="Error.jsp"%>
<jsp:useBean id=" 自作クラスA " class=" 自作クラスA " scope="session"/>
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2005-01-19 23:34
引用:

金太郎さんの書き込み (2005-01-19 23:10) より:
aaaServlet
==========================================================================
public class aaaServlet extends HttpServlet{

public void doPost(HttpServletRequest request, HttpServletResponse response){
try{
HttpSession session = request.getSession(true); // Sessionオブジェクト
自作クラスA 自作クラスA = new 自作クラスA();
// Sessionオブジェクトにデータを格納
request.setAttribute("自作クラスA" , 自作クラスA);
getServletContext().getRequestDispatcher("/aaa.jsp").forward(request, response);







aaa.jsp
====================================================================
<%@page contentType="text/html;charset=Shift_JIS"%>
<%@page errorPage="Error.jsp"%>
<jsp:useBean id=" 自作クラスA " class=" 自作クラスA " scope="request"/>



これじゃぁだめ?

session→request
pascal
常連さん
会議室デビュー日: 2004/04/29
投稿数: 29
お住まい・勤務地: 神奈川県
投稿日時: 2005-01-20 00:33
こんにちは。

右フレームに表示されている画面、表示される値をそれぞれ書くと、
0 ?
↓aaa1へのリンククリック
1 aaa1  表示=2
↓aaa2へのリンククリック
2 aaa2 表示=4
↓戻るボタンクリック
3 aaa1 表示=3
ですよね。

私の想像力ではまだ分からないことがあるのですが、少なくとも、2から3の間では、ブラウザのキャッシュは使われていないと考えられます。
つまり、Servletを経由しているのだとおもいますが、その際、サーブレット側でrequest.getParameter("a")すると何が取れるのでしょう?
恐らく2ではないかと思うのですが。

それから、Beanのscopeをrequestにしたらどうなりますか?

これだけでは解決にはなりませんが、考える糸口にはなるのではないかと思います。
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2005-01-22 00:36
sessionをrequestに変更することで成功しました!
有難うございます。
1

スキルアップ/キャリアアップ(JOB@IT)