SpringMVC controller中業務方法的參數、返回值


 

業務方法的參數

業務方法的參數類型、參數個數是任意的,根據需要使用。

 

常見的參數類型:

  • HttpServletRequest、HttpServletResponse、HttpSession   

     獲取Servlet原生的API

 

  • Model 、ModelMap   

     向視圖傳遞數據,會自動將Model、ModelMap中的數據傳給視圖。

 

  • 簡單數據類型 、實體類

     接收表單傳遞的數據

 

 


 

 

 

常見的返回值類型

  • ModeAndView 

     視圖名+數據

 

  • String   

      返回視圖名,會與視圖解析器中的前綴、后綴拼接起來,組成完整的視圖名。

   可以和@ResponseBody配合使用,直接向瀏覽器輸出字符串。

 

  • void 

     有時候接收到請求后,做一些操作就OK了,不必返回視圖來響應,這時可以把返回值類型寫成void。

   如果想轉發、重定向、向視圖傳遞數據,可以傳入參數HttpServletRequest、HttpServletResponse。

   需要注意的是,使用HttpServletRequest、HttpServletResponse進行轉發、重定向時,不會使用視圖解析器,需要寫完整的視圖名。

 

 


 

 

 

示例   返回視圖名

比如登錄成功,返回某個視圖名,轉發到指定的頁面。

    @RequestMapping("/login")
    public String login(){
        //....
        return "index";
    }

    @RequestMapping("/logout")
    public String logout(){
        //....
        return "index";
    }

    @RequestMapping("/upload")
    public String upload(){
        //....
        return "success";
    }

 

 

 


 

 

示例  使用Model向視圖傳遞數據

    @RequestMapping("/handler")
    public String handler(Model model){
        User user = new User();
        user.setUsername("chy");
        user.setPassword("abcd");
        
        model.addAttribute("user", user);
        return "user_info";
    }

在視圖中可通過${key}的方式獲取對應的value。

Model中可儲存多個數據,使用多個setAttribute()即可,數據的類型可以不相同(實質是使用Map儲存數據)。

 

 


 

 

示例   直接輸出到瀏覽器

方式一:

    @RequestMapping("/user")
    @ResponseBody public String handler(){
        return "<h2>hello</h2>";
    }

把字符串添加到響應體中返回給瀏覽器。瀏覽器會解析里面的html標簽。

 

 

方式二:

    @RequestMapping("/user")
    public void handler(HttpServletResponse response) throws IOException {
        response.getWriter().print("<h1>hello</h1>");
    }

注意print()才是輸出到瀏覽器頁面上,write()是向瀏覽器寫數據,瀏覽器會把write()的內容保存到文件中(下載)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM