2

クエリからフォーラムを検索しましたが、答えが見つかりませんでした。私はSpring MVCを初めて使用するので、少し混乱しています。

私はSpring MVCアプリケーションを持っています.リクエストパラメータからいくつかのデータを取得します.セッションを通してそのデータを維持する必要があります. Spring 3.0.3 を使用してこれを達成するにはどうすればよいでしょうか。

私はこれを実装するためにいくつかの考えを持っていました

1>セッションスコープでpojoを作成します 2>次に、コントローラーでpojoを自動配線し、pojoに入力します。3>セッションスコープ内にあるため、入力された値はセッション全体で利用できるはずです

私が正しい軌道に乗っているかどうか教えてください。

ありがとう。

4

1 に答える 1

3

あなたが言ったアイデアは、セッションスコープの Bean を操作する 1 つの方法です。セッション スコープの POJO を定義できます。

@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class YourSessionBean{
...
}

そして、それを Controller クラスに挿入できます。

@Controller
public class YourController {
     @Autowired
     private YourSessionBean yourSessionBean;
     ...
}

@SessionAttributesを使用して POJO をセッションに保存することもできます。

public class YourObject {
...
}

@SessionAttributesコントローラーで注釈を使用して、のインスタンスYourObjectをセッションに入れることができます。

@Controller
@SessionAttributes("yourObj")
public class YourController {
     ...
    @RequestMapping(value="/url")  
    public ModelAndView process(...) {  
    ModelAndView modelAndView = new ModelAndView();  
    modelAndView.addObject("yourObj", new YourObject());  // this will put YourObj into session

    return modelAndView;  
}  
}

ただし、を使用している間@SessionAttributesは、以下のステートメント ブロックを考慮する必要があります ( @SessionAttributes Docからコピー)。

注: この注釈を使用して示されるセッション属性は、特定のハンドラーのモデル属性に対応し、会話型セッションに透過的に格納されます。これらの属性は、ハンドラーが会話セッションの完了を示すと削除されます。したがって、この機能は、特定のハンドラーの会話の過程で一時的にセッションに格納されることになっている会話属性に使用してください。

ユーザー認証オブジェクトなどの永続的なセッション属性については、代わりに従来の session.setAttribute メソッドを使用してください。

HttpSessionハンドラー メソッドのメソッド引数として使用して@RequestMapping、POJO クラスをセッションに追加することもできます。

@Controller
public class YourController {
     ...
    @RequestMapping(value="/url")  
    public ModelAndView process(HttpSession session,...) {  
    ModelAndView modelAndView = new ModelAndView();  
    session.setAttribute("yourObj", yourObj);
    ...  
    return modelAndView;  
}  
}
于 2013-10-31T07:30:48.497 に答える