• 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; 
    }
  • 相关阅读:
    HLG 1522 子序列的和【队列的应用】
    POJ 3273 Monthly Expense【二分】
    HDU 4004 The Frog's Games 【二分】
    POJ 2001 Shortest Prefixes【第一棵字典树】
    POJ 2823 Sliding Window【单调对列经典题目】
    HDU 1969 Pie 【二分】
    POJ 3125 Printer Queue【暴力模拟】
    POJ 3250 Bad Hair Day【单调栈】
    字典树【模板】
    验证码 Code
  • 原文地址:https://www.cnblogs.com/lhuser/p/8794116.html
Copyright © 2020-2023  润新知