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

来源:互联网 发布:2016年母婴数据分析 编辑:程序博客网 时间:2024/04/25 23:30

转自:http://blog.csdn.net/zb0567/article/details/7921155#comments

spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void。下面将对具体的一一进行说明:
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()设置需要返回的值,addObject()有几个不同参数的方法,可以默认和指定返回对象的名字。
调用addObject()方法将值设置到一个名为ModelMap的类属性,ModelMap是LinkedHashMap的子类,
具体请看类。

Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类。

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""value-1"); 
  5.         map.put("key2""value-2"); 
  6.         return map; 
  7.     } 


在jsp页面中可直通过${key1}获得到值, map.put()相当于request.setAttribute方法。
写例子时发现,key值包括 - . 时会有问题.

View 可以返回pdf excel等,暂时没详细了解。

String 指定返回的视图页面名称,结合设置的返回地址路径加上页面名称后缀即可访问到。
注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面。
例如:

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后缀组成。

void  如果返回值为空,则响应的视图页面对应为访问地址

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


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

小结:
1.使用 String 作为请求处理方法的返回值类型是比较通用的方法,这样返回的逻辑视图名不会和请求 URL 绑定,具有很大的灵活性,而模型数据又可以通过 ModelMap 控制。
2.使用void,map,Model 时,返回对应的逻辑视图名称真实url为:prefix前缀+视图名称 +suffix后缀组成。
3.使用String,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中获取。


SpringMVC+ajax返回JSON串

转自(文章很好,最好看原文):http://blog.csdn.net/zdp072/article/details/18187033

一、引言

本文使用springMVC和ajax做的一个小小的demo,实现将JSON对象返回到页面,没有什么技术含量,纯粹是因为最近项目中引入了springMVC框架,作为学习之用,不喜勿喷,欢迎拍砖。


二、入门例子

①. 建立工程,并导入相应spring jar包和解析json的包fastjson。

②. 在web.xml文件中配置Spring的核心类DispatcherServlet

③. 配置Spring的核心配置文件spring-servlet.xml

④. 编写实体类Person

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. public class Person {  
  2.     private String name;  
  3.     private Integer age;  
  4.   
  5.     public String getName() {  
  6.         return name;  
  7.     }  
  8.   
  9.     public void setName(String name) {  
  10.         this.name = name;  
  11.     }  
  12.   
  13.     public Integer getAge() {  
  14.         return age;  
  15.     }  
  16.   
  17.     public void setAge(Integer age) {  
  18.         this.age = age;  
  19.     }  
  20.   
  21.     public String toString() {  
  22.         return "[name: " + name + ", age: " + age + "]";  
  23.     }  
  24. }  

⑤. 编写控制器类PersonControll

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. @Controller  
  2. public class PersonControll {  
  3.     @RequestMapping("toAjax.do")  
  4.     public String toAjax() {  
  5.         return "ajax";  
  6.     }  
  7.       
  8.     @RequestMapping(value = "ajax.do", method = RequestMethod.GET)  
  9.     public void ajax(@ModelAttribute Person person,PrintWriter printWriter) {  
  10.         System.out.println(person);  
  11.         String jsonString = JSON.toJSONString(person, SerializerFeature.PrettyFormat);  
  12.         printWriter.write(jsonString);  
  13.         printWriter.flush();  
  14.         printWriter.close();  
  15.     }  
  16. }  

⑥. 编写访问页面ajax.jsp

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  3. <html>  
  4.     <head>  
  5.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  6.         <title>ajax for springMVC</title>  
  7.         <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>  
  8.         <script type="text/javascript">  
  9.             $(function() {  
  10.                 $("#click").click(function() {  
  11.                     $.ajax( {  
  12.                         type : "GET",  
  13.                         url : "ajax.do",  
  14.                         data : "name=zhangsan&age=25",  
  15.                         dataType: "json",  
  16.                         success : function(msg) {  
  17.                             alert(msg.name + "," + msg.age);  
  18.                         }  
  19.                     });  
  20.                 });  
  21.             });  
  22.         </script>  
  23.     </head>  
  24.     <body>  
  25.         <input id="click" type="button" value="click to show person" />  
  26.     </body>  
  27. </html>  

⑦. 访问url: http://localhost:8080/springMVC/toAjax.do

⑧. 源码下载 http://download.csdn.net/detail/zdp072/6840545




0 0
原创粉丝点击