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

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. ie8实现无刷新文件上传

    ie8由于无法使用FormData,想要无刷新上传文件就显得比较麻烦.这里推荐使用jQuery-File-Upload插件,它能够很方便的解决ie8无刷新文件上传问题.(最低兼容到ie6) jQuer ...

  2. OS | 死锁

    死锁的四个条件 互斥 占用等待 非剥夺 循环等待 死锁的解决方案 死锁预防 间接预防:防止前三个条件中的任何一个的发生 直接预防:防止循环等待的发生 死锁避免 进程启动拒绝:不启动任何一个可能发生死锁 ...

  3. 苹果放宽了 iOS 5.0 对应用本地存储的限制

    iOS5.0引入了iCloud,让那些需要本地存储较多数据的app开发者(比如支持离线的杂志,新闻类app)陷入了 尴尬的境地,因为将大量数据存储在/Documents 文件夹将导致iCloud同步变 ...

  4. dedecms调用新闻文章列表

    效果如下: 代码如下: <div class="list"> <ul class="d6 ico4"> {dede:list pages ...

  5. 一入python深似海--range()、list与for

    range使用方法 使用python的人都知道range()函数非常方便,今天再用到他的时候发现了非常多曾经看到过可是忘记的细节. 这里记录一下: range(1,5)#代表从1到5(不包括5) [1 ...

  6. DIY树莓派之随身工具箱

    摆弄树莓派有一年多了,在这里把经验分享给大家,少走弯路. 先放图两张. 搭建目的: wifi信号中转站\网站服务器\IC卡渗透测试\中间人\otr… 基于树莓派3 系统为Kali Linux 2017 ...

  7. 负样本采样及bias校准、ctr平滑

    参考:https://zhuanlan.zhihu.com/p/31529643 在CTR预估中,负样本采样是一种常见的特征工程方法.一般CTR预估的原始正负样本比可能达到1:1000~1:10000 ...

  8. 转:代码管理技巧——两步创建本地SVN服务器图文教程

    from: http://www.cnblogs.com/tianhonghui/archive/2012/07/22/2603454.html   当我们进行开发的时候,不论是独立开发还是处在团队中 ...

  9. Java常见问题分析(内存溢出、内存泄露、线程阻塞等)

    Java垃圾回收机制(GC) 1.1 GC机制作用 1.2 堆内存3代分布(年轻代.老年代.持久代) 1.3 GC分类 1.4 GC过程 Java应用内存问题分析 2.1 Java内存划分 2.2 J ...

  10. 【Python】分析文本split()

    分析单个文本 split()方法,是以空格为分隔符将字符串拆分成多个部分,并将这些部分存储到一个列表中 title = 'My name is oliver!' list = title.split( ...