SpringMVCのパラメータ伝達

7396 ワード

1、受信要求パラメータ
Spring MVC Web要求のデータをコントローラに提出するには、次のような方法があります.
HttpServletRequestを使って取得します.
@Request Paramを使って注釈を付ける
自動機構を使ってビーンオブジェクトにパッケージ化
2、HttpServletRequestを使用して取得した例
Spring自動パラメータ注入HttpServletRequest
長所は直接で、短所は自分でデータタイプの転換を処理する必要があります.
    @RequestMapping("/login-action1.from")
    public String checkLogin1(HttpServletRequest req){
        String name=req.getParameter("name");
        String pwd=req.getParameter("pwd");
        System.out.println(name);
        System.out.println(pwd);
        User user=uerService.login(name,pwd);
        //...      
        return "success";
    }
3、@Request Paramで注釈する
Springは、フォームパラメータを自動的にメソッドパラメータに注入します(名前が一致します).
@Request Paramの注釈を使って、不一致の名前をマッピングします.
利点パラメータタイプは自動変換されますが、タイプ変換異常が発生する場合があります.
    @RequestMapping("/login-action2.from")
    public String checkLogin2(
            String name,
            @RequestParam("pwd")String password,
            HttpServletRequest req){
        System.out.println(name);
        System.out.println(password);
        User user=userService.login(name,password);
        //...      
        return "success";
    }
4、自動機構を使ってビーン属性にパッケージ化した例
Userエンティティを定義し、属性名はフォームコンポーネントのnameと同じです.
public class User {
    private String name;
    private String pwd;
    //  setter getter  
}
Controllerコンポーネントの処理方法でUserタイプのパラメータを定義します.
    @RequestMapping("/login-action3.from")
    public String checkLogin3(User user){
        System.out.println(user.getName());
        System.out.println(user.getPassword());
        User user=userService.login(user.getName(),user.getPassword());
        //...      
        return "success";
    }
5、ページに値を送る 
Controllerモジュールの処理後、JSPに値を送る必要がある場合は、以下の方法で
直接HttpServletRequestとSessionを使用します.
ModelAndViewオブジェクトを使う
ModelMapパラメータオブジェクトを使う
@ModelAttributeで注釈を付ける
6、ModelAndViewオブジェクトを使用する例
Controller処理方法が完了したらModelAndViewオブジェクトに戻り、表示ビュー名とモデルデータが含まれます.
    @RequestMapping("/login-action.from")
    public String checkLogin4(String name,String pwd){
        User user=userService.login(name,pwd);
        Map<String,Object> data=new HashMap<String, Object>();
        data.put("user",user);
        return new ModelAndView("success",data);
    }
ModelデータはHttpServletRequestのAttributeを利用してJSPページに伝えられます.
7、ModelMapパラメータオブジェクトを使用する例
Controller処理方法にModelMapタイプのパラメータを追加します.
    @RequestMapping("/login-action.from")
    public String checkLogin4(String name,String pwd,ModelMap model){
        User user=userService.login(name,pwd);
        model.addAttribute("user",user);
        return "success";
    }
ModelMapデータはHttpServletRequestのAttributeを利用してJSPページに伝えられます.
8、使用@ModelAttributeの例
Controllerメソッドのパラメータ部分または
    @RequestMapping("/login-action.from")
    public String checkLogin4(
            @ModelAttribute("user")User user){
        //TODO
        return "success";
    }
     
    @ModelAttribute("name")
    public String getName(){
        return name;
    }
    
@ModelAttributeデータはHttpServletRequestのAttributeを利用してJSPページに伝えられます.
9、セッション記憶
HttpServletRequestのget Session()方法でアクセスできます.
    @RequestMapping("/login-action.from")
    public String checkLogin4(String name,String pwd,
            ModelMap model,HttpServletRequest req){
        User user=userService.login(name,pwd);
        req.getSession().setAttribute("loginUser", user);
        model.addAttribute("user",user);
        return "success";
    }
10、リダイレクトビュー
Spring MVCはデフォルトでは転送方式でビューを位置決めしています.リダイレクトが必要なら、次のような方法があります.
RedirectViewを使う
redirectを使う:プレフィックス
Controllerの要求処理方法がModelAndViewオブジェクトである場合、RedirectView法を使用してリダイレクトでき、インスタンスコード
    public ModelAndView checkLogin(){
        //TODO
        RedirectView view=new RedirectView("login.form");
        return new ModelAndView(view);
    }
Controllerの要求処理方法の戻り値がStringタイプである場合、「redirect:プレフィクス」方法を使用してリダイレクトすることができ、例示的なコード
    public String checkLogin(){
        //TODO
        return    "redirect:login.form";
    }