Java---學習(4)

          知道spring MVC框架,大家就一定要了解Controller, Controller是MVC的核心,它負責處理所有客戶端發過來的請求,並對請求進行處理,並轉發給瀏覽器。

如果想讓Spring mvc指定controller,要在指定的類前面加上@Controller標記,同時指定映射使用@RequestMapping, RequestMapping主要用來指定controller和action的名稱和請求參數方法的設置。

   1.配置Controller

   首先我們想把某個類定義爲Controller,要在Dispatcher-servlet.xml中增加如下配置,指定掃描哪個包下面的類。

  1. <mvc:annotation-driven />    
  2.    <context:component-scan base-package=“com.springfirst.Controller” />    
 <mvc:annotation-driven />  
    <context:component-scan base-package="com.springfirst.Controller" />  
    同時在指定包的類的前面加上@Controller標記,如下,

  1. @Controller  
  2. @RequestMapping(“/Home”)  
  3. public class HomeController   
  4. {  
  5.   
  6. }  
@Controller
@RequestMapping("/Home")
public class HomeController 
{

}
這裏我們通過requestmapping映射別名爲Home

   2. Controller中Action的返回值

     Action是Controller中處理具體請求的方法,Action的返回值有以下幾種類型,String, ModelAndView, Void, Map等。

     String

     首先我們看下String,String是用的最多,也是最常用的返回類型。我們這裏添加一個方法Index,並使用RequestMapping設置別名


  1. @RequestMapping(value=“index”)  
  2. public String Index()  
  3. {  
  4.     System.out.print(“123”);  
  5.     return “index”;  
  6. }  
 @RequestMapping(value="index")
    public String Index()
    {
        System.out.print("123");
        return "index";
    }
     ModelAndView 也可以返回對於的視圖名稱

      

  1. @RequestMapping(value=“viewone”)  
  2.     public ModelAndView  viewone()  
  3.     {  
  4.         ModelAndView  mv=new ModelAndView();  
  5.           
  6.         mv.setViewName(“viewone”);//設置返回模板名稱  
  7.         mv.addObject(“name”, “Hello World”);//設置參數值,在前臺頁面可以通過獲取到  
  8.         return mv;  
  9.     }<strong>  
  10.     </strong>  
@RequestMapping(value="viewone")
    public ModelAndView  viewone()
    {
        ModelAndView  mv=new ModelAndView();

        mv.setViewName("viewone");//設置返回模板名稱
        mv.addObject("name", "Hello World");//設置參數值,在前臺頁面可以通過獲取到
        return mv;
    }<strong>
    </strong>
        返回值還可以爲Void,Map,等。代碼如下

         

  1. package com.springfirst.Controller;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import org.springframework.stereotype.Controller;  
  7. import org.springframework.web.bind.annotation.RequestMapping;  
  8. import org.springframework.web.bind.annotation.ResponseBody;  
  9. import org.springframework.web.servlet.ModelAndView;  
  10.   
  11. @Controller  
  12. @RequestMapping(“/Home”)  
  13. public class HomeController {  
  14.   
  15.     @RequestMapping(value=“index”)  
  16.     public String Index()  
  17.     {  
  18.         System.out.print(“123”);  
  19.         return “index”;  
  20.     }  
  21.       
  22.     @RequestMapping(value=“viewone”)  
  23.     public ModelAndView  viewone()  
  24.     {  
  25.         ModelAndView  mv=new ModelAndView();  
  26.           
  27.         mv.setViewName(“viewone”);//設置返回模板名稱  
  28.         mv.addObject(“name”, “Hello World”);//設置參數值,在前臺頁面可以通過獲取到  
  29.         return mv;  
  30.     }  
  31.       
  32.     @RequestMapping(value=“viewtwo”)  
  33.     public String viewtwo()  
  34.     {  
  35.         System.out.print(“viewtwo”);  
  36.         return “redirect:/Home/viewone”;  
  37.     }  
  38.       
  39.   
  40.     @RequestMapping(value=“viewthree”)  
  41.     public  void viewthree()  
  42.     {  
  43.         System.out.print(“viewthree”);  
  44.     }  
  45.       
  46.     @ResponseBody()  
  47.     @RequestMapping(value=“viewfour”)  
  48.     public Map<String,String>  viewfour()  
  49.     {  
  50.         System.out.print(“viewfour”);  
  51.         Map<String,String> map=new HashMap<String,String>();  
  52.         map.put(“id”, “1”);  
  53.         map.put(“age”, “20”);  
  54.           
  55.         return map;  
  56.     }  
  57.       
  58.       
  59. }  
package com.springfirst.Controller;

import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/Home")
public class HomeController {

    @RequestMapping(value="index")
    public String Index()
    {
        System.out.print("123");
        return "index";
    }

    @RequestMapping(value="viewone")
    public ModelAndView  viewone()
    {
        ModelAndView  mv=new ModelAndView();

        mv.setViewName("viewone");//設置返回模板名稱
        mv.addObject("name", "Hello World");//設置參數值,在前臺頁面可以通過獲取到
        return mv;
    }

    @RequestMapping(value="viewtwo")
    public String viewtwo()
    {
        System.out.print("viewtwo");
        return "redirect:/Home/viewone";
    }


    @RequestMapping(value="viewthree")
    public  void viewthree()
    {
        System.out.print("viewthree");
    }

    @ResponseBody()
    @RequestMapping(value="viewfour")
    public Map<String,String>  viewfour()
    {
        System.out.print("viewfour");
        Map<String,String> map=new HashMap<String,String>();
        map.put("id", "1");
        map.put("age", "20");

        return map;
    }


}
    action前的@RequestMapping(value=”viewone”) 和 @RequestMapping(value=”/viewone”)效果是一樣的,可以不用加斜槓。

    

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章