SpringMVC-04-Controller

tech2023-10-01  100

4. Controller及RestFul风格

控制器Controller

控制器提供访问应用程序的行为,通常通过接口定义或注解定义实现;控制器负责解析用户的请求并将其转化为一个模型;在SpringMVC中一个控制器类可以包含多个方法;对于Controller的配置方式有很多种(紧接下文)

实现Controller接口

编写一个Controller类,ControllerTest1

public class ControllerTest1 implements Controller { public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mv = new ModelAndView(); mv.addObject("msg","ControllerTest1"); mv.setViewName("test"); return mv; } }

编写完毕后,去Spring配置文件中注册请求的bean;name对应请求路径,class对应请求的类

<bean id="/test" class="com.kuang.controller.ControllerTest1"/>

编写前端的test.jsp,对应视图解析器

配置Tomcat运行测试,这里的项目发布名配置就是一个/,所以请求不用加项目名。

说明:

实现接口的方法比较古老,不建议使用;缺点:一个控制器类只有一个方法;

使用注解方法

@Controller注解类型用于声明Spring类的实例是一个控制器,另外还有3个等效的注解:

Component@Service@Repository

Spring可以使用扫描机制找到所有基于注解的控制器类,为了保证Spring找到你的控制器,需要在配置文件中声明组件扫描;

<!--自动扫描包 让指定包下的注解生效 由IOC容器统一管理--> <context:component-scan base-package="com.kuang.controller"/>

增加一个ControllerTest2类,使用注解实现;

@Controller //代表这个类会被Spring接管,被这个注解的类,中的所有方法,如果返回值是String,并且可以跳转,那么就会被视图解析器解析 public class ControllerTest2 { @RequestMapping("/test2") public String test1(Model model){ model.addAttribute("msg","ControllerTest2"); return "test"; } }

运行Tomcat测试

​ 多个请求可以指向一个视图,但页面结果可以不一样,可以看出视图是被复用的,而控制器和视图之间是弱耦合关系。

RequestMapper

@RequestMapper

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