詰まった・・・
セッションの扱いについて行き詰った。。
ログイン時のActionクラス内(LoginAction.java)でセッションを作成して、
別のActionクラス(OmikujiAction)でセッションに格納された値を更新しようとしてもセッション内の値は初期値のまま。
もしかして根本的なとこが間違ってるとか。。
LoginAction.java
package omikuji.login; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class LoginAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm arg1, HttpServletRequest arg2, HttpServletResponse arg3) throws Exception { LoginForm aaa = (LoginForm)arg1; System.out.println(aaa.getUserId()); System.out.println(aaa.getPassword()); ActionForward forward; if(aaa.getUserId() == null || "".equals(aaa.getUserId())){ forward = mapping.findForward("relogin"); } else { forward = mapping.findForward("login"); //ログインしたらおみくじ回数カウント用オブジェクト作成 HttpSession session = arg2.getSession(); Integer initCount = 0; session.setAttribute("daikichiCount", initCount); session.setAttribute("chukichiCount", initCount); session.setAttribute("kichiCount", initCount); session.setAttribute("kyouCount", initCount); session.setAttribute("chukyouCount", initCount); session.setAttribute("daikyouCount", initCount); } return forward; } }
OmikujiAction
package omikuji.login; import java.util.Random; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class OmikujiAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm arg1, HttpServletRequest request, HttpServletResponse arg3) throws Exception { //おみくじメソッドより運勢取得 OmikujiForm kuji = new OmikujiForm(); kuji.setFortune(createAndSaveFortuneStr(request)); request.setAttribute("test", kuji); //フォワード先指定 ActionForward forward; forward = mapping.findForward("omikuji"); return forward; } /** * Generate Fortune * @return string */ public String createAndSaveFortuneStr(HttpServletRequest request) { String str = new String(); HttpSession session = request.getSession(); Random rand = new Random(); int i = rand.nextInt(5); int tmp = 0; switch (i) { case 0: str = "大吉"; tmp = (Integer)session.getAttribute("daikichiCount"); session.setAttribute("daikichiCount", tmp++); break; case 1: str = "中吉"; tmp = (Integer)session.getAttribute("chukichiCount"); session.setAttribute("chukichiCount", tmp++); break; case 2: str = "吉"; tmp = (Integer)session.getAttribute("kichiCount"); session.setAttribute("kichiCount", tmp++); break; case 3: str = "凶"; tmp = (Integer)session.getAttribute("kyouCount"); session.setAttribute("kyouCount", tmp++); break; case 4: str = "中凶"; tmp = (Integer)session.getAttribute("chukyouCount"); session.setAttribute("chukyouCount", tmp++); break; case 5: str = "大凶"; tmp = (Integer)session.getAttribute("daikyouCount"); session.setAttribute("daikyouCount", tmp++); break; default: str = "えらーーーーーー"; break; } return str; } }