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("哈哈");
    }


相关文章
|
1月前
|
监控 安全 网络安全
深入解析PDCERF:网络安全应急响应的六阶段方法
PDCERF是网络安全应急响应的六阶段方法,涵盖准备、检测、抑制、根除、恢复和跟进。本文详细解析各阶段目标与操作步骤,并附图例,助读者理解与应用,提升组织应对安全事件的能力。
268 89
|
3天前
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
46 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
2月前
|
安全 Ubuntu Shell
深入解析 vsftpd 2.3.4 的笑脸漏洞及其检测方法
本文详细解析了 vsftpd 2.3.4 版本中的“笑脸漏洞”,该漏洞允许攻击者通过特定用户名和密码触发后门,获取远程代码执行权限。文章提供了漏洞概述、影响范围及一个 Python 脚本,用于检测目标服务器是否受此漏洞影响。通过连接至目标服务器并尝试登录特定用户名,脚本能够判断服务器是否存在该漏洞,并给出相应的警告信息。
200 84
|
19天前
|
XML Java 开发者
Spring底层架构核心概念解析
理解 Spring 框架的核心概念对于开发和维护 Spring 应用程序至关重要。IOC 和 AOP 是其两个关键特性,通过依赖注入和面向切面编程实现了高效的模块化和松耦合设计。Spring 容器管理着 Beans 的生命周期和配置,而核心模块为各种应用场景提供了丰富的功能支持。通过全面掌握这些核心概念,开发者可以更加高效地利用 Spring 框架开发企业级应用。
67 18
|
2月前
|
数据可视化 项目管理
个人和团队都好用的年度复盘工具:看板与KPT方法解析
本文带你了解高效方法KPT复盘法(Keep、Problem、Try),结合看板工具,帮助你理清头绪,快速完成年度复盘。
139 7
个人和团队都好用的年度复盘工具:看板与KPT方法解析
|
1月前
|
人工智能 监控 数据可视化
提升开发效率:看板方法的全面解析
随着软件开发复杂度提升,并行开发模式下面临资源分配不均、信息传递延迟及缺乏全局视图等瓶颈问题。看板工具通过任务状态实时可视化、流量效率监控和任务依赖管理,帮助团队直观展示和解决这些瓶颈。未来,结合AI预测和自动化优化,看板工具将更高效地支持并行开发,成为驱动协作与创新的核心支柱。
|
8天前
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
|
2月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
2月前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
2月前
|
存储 Java 开发者
浅析JVM方法解析、创建和链接
上一篇文章《你知道Java类是如何被加载的吗?》分析了HotSpot是如何加载Java类的,本文再来分析下Hotspot又是如何解析、创建和链接类方法的。

推荐镜像

更多