今後の予定
残りの授業は今週と来週だけなので、遅くても今週で全般的に動作するようにし、来週は細かい調整やデバッグのために時間を確保すること。
1月8日と1月9日の1現目は最終的な動作確認とPowerPointによる発表資料の作成にあてる。
1月9日の2現目は発表とデモを行う。
制限時間:20分
発表: 10分
デモ: 5分
質疑: 5分
詳細は「最終日の発表・デモについて」を参照すること。
ログイン後に決まったページに遷移する方法
Spring Security のデフォルトでは、認証が必要なページAにアクセスしたときに未ログインであればログイン画面を表示し、ログイン後はページAに遷移する。
ログイン画面を表示した後、決まったページに遷移したい場合は、spring-security.xml の form-login タグの設定で always-use-default-target=”true” を指定する。
<sec:form-login login-page="/login"
default-target-url="/home"
login-processing-url="/login"
always-use-default-target="true"
authentication-failure-url="/login?error=true" />
このように設定すると、ページAにアクセスしようとしてログイン画面を表示したときも、ログイン後は home に遷移する。
Webアプリケーション内でのファイルアクセス
Webアプリケーションがファイルにアクセスする場合は、Webアプリケーションが動作している物理パスを取得して、その配下のファイルにアクセスしなければならない。
Webアプリケーションが動作している物理パスはServletContextクラスのgetRealPath()メソッドで取得する。
ServletContext は、@Authwired で宣言すればよい。
HogeController.java
@Controller
public class HogeController {
@Autowired
private ServletContext context;
// snip
/**
* 例えば画像ファイルを取得する場合
*
* @param name 画像ファイル名
* @return 画像ファイルに対応する File のインスタンス
*/
private File getImageFile(String name) {
String dir = context.getRealPath("/images");
File f = new File(dir, name);
return f;
}
}