SpringMVC:Controller的编写

SpringMVC:Controller的编写

Controller,通常通过接口定义和注解两种方式!

使用基于注解的控制器的优点如下:

  • 一个 Controller 类可以处理多个动作,而实现了一个 Controller 接口的控制器只能处理一个动作。

  • 基于 Controller 注解的控制器的请求映射不需要写在配置文件中。使用 @RequestMapping 注解类型,可以对一个方法进行请求处理。

实现Controller接口:

该接口在 org.springframework.web.servlet.mvc.Controller,该接口只有一个方法

package com.xu.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AiController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg","乘风御剑");
        mv.setViewName("hello");
        return mv;
    }
}

编写完成后在Spring中注册:

name对应请求路径,class对应处理请求的类

<bean name="/hello" class="com.xu.controller.AiController"/>

使用注解:

1、我们需要在Spring的配置文件中开启包的扫描:

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

2、我们只需要在类上加@Controller注解,即可实Controller的功能:

@Controller
public class HelloController {
    @RequestMapping("/h1")
    public String hellomvc(){
        return null;
    }
}

标记@RequestMapping 注解的方法将成为一个 请求处理方法,在接收到URL请求时被调用。

@RequestMapping(value="/hello", method = {RequestMethod.GET, RequestMethod.POST})
public String printHello() {
    return null;
}

value : 表示请求的路径;
method : 表示只接受花括号内的请求方法;

@RequestMapping作用在类上:

通过注解实现一个类处理多个动作:

@Controller
@RequestMapping("/HelloController")
public class HelloController {

    @RequestMapping("/h1")
    public String hellomvc(){
        return null;
    }
    
     @RequestMapping("/h2")
    public String hellomvc(){
        return null;
    }
}

在请求的时候每个请求之前都要加上 /HelloController,例如:

/HelloController/h1
/HelloController/h2

猜你喜欢

转载自www.cnblogs.com/whitespaces/p/12451521.html