zoukankan      html  css  js  c++  java
  • controller与requestmapping

    使用@controller定义controllers
    Spring mvc将特定url的请求分发到controller类来进行处理
    在spring 3.0中,通过@controller标注即可将class定义为一个controller类。为使spring能找到定义为controller的bean,需要在spring-context配置文件中增加如下定义.

    <context:component-scan base-package="net.zhepu.web" /> 

    使用@RequestMapping标注来关联url和controllers
      通过@RequestMapping标注,可以将特定的url和具体的controller类或controller类中的方法绑定。如

    @Controller
    @RequestMapping("/helloworld")
    public class Helloworld {
    
        @RequestMapping(method=RequestMethod.GET)
        public ModelAndView hello() {
            ModelAndView mv = new ModelAndView();
            mv.setViewName("helloworld");
            return mv;
        }
    }

    将/hellowrold和 Hellowrold这个controller类绑定,而在hello()方法前的@RequestMapping(method=RequestMethod.GET)则将hello这个方法和/hellorworld.action的get请求绑定起来。

     定义multiaction controllers
    使用一个controller来处理多个action,称为multiaction controller。@RequestMapping标注并不要求一定放在class定义之前,而可以直接作为一个method level的标注来使用,当这样使用时,contorller类就变成了一个multiaction controller,例如

    @Controller
    public class MultiactionHelloworld {
    
        @RequestMapping("/hello1")
        public ModelAndView hello1(){
            ModelAndView mv = new ModelAndView();
            mv.setViewName("helloworld");
            return mv;        
        }
        
        @RequestMapping("/hello2")
        public ModelAndView hello2(){
            ModelAndView mv = new ModelAndView();
            mv.setViewName("helloworld");
            return mv;        
        }

    这里分别定义了两个方法hello1和hello2,对应的url为/hello1和/hello2

    url template
    @requestmapping参数中的url,除了常规的url外,也可以使用url template来定义形成类似REST请求的url。
    例如

        @RequestMapping("/urltemplate/{username}")
        public ModelAndView test1(@PathVariable String username){
            ModelAndView mv = new ModelAndView();
            mv.addObject("userName", username);
            System.out.println(username);
            mv.setViewName("test002");
            return mv;        
        }
    <span style="white-space: normal;">
    </span>

    以上通过@PathVariable将入参中的username和userid分别与请求url中的{username}和{userid}的值做绑定

    @requestmapping的可选参数
     value:表示需要匹配的url的格式。
     method:表示所需处理请求的http 协议(如get,post,put,delete等),可选值为RequestMethod这个enum的值。
     params:格式为”paramname=paramvalue” 或 “paramname!=paramvalue”。不带参数则表示paramvalue可以为任意值。
    如params =  {"param1=1","param2!=2","param3"},表示对应的url必须包括param1,param2,param3三个参数,其中param1的值必须为1,param2的值不能为2,param3的值可以为任意值。
     headers:用来限定对应的reqeust请求的headers中必须包括的内容,例如
    headers={"Connection=keep-alive"}, 表示请求头中的connection的值必须为keep-alive。

  • 相关阅读:
    网易163邮箱被盗号找回经历
    C++中基类的析构函数为什么要用virtual虚析构函数
    像linux ls命令一样优雅地打印
    【Linux】- 六个超赞的字符画生成器
    linux欢迎界面 /etc/motd
    Linux 的 FIGlet 指令产生 ASCII Art 大型文字教学
    趣玩 Linux:四个生成字符图案(字符画)的命令
    案例参考手册-第四章 Curses字符界面.docx
    读取键盘输入流改为原始模式
    centos 7配置系统调度isolcpus(软中断绑定)
  • 原文地址:https://www.cnblogs.com/ilinuxer/p/5232443.html
Copyright © 2011-2022 走看看