欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring MVC之Controller RequestMapping

程序员文章站 2024-03-24 08:19:28
...

注释类型:Controller RequestMapping

1、Controller

使用org.springframework.stereotype.Controller注解类型声明某类的实例是一个控制器

package controller;
import org.springframework.stereotype.Controller;
//"@Controller" 表示IndexController的实例是一个控制器
@Controller
public class IndexController{
//处理请求的方法
} 

Spring MVC使用扫描机制找到应用中所有基于注解的控制器类。所以,为了让控制器类能被Spring MVC框架扫描到,需要在配置文件中声明spring-context,并使用<context:component-scan/>元素指定控制器类的基本包(请确保所有控制器类都在基本包及其子包下)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans">
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="controller"/>
</beans>

2、RequestMapping

在基于注解的控制器类中,可以为每个请求编写对应的处理方法。如何将请求与处理方法一一对应呢?需要使用org.springframework.web.bind.annotation.RequestMapping注解类型。

  • 方法级别注解
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController{
    @RequestMapping(value="/index/login")
    public String login(){
        return "login";//login代表逻辑视图名称    
    }
    @RequestMapping(value="/index/register")
    public String register(){
        return "register";    
    }
}

上述示例中有两个RequestMapping注解语句,他们都作用在处理方法上。注解的value属性将请求URL映射到方法。value属性是RequestMapping注解的默认属性,如果只有一个value属性,则可省略该属性。可以使用如下URL访问login方法(请求处理方法)。

http://localhost:8080/ch2/index/login
  • 类级别注解
    package controller;
    import org.springframework.stereotye.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    @Controller
    @RequestMapping("/index")
    public class IndexController{
        @RequestMapping("/login")    
        public String login(){
            return "login";    
        }
        @RequestMapping("/register"){
        public String register(){
            return "register";
        }
    }
    
在类级别注解的情况下,控制器类中的所有方法都将映射为类级别的请求。可以用如下URL访问login方法。
http://localhost:8080/ch2/index/login
为了方便程序维护,建议开发者采用类级别注解,将相关处理放在同一个控制器类中,例如,对商品的增删改查等处理方法都可以放在GoodsOperate控制类中。