一个例子胜过千言万语,直接上代码

SpringMVC的Controller控制器返回值详解

SpringMVC Controller 返回值几种类型

Spring MVC 更灵活的控制 json 返回(自定义过滤字段)   另1

/**
*
* @return Bean
*/
@RequestMapping("/Test")
@ResponseBody
public TestBean test (){
log.debug("Test function");
TestBean testBean=new TestBean();
testBean.setName("haha");
return testBean;
}
/**
*
* @return Bean List
*/
@RequestMapping("/TestList")
@ResponseBody
public List<TestBean> testList (){
log.debug("TestList function");
List<TestBean> testBeanList=new ArrayList<TestBean>();
TestBean testBean1=new TestBean();
testBean1.setName("haha");
TestBean testBean2=new TestBean();
testBean2.setName("hehe");
testBeanList.add(testBean1);
testBeanList.add(testBean2);
return testBeanList;
} /**
*
* @return JSON Data
*/
@RequestMapping("/TestJSONObject")
public void testReturrnJSONWithoutBean(HttpServletRequest request,HttpServletResponse response) throws IOException{
log.debug("TestJSONObject function");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
PrintWriter writer=response.getWriter();
JsonObject jsonObject=new JsonObject();
jsonObject.addProperty("name","hehe jsonobject");
writer.println(jsonObject.toString());
writer.close();
} /**
*
* @return String
*/
@RequestMapping("/TestReturnPage")
@ResponseBody
public String testReturrnPage(){
log.debug("TestReturnPage");
return "/testpage";
} /**
* The difference between model and modelandview is just sematic
* */
/**
* @return JSON ModelAndView
*/
@RequestMapping("/TestReturnModel")
public String testReturnModel(Model model){
log.debug("testReturrnModel");
model.addAttribute("testmodel", "hello model");
return "testpage";
}
/**
* The difference between model and modelandview is just sematic
* */
/**
* @return JSON ModelAndView
*/
@RequestMapping("/TestReturnModelAndView")
public ModelAndView testReturnModelAndView(){
log.debug("testReturrnModel");
ModelAndView mav = new ModelAndView("testpage");
mav.addObject("testmodel", "hello test model");
return mav;
} /**
* 获取系统显示的菜单
*
* @param 无
* @return 返回JSON字符串,这是经过处理后的结构化树形数据。
*/
@RequestMapping(value = "/getShowedMenus", produces = "application/json; charset=utf-8")
@ResponseBody
public String getShowedMenus() {
JsonArray menus=new JsonArray();
try{
menus=platformMenuService.getMenusForShow();
}catch(Exception e)
{
logger.error(e.toString());
e.printStackTrace();
}
return menus.toString();
}
/**
* 从远程数据中心中注销登录
* @param request
* @param response
* @return 返回逻辑值
*/
@RequestMapping("/logout")
@ResponseBody
private boolean logout(HttpServletRequest request,HttpServletResponse response)
{
boolean retVal=false;
try{ }catch(Exception e){
logger.error(e.toString());
}
return retVal;
}
/**
* 本地数据中心登录至远程数据中心。
* @param datacenterId
* @return 返回是否登录成功
*/
@RequestMapping(value="/login",produces = "application/json; charset=utf-8")
@ResponseBody
public Boolean login(String dcId,HttpServletRequest request,HttpServletResponse response) {
logger.info("datacenterId"+dcId);
dcId="12";
Boolean retVal=false;
try{
DatacatalogDatacenter dc=datacenterService.selectByPrimaryKey(dcId);
String url="http://localhost:8080/"+request.getContextPath()+"/rest/datacatalog/datacenter/server/login?&no=121";
String val=HttpUtils.HttpPost(url);
retVal=Boolean.parseBoolean(val);
//retObject=new JSONObject(detail);
}catch(Exception e){
logger.error(e.toString());
e.printStackTrace();
}
return retVal;
}
//使用request转向页面

@RequestMapping("/itemList2")
public void itmeList2(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 查询商品列表
List<Items> itemList = itemService.getItemList();
// 向页面传递参数
request.setAttribute("itemList", itemList);
// 如果使用原始的方式做页面跳转,必须给的是jsp的完整路径
request.getRequestDispatcher("/WEB-INF/jsp/itemList.jsp").forward(request, response);
} 也通过response实现页面重定向:
response.sendRedirect("url")
如:
@RequestMapping("/itemList2")
public void itmeList2(HttpServletRequest request, HttpServletResponse response) throws Exception {
PrintWriter writer = response.getWriter();
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
writer.write("{\"id\":\"123\"}");

第一种,通过request.setAttribute进行返回。

@RequestMapping(value="/welcomeF")
public String WelcomeF(User user,HttpServletRequest request){
System.out.println(user.toString());
/*通过setAttribute来设置返回*/
request.setAttribute("name", user.getName());
request.setAttribute("password", user.getPassword());
request.setAttribute("password", user.getHobby());
return "welcome";
} 第二种,通过ModelAndView进行返回。 @RequestMapping(value="/welcomeSeven")
public ModelAndView WelcomeSeven(User2 user2){
/*通过ModelAndView来返回数据*/
ModelAndView mav = new ModelAndView("welcome");
mav.addObject("name", user2.getName());
mav.addObject("date", user2.getUdate());
return mav;
} 第三种,通过model对象进行返回。 @RequestMapping(value="/welcomeEight")
public String WelcomeEight(User2 user2,Model model){
/*通过Model对象来返回数据*/
model.addAttribute("name", user2.getName());
model.addAttribute("date", user2.getUdate());
return "welcome";
} 第四种,通过Map对象进行返回。 @RequestMapping(value="/welcomeNine")
public String WelcomeNine(User2 user2,Map map){
/*通过Model对象来返回数据*/
map.put("name", user2.getName());
map.put("date", user2.getUdate());
return "welcome";
}

spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable

    @RequestMapping(value = { "/actor_details" }, method = { RequestMethod.POST })
@ResponseBody
public ResultObject actorDetails(@RequestBody ActorDetailsRequest req) {
logger.debug("查看{}主播信息", req.getAid());
if (req.getAid() == null || req.getAid().equals("null")
|| req.getAid().equals("")) {
return new ResultObject(ResultCode.NULL_PARAM);
}
ActorAndUser result = actorServiceImpl.queryActorData(req.getAid());
return new ResultObject(result);
}

ModelAndView

   @RequestMapping(method=RequestMethod.GET)
public ModelAndView index(){
ModelAndView modelAndView = new ModelAndView("/user/index");
modelAndView.addObject("xxx", "xxx");
return modelAndView;
}
@RequestMapping(method=RequestMethod.GET)
public ModelAndView index(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("xxx", "xxx");
modelAndView.setViewName("/user/index");
return modelAndView;
}

Map

响应的view应该也是该请求的view。等同于void返回。
@RequestMapping(method=RequestMethod.GET)
public Map<String, String> index(){
Map<String, String> map = new HashMap<String, String>();
map.put("1", "1");
//map.put相当于request.setAttribute方法
return map;
}
@RequestMapping("/demo2/show")
publicMap<String, String> getMap() {
Map<String, String> map = newHashMap<String, String>();
map.put("key1", "value-1");
map.put("key2", "value-2");
returnmap;
} 在jsp页面中可直通过${key1}获得到值, map.put()相当于request.setAttribute方法。
写例子时发现,key值包括 - . 时会有问题.

String

对于String的返回类型,笔者是配合Model来使用的;
@RequestMapping(method = RequestMethod.GET)2
public String index(Model model) {
String retVal = "user/index";
List<User> users = userService.getUsers();
model.addAttribute("users", users);
return retVal;
}
或者通过配合@ResponseBody来将内容或者对象作为HTTP响应正文返回(适合做即时校验);

    @RequestMapping(value = "/valid", method = RequestMethod.GET)
public @ResponseBody
String valid(@RequestParam(value = "userId", required = false) Integer userId,@RequestParam(value = "logName") String strLogName) {
return String.valueOf(!userService.isLogNameExist(strLogName, userId));
}

具体参考:https://blog.csdn.net/u011001084/article/details/52846791  太长了,没整理

@RequestMapping(value=”twoB.do”)
public void twoBCode(HttpServletRequest request,HttpServletResponse response) {
response.setContentType(“type=text/html;charset=UTF-8”);
String s = “一堆字符串……”;
response.getWriter().write(s);
return;
} 上面的太low,用下面的比较好
@RequestMapping(value=”getJosn.do”, produces=”text/html;charset=UTF-8”) 
@ResponseBody 
public String getTabJson(){ 
String json = “{“无主题”:”jjjjj”}”; 
return json; 
}

mvc 各种返回值的更多相关文章

  1. ASP.NET Core Mvc中空返回值的处理方式

    原文地址:https://www.strathweb.com/2018/10/convert-null-valued-results-to-404-in-asp-net-core-mvc/ 作者: F ...

  2. MVC方法返回值数据

    ModelAndView的作用以及用法 使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图.从名字上看ModelAndView中的Model代表模型,View代表视图,这个 ...

  3. Spring MVC controller返回值类型

    SpringMVC controller返回值类型: 1 String return "user":将请求转发到user.jsp(forword) return "red ...

  4. spring mvc ajax返回值乱码

    加入如下配置: <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHan ...

  5. MVC控制器返回值

    public ActionResult Index(string id)//主页 //参数string searchString 访问方式为index?searchString=xxxx .参数str ...

  6. MVC方法的返回值类型

    MVC方法返回值类型 ModelAndView返回值类型: 1.当返回为null时,页面不跳转. 2.当返回值没有指定视图名时,默认使用请求名作为视图名进行跳转. 3.当返回值指定了视图名,程序会按照 ...

  7. mvc 返回值

    mvc返回值为Model类型 public ActionResult Index(T result) { return View(result); } view中的对象即为页面中的Model数据,之后 ...

  8. Spring框架下的 “接口调用、MVC请求” 调用参数、返回值、耗时信息输出

    主要拦截前端或后天的请求,打印请求方法参数.返回值.耗时.异常的日志.方便开发调试,能很快定位到问题出现在哪个方法中. 前端请求拦截,mvc的拦截器 import java.util.Date; im ...

  9. Asp.net MVC 中Controller返回值类型ActionResult

    [Asp.net MVC中Controller返回值类型] 在mvc中所有的controller类都必须使用"Controller"后缀来命名并且对Action也有一定的要求: 必 ...

随机推荐

  1. LeetCode OJ-- Linked List Cycle II **

    https://oj.leetcode.com/problems/linked-list-cycle-ii/ 判断一个链表中是否有环,如果有,求环的开始位置. 按照上道题目的想法,先判断出是否有环来, ...

  2. AC日记——幸运号码 51nod 1043

    幸运号码 思路: 传说中的数位dp: 不难发现,n(n<1000) ,那么,n个数的最大和为9*1000=9000: 对于9000*1000的时间范围,我们可以用dp来解决: dp[i][j], ...

  3. 8大排序算法的java实现--做个人收藏

    排序算法分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因为数据量太大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.这里只讨论内部排序,常见的内部排序算法有:插入排序 ...

  4. HDU 6249 Alice’s Stamps(2017 CCPC-Final G题,DP)

    题目链接 HDU 6249 题意 给定$m$个区间,在这些区间中选出不超过$k$个,求被覆盖的点的数量的最大值. 设$f[i][j]$表示选到第$i$个点并选了$j$个区间的时候能得到的最大答案. 处 ...

  5. 基于 OpenResty 的动态服务路由方案

    2019 年 5 月 11 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙武汉站,又拍云首席布道师在活动上做了< 基于 OpenResty ...

  6. python 设计模式之观察者模式

    观察者模式是一个软件设计模式,一个主题对象博包涵一系列依赖他的观察者,自动通知观察者的主题对象的改变,通常会调用每个观察者的一个方法.这个设计模式非常适用于分布式事件处理系统. 典型的在观察者模式下: ...

  7. 搭建 Maven ---基础入门

    这篇随笔从最基础的控制台  搭建maven讲,后面再升入的讲解IDEA搭建Maven. 一,Maven是什么?作用是什么? Maven是一个项目管理工具,它包含了一个项目对象模型 (Project O ...

  8. dedecms跳转标签

    我们在使用织梦dedecms制作网站的时候,有时会遇到利用arclist和list标签调用redirecturl属性.但是,dedecms的arclist和list标签不支持redirecturl.很 ...

  9. html特殊字符编码问题导致的细节问题

    今天在写前端html时,一个a标签的链接地址,由于链接地址需要给后台传参数,因此带了部分url参数: 在html源码里写的连接地址是: http://域名/bidder/noticesearch?no ...

  10. Arc Object开发,概述2

    简介 Esri公司推出的ArcGIS产品是一个非常强大的体系,里面包含ArcGIS Desktop.ArcGIS Server.ArcGIS Engine.ArcSDE.ArcGIS Online等, ...