Spring Boot のセッションとは何か、およびその使用方法
Web アプリケーションでは、セッションは非常に一般的な概念です。ログインステータス、ショッピングカートの内容など、クライアントとサーバー間の状態情報を維持するために使用されます。Spring Boot では、セッションも重要な概念です。この記事では、Spring Boot の Session とは何か、その使い方を紹介します。
セッションとは
セッションは、クライアントとサーバーの間で状態情報を維持するためのメカニズムです。その仕組みは次のとおりです。クライアントがサーバーにリクエストを送信すると、サーバーはリクエストのセッションを作成し、そのセッションに一意の識別子を割り当てます。この識別子はクライアントに送信され、クライアントの Cookie に保存されます。クライアントが次のリクエストを送信すると、クライアントは再び識別子をサーバーに送信し、サーバーはその識別子を使用して対応するセッションを取得し、それによって以前に保存された状態情報を取得します。
Spring Boot では、セッションは HttpSession インターフェイスを通じて実装されます。HttpSession インターフェイスを通じて、Session のプロパティを取得および設定できます。次に例を示します。
@Controller
public class MyController {
@GetMapping("/login")
public String login(HttpSession session) {
session.setAttribute("username", "张三");
return "login";
}
@GetMapping("/home")
public String home(HttpSession session) {
String username = (String) session.getAttribute("username");
System.out.println("当前登录用户:" + username);
return "home";
}
}
上記のコードでは、/login
とという 2 つのリクエスト処理メソッドを定義します/home
。このメソッドでは/login
、HttpSession インターフェイスを介して名前を付けたプロパティを設定しますusername
。このメソッドでは/home
、HttpSession インターフェイスを通じて属性を取得しusername
、現在ログインしているユーザーのユーザー名を出力します。
セッションを使用する
Spring Boot でセッションを使用するのは非常に簡単です。以下の手順に従って設定してください。
1.依存関係を追加する
pom.xml
まず、次の依存関係をファイルに追加する必要があります。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
この依存関係には、Spring Boot Web アプリケーションのコア機能と、一般的に使用されるいくつかの依存関係が含まれています。
2. セッションの設定
Spring Boot では、application.properties
ファイルを通じてセッションのいくつかのプロパティを構成できます。たとえば、次の構成によりセッション タイムアウトを 30 分に設定できます。
server.servlet.session.timeout=30m
上記の設定では、server.servlet.session.timeout
属性を使用してセッション タイムアウトを設定しました。この属性の値は、たとえば 30 分を表す期間にすることができます30m
。
3. セッションを使用する
Session を使用する場合、HttpSession インターフェイスを通じて Session のプロパティを取得および設定できます。たとえば、上記のコードでは、という名前のプロパティsession.setAttribute
を設定するメソッドusername
と、そのプロパティsession.getAttribute
を取得するメソッドを使用します。username
Spring Boot では、アノテーションを通じてセッション内のプロパティを取得および設定することもできます。たとえば、@SessionAttributes
アノテーションを使用してコントローラ クラスをマークし、コントローラ クラスが使用する必要があるセッション内のプロパティを示すことができます。例えば:
@Controller
@SessionAttributes("username")
public class MyController {
@GetMapping("/login")
public String login(Model model) {
model.addAttribute("username", "张三");
return "login";
}
@GetMapping("/home")
public String home(@ModelAttribute("username") String username) {
System.out.println("当前登录用户:" + username);
return "home";
}
}
上記のコードでは、@SessionAttributes
アノテーションを使用してコントローラー クラスをマークし、使用するセッション属性名を指定しますusername
。/login
メソッドでは、Model.addAttribute
メソッドを使用してusername
属性を設定します。/home
このメソッドでは、@ModelAttribute
アノテーションを使用してusername
属性を取得します。
サンプルコード
以下は、Spring Boot でセッションを使用する方法を示す完全なサンプル コードです。
アプリケーション.java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
MyController.java
@Controller
@SessionAttributes("username")
public class MyController {
@GetMapping("/login")
public String login(Model model) {
model.addAttribute("username", "张三");
return "login";
}
@GetMapping("/home")
public String home(@ModelAttribute("username") String username) {
System.out.println("当前登录用户:" + username);
return "home";
}
}
ログイン.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<p>当前登录用户:${username}</p>
<a href="/home">进入主页</a>
</body>
</html>
ホーム.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>Home</h1>
<p>当前登录用户:${username}</p>
</body>
</html>
上記のサンプル コードでは、MyController
という 2 つのリクエスト処理メソッド/login
と を含むコントローラー クラスを定義します/home
。このメソッドでは、という名前の Session プロパティを設定し、ビューを返すメソッドを/login
使用します。ビューでは、式を使用して属性を取得し、ページに表示します。このメソッドでは、アノテーションを使用してプロパティを取得し、コンソールに出力します。ビューでは、式を使用してプロパティを取得し、ページに表示します。Model.addAttribute
username
login
login
${username}
username
/home
@ModelAttribute
username
home
${username}
username
要約する
セッションとは、クライアントとサーバーの間で状態情報を保持するための仕組みであり、Spring Boot においても非常に重要な概念です。この記事の導入を通じて、Spring Boot でのセッションの基本概念と使用法、およびアノテーションを使用してコードを簡素化する方法について学びました。この記事が、皆さんが Spring Boot でのセッションをよりよく理解し、使用できるようになれば幸いです。