SpringMVCのパラメータ伝達
7396 ワード
1、受信要求パラメータ
Spring MVC Web要求のデータをコントローラに提出するには、次のような方法があります.
HttpServletRequestを使って取得します.
@Request Paramを使って注釈を付ける
自動機構を使ってビーンオブジェクトにパッケージ化
2、HttpServletRequestを使用して取得した例
Spring自動パラメータ注入HttpServletRequest
長所は直接で、短所は自分でデータタイプの転換を処理する必要があります.
Springは、フォームパラメータを自動的にメソッドパラメータに注入します(名前が一致します).
@Request Paramの注釈を使って、不一致の名前をマッピングします.
利点パラメータタイプは自動変換されますが、タイプ変換異常が発生する場合があります.
Userエンティティを定義し、属性名はフォームコンポーネントのnameと同じです.
Controllerモジュールの処理後、JSPに値を送る必要がある場合は、以下の方法で
直接HttpServletRequestとSessionを使用します.
ModelAndViewオブジェクトを使う
ModelMapパラメータオブジェクトを使う
@ModelAttributeで注釈を付ける
6、ModelAndViewオブジェクトを使用する例
Controller処理方法が完了したらModelAndViewオブジェクトに戻り、表示ビュー名とモデルデータが含まれます.
7、ModelMapパラメータオブジェクトを使用する例
Controller処理方法にModelMapタイプのパラメータを追加します.
8、使用@ModelAttributeの例
Controllerメソッドのパラメータ部分または
9、セッション記憶
HttpServletRequestのget Session()方法でアクセスできます.
Spring MVCはデフォルトでは転送方式でビューを位置決めしています.リダイレクトが必要なら、次のような方法があります.
RedirectViewを使う
redirectを使う:プレフィックス
Controllerの要求処理方法がModelAndViewオブジェクトである場合、RedirectView法を使用してリダイレクトでき、インスタンスコード
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";
}