知道spring MVC框架,大家就一定要了解Controller, Controller是MVC的核心,它負責處理所有客戶端發過來的請求,並對請求進行處理,並轉發給瀏覽器。
如果想讓Spring mvc指定controller,要在指定的類前面加上@Controller標記,同時指定映射使用@RequestMapping, RequestMapping主要用來指定controller和action的名稱和請求參數方法的設置。
1.配置Controller
首先我們想把某個類定義爲Controller,要在Dispatcher-servlet.xml中增加如下配置,指定掃描哪個包下面的類。
- <mvc:annotation-driven />
- <context:component-scan base-package=“com.springfirst.Controller” />
<mvc:annotation-driven />
<context:component-scan base-package="com.springfirst.Controller" />
同時在指定包的類的前面加上@Controller標記,如下,
- @Controller
- @RequestMapping(“/Home”)
- public class HomeController
- {
- }
@Controller
@RequestMapping("/Home")
public class HomeController
{
}
這裏我們通過requestmapping映射別名爲Home
2. Controller中Action的返回值
Action是Controller中處理具體請求的方法,Action的返回值有以下幾種類型,String, ModelAndView, Void, Map等。
String
首先我們看下String,String是用的最多,也是最常用的返回類型。我們這裏添加一個方法Index,並使用RequestMapping設置別名
- @RequestMapping(value=“index”)
- public String Index()
- {
- System.out.print(“123”);
- return “index”;
- }
@RequestMapping(value="index")
public String Index()
{
System.out.print("123");
return "index";
}
ModelAndView 也可以返回對於的視圖名稱
- @RequestMapping(value=“viewone”)
- public ModelAndView viewone()
- {
- ModelAndView mv=new ModelAndView();
- mv.setViewName(“viewone”);//設置返回模板名稱
- mv.addObject(“name”, “Hello World”);//設置參數值,在前臺頁面可以通過獲取到
- return mv;
- }<strong>
- </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,等。代碼如下
- 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;
- }
- }
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”)效果是一樣的,可以不用加斜槓。