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


相关文章
|
27天前
|
XML 存储 Java
Spring重要类解析
Spring重要类解析
20 0
|
30天前
|
机器学习/深度学习 存储 PyTorch
Pytorch中in-place操作相关错误解析及detach()方法说明
Pytorch中in-place操作相关错误解析及detach()方法说明
41 0
|
1月前
|
存储 开发框架 开发者
QT C++焦点事件:多角度解析实用技巧与方法
QT C++焦点事件:多角度解析实用技巧与方法
146 0
|
1月前
|
敏捷开发 开发框架 数据可视化
|
1月前
|
C语言
【C语言】大小写字母的相互转化:多种方法解析及原理说明
【C语言】大小写字母的相互转化:多种方法解析及原理说明
106 0
|
26天前
|
安全 Java 数据安全/隐私保护
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
57 1
|
1天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
|
2天前
并发编程之Callable方法的详细解析(带小案例)
并发编程之Callable方法的详细解析(带小案例)
10 0
|
11天前
|
XML Java 数据格式
Bean工厂探秘:解析Spring底层工厂体系BeanFactory的神奇之道
Bean工厂探秘:解析Spring底层工厂体系BeanFactory的神奇之道
19 0
Bean工厂探秘:解析Spring底层工厂体系BeanFactory的神奇之道
|
11天前
|
XML Java 数据格式
从入门到精通:Spring基础注解的全面解析
从入门到精通:Spring基础注解的全面解析
28 2
从入门到精通:Spring基础注解的全面解析

推荐镜像

更多