menu
書いてる野郎
orebike@gmail.com
いろいろコードが長くなってきたので整理する。
共通的に使う資産の記述をスーパークラスへ移動してサブで継承するようにする。
こうする。
public class BaseController { @Autowired public AuthUser authUser; @Autowired public HttpSession session; @Autowired public HttpServletRequest request; }
使い勝手を考えてとりあえず全部 public にしておく
全部の Controller で継承する
こんな感じ
@Controller @RequestMapping("/login") public class LoginController extends BaseController{ @RequestMapping("") @NoAuth public String index() { System.out.println(authUser.isLoginFlg()); return "login/index"; } @RequestMapping("/doLogin") @NoAuth public String doLogin() { session.invalidate(); session = request.getSession(true); authUser.setLoginFlg(true); return "redirect:/hoge"; } @RequestMapping("/doLogout") @NoAuth public String doLogout() { session.invalidate(); session = request.getSession(true); authUser.setLoginFlg(false); return "redirect:/login"; } }
セッションの張替え処理があるのでこれをスーパーのメソッドとして移設する。
public class BaseController { @Autowired public AuthUser authUser; @Autowired public HttpSession session; @Autowired public HttpServletRequest request; public void refreshSession() { session.invalidate(); session = request.getSession(true); } }
移設したからそれを使う。
@Controller @RequestMapping("/login") public class LoginController extends BaseController{ @RequestMapping("") @NoAuth public String index() { return "login/index"; } @RequestMapping("/doLogin") @NoAuth public String doLogin() { this.refreshSession(); authUser.setLoginFlg(true); return "redirect:/hoge"; } @RequestMapping("/doLogout") @NoAuth public String doLogout() { this.refreshSession(); authUser.setLoginFlg(false); return "redirect:/login"; } }