控制器Controller

  • 控制器复杂提供访问应用程序的行为,通常通过接口定义注解定义两种方法实现。
  • 控制器负责解析用户的请求并将其转换为一个模型。
  • 在Spring MVC中一个控制器类可以包含多个方法
  • 在Spring MVC中,对于Controller的配置方式有很多种

实现Controller接口

Controller是一个接口,在org.springframework.web.servlet.mvc包下,接口中只有一个方法;

//实现该接口的类获得控制器功能
public interface Controller {
    //处理请求且返回一个模型与视图对象
    ModelAndView handleRequest(HttpServletRequest var1, HttpServletResponse var2) throws Exception;
}
  1. 新建一个Moudle,并配置web.xml和speingmvc配置文件。
  2. 编写一个Controller类,ControllerTest1
package com.hecn.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author hecn
 * @site hecn.gitee.io
 * @discription
 */
public class ControllerTest1 implements Controller {
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //返回一个模型视图对象
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg", "Test1Controller");
        mv.setViewName("test");
        return mv;
    }
}
  1. 编写完毕后,去Spring配置文件中注册请求的bean;name对应请求路径,class对应处理请求的类
    <bean name="/t1" class="com.hecn.controller.ControllerTest1"></bean>
  1. 在WEB-INF/jsp目录下编写前端test.jsp
<%--
  Created by IntelliJ IDEA.
  User: 24497
  Date: 2020/3/19 0019
  Time: 22:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${msg}
</body>
</html>
  1. 配置Tomcat运行测试。

说明:

  • 实现接口Controller定义控制器是较老的办法
  • 缺点是:一个控制器中只有一个方法,如果要多个方法则需要定义多个Controller;定义的方式比较麻烦;

注解实现@Controller

  • @Controller注解类型用于声明Spring类的实例是一个控制器;
  • Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类,为了保证Spring能找到你的控制器,需要在配置文件中声明组件扫描。
<!--    注解扫描-->
    <context:component-scan base-package="com.hecn.controller"/>
  • 增加一个ControllerTest2类,使用注解实现:
package com.hecn.controller;

import com.sun.org.apache.xpath.internal.operations.Mod;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author 陈朋康
 * @site hecn.gitee.io
 * @discription
 */
@Controller
public class ControllerTest2 {
    @RequestMapping("/test2")
    public String index(Model model){
        model.addAttribute("msg","Controller02");
        //
        return "test";
    }
}
  • 运行tomcat测试

注解方式是平时使用的最多的方式!


@RequestMapping注解

  • @RequestMapping注解用于映射url到控制器类或一个特定的处理程序方法。可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。


SpringMVC      SpringMVC MVC

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!