1.ページに値を渡す
ジャンプに応じてパラメーターをバインドする方法
最初:ネイティブな方法
@RequestMapping("/form5")
public void form5(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException{
req.setAttribute("message5", "tom");
req.getRequestDispatcher("/jsp/model2.jsp").forward(req, resp);
}
第二种:ModelAndView方式
//使用ModelAndView对象
@RequestMapping("/form6")
public ModelAndView form6(){
ModelAndView mv = new ModelAndView();
mv.addObject("message6", "jack");
mv.setViewName("/jsp/model2.jsp");
return mv;
}
第三种:使用Model对象
//使用Model对象 -- 【掌握】
@RequestMapping("/form7")
public String form7(Model model){
model.addAttribute("message7", "james");
return "/jsp/model2.jsp";
}
注意:
在SpringMvc中默认跳转方式是转发:默认转发 ,因为1.可以共享request中的数据 2.可以转发到WEB-INF 3.效率要高一些
这三种方式,数据默认都是绑定在request中
2番目に、ビューパーサー
実際のプロジェクトでは、返されたデータは通常、処理のためにビューパーサーに渡されます。
ビューとデータを解析するようにビューパーサーを構成すると、返される値に関係なく、デフォルトで自動的にビューパーサーを通過します
。
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀prefix:会自动在返回值前面加个上/ -->
<property name="prefix" value="/"></property>
<!-- 前缀suffix:会自动在返回值后面加个上.jsp -->
<property name="suffix" value=".jsp"></property>
</bean>
3.ジャンプ方法
相違点:
転送:1つの要求、要求のデータを共有できます。アドレスバーは変更されません。外部アプリケーションに移動できません。
リダイレクト:この要求以上、要求のデータを共有できません。アドレスバーが変更されます。外部アプリケーションに向けられ
たSpringMvcの転送とリダイレクト:
転送:
- デフォルトの転送:ビューリゾルバを通過します
@RequestMapping("form6")
//默认转发,会经过视图解析器。
public ModelAndView getResp5(){
ModelAndView m=new ModelAndView();
m.addObject("message6", "ModelAndView");
m.setViewName("jsp/model2");
return m;
}
2.显示转发:forward:xxx
不会经过视图解析器,一般不用。
@RequestMapping("form6")
//显示转发forward,不会经过视图解析器。一般不会使用
public ModelAndView getResp3(){
ModelAndView m=new ModelAndView();
m.addObject("message6", "ModelAndView");
m.setViewName("forward:/jsp/model2.jsp");
return m;
}
重定向:redirect:xxx
不会经过视图解析器
@RequestMapping("form6")
//redirect,不会经过视图解析器。
public ModelAndView getResp4(){
ModelAndView m=new ModelAndView();
m.addObject("message6", "ModelAndView");
m.setViewName("redirect:/jsp/model2.jsp");
return m;
}