springMVC基本知识总结

1:MVC模型(Model-View-Controller)
    是一种架构型的模式,本身不引入新功能,只是帮助我们将开发的代码结构,组织的更加合理。

    Model(模型)
        应用程序中用于处理应用程序数据逻辑的部分,负责对数据库的存取数据。
    
    View(视图)
        负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。

    Controller(控制器)
        接收用户请求,委托给模型进行处理,处理完毕后把返回的模型数据交给给视图。也就是说控制器在中间起到一个调度的作

2:SpringMVC框架的核心组件以及流程
        1.DispatcherServlet: 前端控制器,用来过滤客户端发送过来,想要进行逻辑处理的请求。

        2.Controller/Headler: 控制器/处理器。开发人员自定义,用来处理用户请求的,并且处理完成之后返回给用户指定视图的对象。

        3.HandlerMapping: 处理器映射器。DispatcherServlet接收到客户端请求的URL之后,根据一定的匹配规则,再把请求转发给对应的Handler,这个匹配规则由HandlerMapping决定。
        
        4.HandlerAdaptor:处理器适配器。处理器适配器用来适配每一个要执行的Handler对象。通过HandlerAdapter可以支持任意的类作为处理器
        
        5.ViewResolver:视图解析。Handler返回的是逻辑视图名,需要有一个解析器能够将逻辑视图名转换成实际的物理视图。而且Spring的可扩展性决定了视图可以由很多种,所以需要不同的视图解析器,解析不同的视图。但是一般由jsp充当视图的情况居多

3:获取参数请求

      A: 无注解获取参数:参数名可以为空,但是参数名必须和HTTP请求中的参数保持一致。

      B: @RequestParam 获取参数 来确定前后端参数的映射关系

      C: 通过URL传递参数:通过处理器映射可以定位参数的位置和名称,@PathVariable可以通过名称来获取参数

4:数据的验证机制

       A: springMVC 支持JSR-303注解验证的方式

       B: 一般springBoot 会引入 Validate在前端验证

5:拦截器

DispatcherServlet根据 HandlerMapping找到对应的处理器。返回一个对象,包含处理器和拦截器。拦截器对处理器的功能拦截来增强处理器的功能。

开发拦截器:实现HandlerInterceptor (ɪntə'septə) 重写里面的三个方法

a: 处理器执行前方法 preHandle

b: 处理器执行后方法 postHandle

c: 处理器完成后方法 afterCompletion

实例: 通过拦截器获取项目的相对访问路劲

public class CommonInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        String path = httpServletRequest.getContextPath();
        String scheme = httpServletRequest.getScheme();
        String serverName = httpServletRequest.getServerName();
        int port = httpServletRequest.getServerPort();
        String basePath = scheme + "://" + serverName + ":" + port + path;
        httpServletRequest.setAttribute("basePath", basePath);
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {

    }

}

注册拦截器:这个拦截器Spring MVC 不会发现他需要注册才能拦截处理器,需要在配置文件中实现WebMvcConfigurer接口,最后覆盖器addInerceptors 进行注册拦截。

@Configuration
public class CommonInterceptorConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CommonInterceptor()).addPathPatterns("/**");
    }
}

6:springmvc重定向

Redirect 就是通过各种方法将请求重新定义其他位置。

 

猜你喜欢

转载自blog.csdn.net/huyunqiang111/article/details/88648227