Spring Mvc那点事---(4)Spring Mvc控制器Controller

来源:互联网 发布:crossfit slash知乎 编辑:程序博客网 时间:2024/05/16 09:29

          知道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" />  
    同时在指定包的类的前面加上@Controller标记,如下,

@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";}
     ModelAndView 也可以返回对于的视图名称

      

@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;}}
    action前的@RequestMapping(value="viewone") 和 @RequestMapping(value="/viewone")效果是一样的,可以不用加斜杠。

    

    

0 0
原创粉丝点击