zoukankan      html  css  js  c++  java
  • mvc 各种返回值

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

    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; 
    }
  • 相关阅读:
    Google Shell Style Guide
    50 Must-have plugins for extending Twitter Bootstrap
    HTTP 请求头中的 X-Forwarded-For
    如何让 PowerPoint 幻灯片「高大上」?
    数据挖掘系列(1)关联规则挖掘基本概念与Aprior算法
    关于大型网站技术演进的思考(三)--存储的瓶颈(3)
    基于 Nginx XSendfile + SpringMVC 进行文件下载
    如何成为全栈工程师?
    Sqlserver通过列名查表名
    animate
  • 原文地址:https://www.cnblogs.com/lhuser/p/8794116.html
Copyright © 2011-2022 走看看