SpringMVC 视图解析器 方法返回值 异常处理器

简介: SpringMVC 视图解析器 方法返回值 异常处理器

视图解析器


什么是视图解析器


  • SpringMVC视图解析器主要的作用是将 物理视图 转换成 逻辑视图
  • 返回jsp return "/pages/list.jsp" 称为物理视图
  • 把相同的前缀和后缀抽取出来 拼接在一起

image.png  

配置视图解析器


WebMvcConfigurer配置类其实是Spring内部的一种配置方式 采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制

  1. 实现WebMvcConfigurer接口
  2. 重写configureViewResolvers方法
  3. registry.jsp(“前缀”,“后缀”);配置视图前缀和后缀
@Configuration
@ComponentScan(basePackages="com.czxy.mvc.controller")
@EnableWebMvc
public class MvcConfiguration implements WebMvcConfigurer {
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/pages/",".jsp");
    }
}

 

Controller的使用


返回逻辑视图名

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/selectAll2")
    public String selectAll2() {
        return "list";
    }
}

 

绕过视图解析器


如果需要绕过视图解析器 有两种方法 使用请求转发或重定向

@Controller 
@RequestMapping("/user") 
public class UserController {
    /**
     * 最终访问路径 /user/selectAll.action
     * @return
     */
    @RequestMapping("/selectAll")
    public String selectAll() {
        return "forward:/pages/list.jsp";
    }
}


方法返回值


默认返回值ModelAndView


  • Controller功能的方法 默认返回值是ModelAndView
@Controller
@RequestMapping("/demo03")
public class Demo03BookController {
    @RequestMapping("/list")
    public ModelAndView list() {
        //1 创建对象
        ModelAndView modelAndView = new ModelAndView();
        //2 设置视图
        modelAndView.setViewName("book");       //之前 return "book";
        //3 设置模型数据 key-value
        modelAndView.addObject("username","jack");
        return modelAndView;
    }
}


返回字符串


  • 返回字符串 有两种情况 一种是 请求转发 一种是 重定向

           

 请求转发


public String list() {
    return "forward:物理视图";    //jsp路径
}


重定向

public String list() {
    return "redirect:物理视图";   //jsp路径
}

 

返回void


场景1:返回void 没有其他操作


  • Controller返回void
    @RequestMapping("/void1")
    public void void1() {
        System.out.println("void1 执行了 ");
    }

 

场景2:请求调度器


  • 使用servlet请求调度器完成 请求转发/请求包含 操作
@RequestMapping("/void2")
public void void2(HttpServletRequest request , HttpServletResponse response) throws Exception {
  request.setAttribute("username","void2");
  // 请求转发
  request.getRequestDispatcher("/WEB-INF/pages/book.jsp").forward(request, response);
  // 请求包含
  //request.getRequestDispatcher("/WEB-INF/pages/book.jsp").include(request, response);
}


场景3:response响应数据


  • response以流的方式 向浏览器响应数据
    @RequestMapping("/void3")
    public void void3(HttpServletRequest request , HttpServletResponse response) throws Exception {
        response.getWriter().print("void3");
    }

 

场景4:响应JSON


  • 响应JSON数据的时候 必须加@ResponseBody注解 标明响应JSO
    @RequestMapping("/void4")
    @ResponseBody
    public void void4() throws Exception {
        System.out.println("哈哈");
    }


相关文章
|
19天前
|
Java 对象存储 开发者
解析Spring Cloud与Netflix OSS:微服务架构中的左右手如何协同作战
Spring Cloud与Netflix OSS不仅是现代微服务架构中不可或缺的一部分,它们还通过不断的技术创新和社区贡献推动了整个行业的发展。无论是对于初创企业还是大型组织来说,掌握并合理运用这两套工具,都能极大地提升软件系统的灵活性、可扩展性以及整体性能。随着云计算和容器化技术的进一步普及,Spring Cloud与Netflix OSS将继续引领微服务技术的发展潮流。
32 0
|
9天前
|
数据处理 Python
Python 高级技巧:深入解析读取 Excel 文件的多种方法
在数据分析中,从 Excel 文件读取数据是常见需求。本文介绍了使用 Python 的三个库:`pandas`、`openpyxl` 和 `xlrd` 来高效处理 Excel 文件的方法。`pandas` 提供了简洁的接口,而 `openpyxl` 和 `xlrd` 则针对不同版本的 Excel 文件格式提供了详细的数据读取和处理功能。此外,还介绍了如何处理复杂格式(如合并单元格)和进行性能优化(如分块读取)。通过这些技巧,可以轻松应对各种 Excel 数据处理任务。
36 16
|
18天前
|
存储 前端开发 JavaScript
前端基础(十二)_函数高级、全局变量和局部变量、 预解析(变量提升)、函数返回值
本文介绍了JavaScript中作用域的概念,包括全局变量和局部变量的区别,预解析机制(变量提升),以及函数返回值的使用和类型。通过具体示例讲解了变量的作用域、函数的返回值、以及如何通过return关键字从函数中返回数据。
16 1
前端基础(十二)_函数高级、全局变量和局部变量、 预解析(变量提升)、函数返回值
|
6天前
|
搜索推荐 Shell
解析排序算法:十大排序方法的工作原理与性能比较
解析排序算法:十大排序方法的工作原理与性能比较
22 9
|
2天前
|
人工智能 缓存 Java
深入解析Spring AI框架:在Java应用中实现智能化交互的关键
【10月更文挑战第12天】Spring AI 是 Spring 框架家族的新成员,旨在满足 Java 应用程序对人工智能集成的需求。它支持自然语言处理、图像识别等多种 AI 技术,并提供与云服务(如 OpenAI、Azure Cognitive Services)及本地模型的无缝集成。通过简单的配置和编码,开发者可轻松实现 AI 功能,同时应对模型切换、数据安全及性能优化等挑战。
|
6天前
|
存储 编译器 C++
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
|
5天前
|
Python
深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
14 1
|
17天前
|
存储 缓存 Java
在Spring Boot中使用缓存的技术解析
通过利用Spring Boot中的缓存支持,开发者可以轻松地实现高效和可扩展的缓存策略,进而提升应用的性能和用户体验。Spring Boot的声明式缓存抽象和对多种缓存技术的支持,使得集成和使用缓存变得前所未有的简单。无论是在开发新应用还是优化现有应用,合理地使用缓存都是提高性能的有效手段。
17 1
|
28天前
|
存储 关系型数据库 MySQL
技术解析:MySQL中取最新一条重复数据的方法
以上提供的两种方法都可以有效地从MySQL数据库中提取每个类别最新的重复数据。选择哪种方法取决于具体的使用场景和MySQL版本。子查询加分组的方法兼容性更好,适用于所有版本的MySQL;而窗口函数方法代码更简洁,执行效率可能更高,但需要MySQL 8.0及以上版本。在实际应用中,应根据数据量大小、查询性能需求以及MySQL版本等因素综合考虑,选择最合适的实现方案。
143 6
|
2天前
|
前端开发 JavaScript Java
【SpringBoot系列】视图解析器的搭建与开发
【SpringBoot系列】视图解析器的搭建与开发
9 0

推荐镜像

更多