目录
控制器(Controller)处理完客户端请求后,生成的并返回给客户端的结果就是响应,响应的结果可以是静态页面,数据,HTML片段等。
响应页面
在springmvc中,跳转页面非常简单,只需返回一个字符串即可。
//响应页面,跳转页面
@RequestMapping("/toJumpPage")
public String toJumpPage(){
System.out.println("跳转页面");
return "page.jsp";
}
打开浏览器输入:localhost:8080/toJumpPage,自动跳转到page.jsp。
响应数据
文本数据
响应文本数据,需要加上@RequestBody注解
//响应文本数据
@RequestMapping("/toText")
@ResponseBody
public String toText(){
System.out.println("返回纯文本数据");
return "response text";
}
响应POJO对象
响应POJO对象,只需要修改方法返回值为POJO,同时也要添加上@ResponseBody注解:
@RequestMapping("/toJsonPOJO")
@ResponseBody
public User toJsonPOJO(){
System.out.println("返回json对象数据");
User user = new User();
user.setName("springmvc");
user.setAge(12);
return user;
}
返回集合对象也是如此:
@RequestMapping("/toJsonPOJOList")
@ResponseBody
public List<User> toJsonPOJOList(){
System.out.println("返回json对象数据集合");
User user = new User();
user.setName("spring");
user.setAge(126);
User user1 = new User();
user1.setName("mvcspring");
user1.setAge(99);
List<User> list = new ArrayList<>();
list.add(user);
list.add(user1);
return list;
}
响应生命周期
- 请求接收:DispatcherServlet接收HTTP请求
- 处理器映射:HandlerMapping找到对应的Controller方法
- 方法执行:执行控制器逻辑并生成响应数据
- 视图解析:ViewResolver解析逻辑视图名
- 数据转换:HttpMessageConverter处理数据序列化
- 响应返回:通过ServletResponse输出最终结果
视图解析器
视图解析器(ViewResolver)是 Spring MVC 的核心组件之一,负责将控制器返回的逻辑视图名称(如 "home")转换为具体的物理视图资源(如 JSP、HTML 模板等)。其核心职责包括:
- 路径映射:将逻辑视图名映射到实际文件路径(如 /WEB-INF/views/home.jsp)
- 模板引擎支持:适配不同的视图技术(JSP、Thymeleaf、FreeMarker 等)
- 视图优先级管理:支持多个视图解析器共存时的优先级控制
- 安全性增强:防止直接暴露服务器文件路径
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Bean
public ViewResolver viewResolver() {
//InternalResourceViewResolver是Spring MVC提供的一个视图解析器实现,它用于解析JSP文件作为视图。
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/"); //设置视图文件的前缀路径
resolver.setSuffix(".jsp"); //设置了视图文件的后缀
return resolver;
}
}