springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

来源:互联网 发布:北京软件退税计算方法 编辑:程序博客网 时间:2024/05/05 07:52

springMVC中的方法支持的返回方式:ModelAndView,  Model,  ModelMap,  Map, View, String, void。

1 ModelAndView

Java代码  收藏代码
  1.    
  2. @RequestMapping("/show1"
  3. public ModelAndView show1(HttpServletRequest request, 
  4. HttpServletResponse response) throws Exception { 
  5.        ModelAndView mav = new ModelAndView("/demo2/show"); 
  6.        mav.addObject("account""account -1"); 
  7.        return mav; 
  8.    } 

ModelAndView构造方法可以:指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面。
使用addObject()设置需要返回的值,保存在请求对应的模型对象中,可以在 JSP 视图页面中访问到。

2 Model 是一个接口, 其实现类为ExtendedModelMap,ModelMap的子类。

3 ModelMap是LinkedHashMap的子类,

4 Map  

Java代码  收藏代码
  1. @RequestMapping("/demo2/show"
  2.     public Map<String, String> getMap() { 
  3.         Map<String, String> map = new HashMap<String, String>(); 
  4.         map.put("key1""value1");//相当于request.setAttribute方法。
  5.         map.put("key2""value2"); 
  6.         return map; 
  7.     } 

在jsp页面中可直通过${key1}获得到值。

5 View 可以返回 pdf 或 excel
6 String 指定返回的视图页面名称,结合springMVC的xml的设置。

<!-- 视图解释类配置,设置视图的寻找路径, InternalResourceViewResolver加入了JSTL的支持 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean>

注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面(可以return一个JSONPObject,直接到前台就是json)。
例如:

Java代码  收藏代码
  1. @RequestMapping(value = "/something", method = RequestMethod.GET) 
  2. @ResponseBody 
  3. public String helloWorld()  { 
  4. return "Hello World"

上面的结果会将文本"Hello World "直接写到http响应流。

Java代码  收藏代码
  1. @RequestMapping("/welcome"
  2. public String welcomeHandler() { 
  3.   return "center"

对应的逻辑视图名为“center”,URL= prefix前缀+视图名称 +suffix后缀组成。

7 void  则响应的视图就是访问地址

Java代码  收藏代码
  1. @RequestMapping("/welcome"
  2. public void welcomeHandler() {} 

此例对应的逻辑视图名为"welcome"。

小结:
1. String 返回值类型是比较常用的,返回的逻辑视图名不会和请求 URL 绑定,具有很大的灵活性,而模型数据又可以通过 ModelMap 控制。
2.使用void, map, Model 时,返回对应的逻辑视图名称真实url为:prefix前缀+视图名称 +suffix后缀组成。
3. ModelAndView返回视图名称可以不受请求的url绑定,ModelAndView可以设置返回的视图名称。


Model model, HttpServletRequest request, ModelMap map声明变量

request.getSession().setAttribute("test", "haiwei2Session");
request.setAttribute("test", "haiwei1request"); 
map.addAttribute("test", "haiweiModelMap");
model.addAttribute("test", "haiweiModel");

${test}这个方式取值,优先取Model和ModelMap的,Model和ModelMap是同一个东西,谁最后赋值的就取谁的,然后是request,最后是从session中获取

0 1