控制器Controller
- 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现。
- 控制器负责解析用户的请求并将其转换为一个模型。
- 在Spring MVC中一个控制器类可以包含多个方法
- 在Spring MVC中,对于Controller的配置方式有很多种
实现Controller接口
Controller是一个接口,在org.springframework.web.servlet.mvc包下,接口中只有一个方法;
//实现该接口的类获得控制器功能
public interface Controller {
//处理请求且返回一个模型与视图对象
ModelAndView handleRequest(HttpServletRequest var1, HttpServletResponse var2) throws Exception;
}
- 新建一个Moudle,并配置web.xml和speingmvc配置文件。
- 编写一个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;
}
}
- 编写完毕后,去Spring配置文件中注册请求的bean;name对应请求路径,class对应处理请求的类
<bean name="/t1" class="com.hecn.controller.ControllerTest1"></bean>
- 在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>
- 配置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到控制器类或一个特定的处理程序方法。可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!